Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Добрый день!
Подскажите пожалуйста как можно востановить данные, если выпадает ошибка (см. ниже)
и найдены строки (по данным из сообщений об ошибке) в другой базе где в аналогичном файле ошибки нет?
ORA-01578: ORACLE data block corrupted (file # 135, block # 281149)
ORA-01110: data file 135: '/dev/vx/rdsk/CRM/crm_li42.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
ORA-06512: at line 11
3 сен 08, 12:19    [6141351]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
шо за объект....Хорошо если индекс, а то
ORA-26040: Data block was loaded using the NOLOGGING option
приплывем ;)
3 сен 08, 12:26    [6141400]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Дело в том что есть копия БД, где можно найти строки при обращение к которым возникает ошибка!
Т.е. задача сводиться к тому чтобы из копии БД строки занести в оригинал!
3 сен 08, 12:38    [6141483]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
задача сводиться к тому, чтобы найти объект, которому принадлежит данный блок.
Если индекс, то дроп/криэйт ..
если таблица, то или блок рековер, или рестор из бекапа, или дропаете и пересоздаете из вашей копии
3 сен 08, 12:55    [6141599]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
а если таблица очень большая, а в порченном блоке находиться пара десятков строк
в этом случае как из копии взять строки (они найдены) и засунуть их в таблицу где они не работают?
3 сен 08, 12:59    [6141624]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
посмотри в сторону dbms_repair
3 сен 08, 13:01    [6141635]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
tornton
а если таблица очень большая, а в порченном блоке находиться пара десятков строк
в этом случае как из копии взять строки (они найдены) и засунуть их в таблицу где они не работают?

еще раз...вы уверены что битый блок принадлежит таблице ?
При фулскане выпадает эрор о битом блоке ?
3 сен 08, 13:13    [6141723]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1780
(file # 135, block # 281149)

По этим данным уже можно найти владельца блока.

Как-то так:
	select ds.*
	from dba_segments ds, sys.uet$ e
	where ds.header_file=e.segfile#
	and ds.header_block=e.segblock#
	and e.header_file= 135
	and  281149 between e.block# and e.block#+e.length-1;
3 сен 08, 13:21    [6141775]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1780
Точнее, так:

        SELECT tablespace_name, segment_type, owner, segment_name
          FROM dba_extents
         WHERE file_id = 135
           and 281149 between block_id AND block_id + blocks - 1;
3 сен 08, 13:27    [6141816]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Да это таблица!
Имеются строки которые нужно заменить в порченной таблице!
Но удалить порченные строки нельзя :(
Сейчас разбираюсь с пакетом dbms_repair
3 сен 08, 14:09    [6142073]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Теперь возник вопрос по DBMS_REPAIR :)
Кто знает подскажите!
При запуске DBMS_REPAIR.check_object можно указать два параметра
block_start,
block_end
Можно ли как то получить эти параметры
ORA-01578: ORACLE data block corrupted (file # 135, block # 281149)
ORA-01110: data file 135: '/dev/vx/rdsk/CWRM_F/cwrm_f_li42.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
ORA-06512: at line 11
3 сен 08, 14:42    [6142277]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Откуда все таки брать значения параметров
block_start,
block_end
в функции DBMS_REPAIR.check_objecе
3 сен 08, 15:50    [6142739]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
tornton
Откуда все таки брать значения параметров
block_start,
block_end
в функции DBMS_REPAIR.check_objecе

block_start	First block to process if specifying a block range. May be specified only if the object is a single table, partition, or subpartition.
block_end Last block to process if specifying a block range. May be specified only if the object is a single table, partition, or subpartition.
If only one of block_start or block_end is specified, then the other defaults to the first or last block in the file respectively.
3 сен 08, 15:53    [6142765]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
это я читал, подставляю о Oracle ругается неверно задан диапозон!
3 сен 08, 15:57    [6142787]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
к сожалению DBMS_REPAIR не позволил исправить ситуацию!
Единственное что удалось достичь использую DBMS_REPAIR - это то, что скрипт который падал на выборке из порченного блоко, теперь его пропускает!
Однако заменить порченные строки в таблице из рабочей копии всё равно не получается!
4 сен 08, 10:58    [6145276]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
tornton
к сожалению DBMS_REPAIR не позволил исправить ситуацию!
Единственное что удалось достичь использую DBMS_REPAIR - это то, что скрипт который падал на выборке из порченного блоко, теперь его пропускает!
Однако заменить порченные строки в таблице из рабочей копии всё равно не получается!

метод решения.
ну так в чом проблема то....
Скрипт проспускает битый блок... отлично.
Вытягиваете метаданные порченной, дабы не потрерять ключи и индексы. Создаете с другим именем
Insert AS select из порченной таблички в новую. Добавляете туда строки из "резервной"...
Грохаете старую. Переименовываете новую в старую
4 сен 08, 11:04    [6145315]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Втом то и вся проблема, таблица очень большая, и я ищу способ без создания промежуточной таблицы! К тому же порченные блоки разбросаны по многим диапазонам а исправить ситуацию нужно в некоторых!
4 сен 08, 11:26    [6145556]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
tornton
Втом то и вся проблема, таблица очень большая, и я ищу способ без создания промежуточной таблицы! К тому же порченные блоки разбросаны по многим диапазонам а исправить ситуацию нужно в некоторых!

что значит "исправить ситуацию нужно в некоторых" ..а остальные типа пофиг ?...
Да, кстати, а бекап то у вас есть ??...
4 сен 08, 11:44    [6145757]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Да, что в остальных пофиг - так как таблица содержит данный за длинный промежуток времени, а требуется за определенный небольшой временной отрезок!
Бэкап есть!
4 сен 08, 11:53    [6145854]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
tornton
Да, что в остальных пофиг - так как таблица содержит данный за длинный промежуток времени, а требуется за определенный небольшой временной отрезок!
Бэкап есть!

если 10-ка, почему не сделать блокрековер ?
4 сен 08, 11:56    [6145882]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Oracle 9 :(
4 сен 08, 12:06    [6145960]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
tornton
Oracle 9 :(

я бы пересоздал табличку
4 сен 08, 12:08    [6145981]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
vazz
Guest
tornton
Oracle 9 :(


В 9-ке тоже есть.
4 сен 08, 12:11    [6146011]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Есть-то он есть, только толку-то с него?
Данные загружены в NOLOGGING, накатывать неоткуда
5 сен 08, 02:26    [6149647]     Ответить | Цитировать Сообщить модератору
 Re: Востановление данных!  [new]
tornton
Member

Откуда:
Сообщений: 344
Извеняюсь за повторение на позволя еще раз обощить что имется и что пытаюсь сделать:
есть две БД - одинаковые!
Одна содержит таблицу с порченныи блоками (mark block software corrupt)
При помощи скриптов индетифицирую ROWID порченных строк.
Из не порченной копии по полученным ROWID получаю строки.
Вопрос:
Можно ли не пересоздавая таблицы (очень большая), а использую выцепленные строки восстановить порченные строки?
5 сен 08, 09:35    [6149936]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить