Еще раз об ошибке ORA-01578

dbstalker, 31 августа

На этом блоге уже писалось об ORA-01578, но в статье есть несколько полезных моментов.

Oracle ORA-01578: "Oracle data block corrupted" (Блок данных Oracle разрушен) - внутренняя структура блока базы данных перестала быть правильной. Для сбойного блока сообщение об ошибке имеет номер файла и номер блока.

Лечение проблемы начинается с нахождения объекта , содержащего испорченный блок:

SELECT owner, segment_name, segment_type 
FROM dba_extents 
WHERE file_id = <номер_файла> 
AND <номер_блока> 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;

где < номер_файла> и < номер_блока> - числа из сообщения об ошибке.

В зависимости от типа объекта, восстановление является

  • Простым (для индексов и временных сегментов),
  • трудным (для таблиц),
  • очень трудным (для активных сегментов отката и частей словаря данных).

В Oracle 9i Enterprise Edition есть новая команда RMAN: BLOCKRECOVER. С помощью этой команды объект, содержащий испорченный блок не удаляется. а выполняется восстановление самого сбойного блока.

Делается это так:

  • Регистрируемся в RMAN
  • Соединяемся с базой данных
  • Выполняем следующую команду: BLOCKRECOVER DATAFILE <номер_файла> BLOCK <номер_блока>.

Когда RMAN выполняет резервное копирование , происходит обновление представления V$DATABASE_BLOCK_CORRUPTION – список испорченных блоков, подлежащих дальнейшему восстановлению. Для их восстановления в RMAN нужно выполнить следующие команды:

BACKUP VALIDATE DATABASE; 
BLOCKRECOVER CORRUPTION LIST; 

Все вышеизложенное годиться для того случая, когда испорченных блоков не очем много. Иначе придется идти обычным путем.

Не забудьте проверить все на тестовой базе.

 

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

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



 

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

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

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

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


 
 

Бизнес форум