DBAtlas · Атлас эксплуатации баз данных

Восстановить повреждённые блоки онлайн (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, прошивка), оно повторится.

Открыть в DBAtlas →

Связанные материалы