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

Откуда:
Сообщений: 188
Добрый день, уважаемые!

Возникла следующая проблема:
Перестала читаться таблица в базе
При любом к ней обращении возникает ошибка invalid rowid, а в некоторых условиях -
ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_3], [3], [0], [4], [], [], [], []

проверка датафайла dbv ничего не дает (все ок)
таблица без индексов, без секций, вобщем совершенно голая.

вопрос собственно состоит в том чтобы каким-то образом восстановить эти данные, возможно даже с потерей части строк.

Я поэтому поводу сообразил нечто вроде
    OPEN c FOR 'select 
                    dbms_rowid.rowid_create(1, ' || objid || ', t.relative_fno, t.block_id, 0) rs,
                    dbms_rowid.rowid_create(1, ' || objid || ', t.relative_fno, t.block_id, 30000) re
                    from dba_extents t where segment_name=''STG_WKT_CDR_BAD_11052008'' order by file_id,block_id';

и далее по rs \ re - сканирование битой таблицы по ROWID RANGE SCAN
          
open c for 'select /*+ noparallel(t) dynamic_sampling(0) */ t.* from STG_WKT_CDR_BAD_11052008 t where rowid between :1 and :2' using  te1(i).rs,te1(i).re;
          FETCH c BULK COLLECT INTO ret;
с обработкой ошибок

EXCEPTION WHEN no_more_rows_needed OR ora600 THEN NULL;

Здесь возникает вопрос охватит ли такой мой запрос всю битую таблицу и правильны ли параметры в
rowid_create (почемуто если там поставить к примеру не 30000 а 64535 то данные не считываются вообще).


Oracle 10.2.0.3 (Solaris)


PS Обращение к металинку ничего не дало т.к. весь workaround там состоит в описании как НЕ НАДО делать чтобы не произошло такой ошибки (опятьже ничего из перечисленного там у меня не происходило - там упоминается к примеру multitable parallel dml - его не было)
PPS есть идея что в 10.2.0.4 это исправлено но некоторые товарищи утверждают что под соляру нет этой версии.+ это не решает проблемы восстановления данных.
20 май 08, 16:54    [5690070]     Ответить | Цитировать Сообщить модератору
 Re: INVALID Rowid  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1780
Насколько я помню, там еще предлагають кеш сбросить.
20 май 08, 16:59    [5690126]     Ответить | Цитировать Сообщить модератору
 Re: INVALID Rowid  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1780
Да, и вроде патч есть для этой ошибки под Вашу версию/платформу.
20 май 08, 17:00    [5690135]     Ответить | Цитировать Сообщить модератору
 Re: INVALID Rowid  [new]
pretoreani
Member

Откуда:
Сообщений: 188
jan2ary
Насколько я помню, там еще предлагають кеш сбросить.


не работает.
20 май 08, 17:02    [5690147]     Ответить | Цитировать Сообщить модератору
 Re: INVALID Rowid  [new]
pretoreani
Member

Откуда:
Сообщений: 188
jan2ary
Да, и вроде патч есть для этой ошибки под Вашу версию/платформу.


нет, патч не нашли :(
20 май 08, 17:03    [5690155]     Ответить | Цитировать Сообщить модератору
 Re: INVALID Rowid  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1780
Есть еще нота, которая рассказывает, как выбрать данные, обходя инвалидный rowid. Да и на форуме несколько раз было.
Вкратце - сканировать таблицу с трассировкой, в сырой трассе найти последний успешно вычитанный блок. Затем "обсканировать" этот участок create table as select. Как-то так.
20 май 08, 17:08    [5690209]     Ответить | Цитировать Сообщить модератору
 Re: INVALID Rowid  [new]
pretoreani
Member

Откуда:
Сообщений: 188
jan2ary
Затем "обсканировать" этот участок create table as select.


Не совсем понял что это означает - как это сделать?
Или может есть ссылки?
20 май 08, 17:09    [5690226]     Ответить | Цитировать Сообщить модератору
 Re: INVALID Rowid  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1780
Note:61685.1
20 май 08, 17:15    [5690294]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить