環境:Oracle 11.2.0.1 Linux,非歸檔模式。模擬:Tablespace OFFLINE → 切換 Redo → 刪除歸檔 → ONLINE 觸發 ORA-01113。
ORA-01113 因資料檔 Checkpoint SCN 與控制檔不一致。BBED 可直接修改資料檔第 1 區塊關鍵欄位,使其與 System 表空間檔頭一致,再重建控制檔完成恢復。
| 欄位 | 位移 | 說明 |
|---|---|---|
| kscnbas | 484 | Checkpoint SCN 基值 |
| kcvcptim | 492 | Checkpoint 時間 |
| kcvfhcpc | 140 | Checkpoint 發生計數 |
| kcvfhccc | 148 | 未知,值略小於 kcvfhcpc |
BBED> INFO 確認檔號;以 System 表空間檔頭為基準讀取四欄位值。BBED> SET DBA 7,1 切換至故障檔 (File 7) 第 1 區塊。MODIFY /x <hex> 寫入四欄位值 (SCN、時間、CPC、CCC)。SUM APPLY 重新計算檢查和。SQL> SELECT * FROM V$RECOVER_FILE; -- CHANGE# 已同步 SQL> ALTER DATABASE DATAFILE 7 ONLINE; -- 仍報 ORA-01113,控制檔未更新 SQL> RECOVER DATAFILE 7; -- 報 ORA-01207 控制檔較舊
需重建控制檔:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE; SHUTDOWN IMMEDIATE; STARTUP NOMOUNT; -- 執行追蹤檔中 CREATE CONTROLFILE 陳述式 (NORESETLOGS ARCHIVELOG) ALTER DATABASE OPEN; -- 仍需 RECOVER DATABASE RECOVER DATABASE; ALTER DATABASE OPEN;