成因:硬體問題、實體層級壞塊、巨型檔案處理(ORA-7371)。
確認與恢復步驟:
ALERT.LOG 中其他 ORA-1115:
V$DATAFILE 找屬該控制器檔案,進入步驟 2。SELECT SEGMENT_NAME, SEGMENT_TYPE FROM DBA_EXTENTS
WHERE FILE_ID=<檔案號> AND <塊號> BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS-1;
持續指向某表/索引 → 重建它們。ALTER DATABASE DATAFILE '檔名' OFFLINE。STARTUP MOUNTALTER DATABASE RENAME FILE '舊路徑' TO '新路徑'ALTER DATABASE OPENRECOVER DATAFILE 檔名;ALTER DATABASE DATAFILE '檔名' ONLINEINIT.ORA 加入 EVENT = "10015 TRACE NAME CONTEXT FOREVER, LEVEL 10",產生追蹤檔含交易與回滾資訊ERROR RECOVERY TX(...,...) OBJECT #,對應 SYS.DBA_OBJECTS.OBJECT_IDSELECT OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS FROM DBA_OBJECTS WHERE OBJECT_ID=...DB_BLOCK_CHECKING:塊變更時邏輯校驗,防止 10210/10211 錯誤DB_BLOCK_CHECKSUM:計算校驗和由 DBMSRPR.SQL 與 PRVTREPR.PLB 產生,在特定表記錄壞塊資訊。
DBMS_REPAIR.ADMIN_TABLES:建立/刪除儲存壞塊的表。TABLE_TYPE:REPAIR_TABLE(表)、ORPHAN_TABLE(索引);ACTION:CREATE_ACTION、PURGE_ACTION、DROP_ACTION。DBMS_REPAIR.CHECK_OBJECT:檢查表/索引/分區塊損壞。OBJECT_TYPE:TABLE_OBJECT、INDEX_OBJECT、REPAIR_TABLE_NAME。SELECT OBJECT_NAME, RELATIVE_FILE_NO, BLOCK_ID, MARKED_CORRUPT, CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION FROM REPAIR_TABLEDBMS_REPAIR.FIX_CORRUPT_BLOCKSDBMS_REPAIR.SKIP_CORRUPT_BLOCKSDBMS_REPAIR.REBUILD_FREELISTSDBMS_REPAIR.DUMP_ORPHAN_KEYS → 查詢 ORPHAN_KEY_TABLE → 重建索引限制:無法分析 Index-organized tables 與 LOB indexes;DUMP_ORPHAN_KEYS 不支援 bitmap 與 function-based indexes。
UTLVALID.SQL 建立 INVALID_ROWS 表;ANALYZE TABLE VALIDATE STRUCTURE CASCADE 同時驗證表與索引。
影響資料庫極小,可用於備份檔案還原前驗證完整性、定位壞塊:
DBV FILE=/OPT/ORACLE/DB02/ORADATA/DATA01.DBF START=1 END=500 LOGFILE=DBV.LOG