Восстановить повреждённые блоки онлайн (block media recovery, RECOVER CORRUPTION LIST)
OracleRMANКоманда
# 1) Detect corrupt blocks (populates v$database_block_corruption):
VALIDATE CHECK LOGICAL DATABASE;
# 2) Repair all blocks in the list (the datafile stays online):
RECOVER CORRUPTION LIST;
# or the file/block from the error message (ORA-01578: file# 7, block# 233):
RECOVER DATAFILE 7 BLOCK 233;
RECOVER DATAFILE 7 BLOCK 233 DATAFILE 9 BLOCK 1001;
# 3) Verify:
VALIDATE DATAFILE 7;
SELECT * FROM v$database_block_corruption;Что делает
Восстанавливает только повреждённые блоки из бэкапа (или из flashback logs / standby Active Data Guard) и накатывает их redo; datafile и табличное пространство остаются онлайн, а приложение получает ошибки только при обращении к этим блокам.
Когда использовать
Когда появляется единичное повреждение блоков с ORA-01578 / ORA-01110; когда восстановление всего datafile привело бы к ненужному простою.
Внимание
Требуется чистый бэкап, содержащий блок, и все archivelog с того момента до текущего; повреждение, вызванное операцией NOLOGGING (ORA-26040), так исправить нельзя — объект нужно пересоздать. Это возможность Enterprise Edition. Если не найти источник повреждения (хранилище, HBA, прошивка), оно повторится.
Связанные материалы
- Создать каталог восстановления RMAN и зарегистрировать базу данных
- Создать физический standby из активной базы данных через RMAN DUPLICATE
- Проверить и очистить записи о бэкапах RMAN (CROSSCHECK, EXPIRED, OBSOLETE)
- Проверить базу данных и бэкапы на повреждения (VALIDATE)
- Посмотреть, какие бэкапы использует восстановление, и проверить их (PREVIEW / VALIDATE)
- Вернуть табличное пространство к моменту в прошлом (TSPITR)