recyclebin или история о том как мы боролись с битым блоком

dbstalker, 22 июля

Появился у меня в базе один битый блок: ORA-01578: Oracle data block corrupted (file ..., block ...). По указанному номеру файла и номеру блока запросом

SELECT owner, segment_name, segment_type 
FROM dba_extents 
WHERE file_id = <номер_файла> 
AND <номер_блока> BETWEEN block_id AND block_id + blocks - 1;

Был найден поврежденный сегмент – таблица. Оказалось таблицу можно удалить. Ну вот и удалили ее командой

Drop table таблица;

Как и следовало ожидать представление v$database_block_corruption все еще содержит информацию о поврежденном блоке. Нужно чем-то переписать блок. Создаем относительно большую таблицу в надежде, что блок будет переписан. Но не тут то было. Таблица никак не хочет попадать в битый блок. В чем дело? Предыдущий запрос никакого сегмента в битом блоке не находит. Тогда взяли другой:

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;

Оказалось, там продолжала находиться удаленная таблица! Мы совершенно забыли, что после удаления таблица попадает в корзину! Вернее она остается на прежнем месте и ее индексы тоже, только оракл переименовывает!Выполнили:

PURGE dba_recyclebin;

Новой таблицей переписали битый блок.

Решили, что корзина нам только портит жизнь, поэтому поменяли параметр:

ALTER SYSTEM SET "recyclebin"=OFF SCOPE = BOTH;

И зажили счастливо.

2 комментария

Прокоментировать

lynx™
22 июля 2010 г. в 12:30

drop table tab1 purge;

dbstalker
22 июля 2010 г. в 14:21

yes! только всега почему-то руки пишут drop table tab1; :(

 

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

Я не спамер: введите суму 8+3



 

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

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

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

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


 
 

Бизнес форум