DBAtlas · 数据库运维图谱

在线修复损坏块(块介质恢复,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 日志 / Active Data Guard 备库)还原损坏的块并用 redo 前滚;数据文件和表空间保持在线,应用只有在访问这些块时才会报错。

适用场景

出现带 ORA-01578 / ORA-01110 的孤立块损坏时;还原整个数据文件会造成不必要停机时。

注意

需要一个包含该块的干净备份以及从那时到现在的所有归档日志;NOLOGGING 操作导致的损坏(ORA-26040)无法用这种方式修复,必须重建对象。这是 Enterprise Edition 功能。如果不找出损坏源头(存储、HBA、固件),问题会再次出现。

在 DBAtlas 中打开 →

相关内容