EXP test/test FILE=t.dmp TABLES=t → ORA-01578: ORACLE data block corrupted (file# 4, block# 35)。SELECT tablespace_name, segment_type, owner, segment_name
FROM dba_extents
WHERE file_id = 4
AND 35 BETWEEN block_id AND block_id + blocks - 1;
ALTER INDEX idx REBUILD ONLINE 修復。ALTER SESSION SET EVENTS '10231 TRACE NAME CONTEXT FOREVER, LEVEL 10';EXP ... TABLES=damaged_table。DROP TABLE damaged_table;。CREATE TABLE ... AS SELECT * FROM ... WHERE 1=0 或導入結構)。IMP ... TABLES=damaged_table。代價:壞塊所在行數據永久丟失,其餘行挽回。
RMAN> BACKUP VALIDATE DATAFILE 2;SELECT * FROM v$database_block_corruption WHERE file# = 2;
顯示 CORRUPTION_CHANGE#、BLOCK# 等。RMAN> BLOCKRECOVER DATAFILE 2 BLOCK 14 FROM BACKUPSET;
自動從備份集讀取該塊映像應用 Redo 至當前 SCN。前提:
ARCHIVELOG 模式。DROP TABLESPACE INCLUDING CONTENTS 等)。| 維度 | 事件 10231 跳過導出 | RMAN BLOCKRECOVER |
|---|---|---|
| 備份需求 | 無 | 需完整 RMAN 備份 + 歸檔日志 |
| 數據丟失 | 壞塊行丟失 | 零丟失 |
| 業務影響 | 需停機導出/導入 | Online 可執行(部分版本) |
| 適用版本 | 所有版本 | 8i+ |