ORA-01578: ORACLE data block corrupted (file # string, block # string)

dbstalker, 02 апреля

На сервере oracle 9i версии 9.2.0.6.0 получили в алерте такое сообщение. Нам повезло- отделались малой кровью. Выполнили запрос:

SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME

FROM DBA_EXTENTS 

WHERE FILE_ID = [номер file#] AND [номер block#] BETWEEN BLOCK_ID

AND BLOCK_ID+BLOCKS -1;

или

select
ds.owner, ds.segment_name, ds.partition_name, ds.segment_type,
ds.tablespace_name,
e.ktfbueextno, f.file#, e.ktfbuebno,
e.ktfbueblks * ds.blocksize, e.ktfbueblks, e.ktfbuefno
from sys.sys_dba_segs ds, sys.x$ktfbue e, sys.file$ f
where e.ktfbuesegfno = ds.relative_fno
and e.ktfbuesegbno = ds.header_block
and e.ktfbuesegtsn = ds.tablespace_id
and e.ktfbuesegtsn = f.ts#
and e.ktfbuefno = f.relfile#
and f.file#=номер файла
and номер блока between e.ktfbuebno and e.ktfbuebno + e.ktfbueblks - 1;

Пострадал индекс. Удалили его и создали заново. Все завершилось успешно.

Кстати, не обязательно индекс удалять. Достаточно его пересоздать (REBUILD), но перед созданием перевести его в UNUSABLE:

alter index my_index unusable;
alter index my_index rebuild tablespace ts_indx;

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

Перестройка индекса с опцией ONLINE также происходит при полном сканировании таблицы.

 

Новый комментарий

Я не спамер: введите суму 7+6



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Требуется бухгалтер
21 августа, 1 ответа