首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

無歸檔模式下使用 BBED 修復 ORA-01113:檔頭 SCN/Checkpoint 手工對齊實戰

     編輯:Oracle 教學

BBED 手工修改資料檔頭,繞過歸檔缺失恢復 ORA-01113

環境:Oracle 11.2.0.1 Linux,非歸檔模式。模擬:Tablespace OFFLINE → 切換 Redo → 刪除歸檔 → ONLINE 觸發 ORA-01113。

核心原理

ORA-01113 因資料檔 Checkpoint SCN 與控制檔不一致。BBED 可直接修改資料檔第 1 區塊關鍵欄位,使其與 System 表空間檔頭一致,再重建控制檔完成恢復。

關鍵欄位位移 (Block 1)

欄位位移說明
kscnbas484Checkpoint SCN 基值
kcvcptim492Checkpoint 時間
kcvfhcpc140Checkpoint 發生計數
kcvfhccc148未知,值略小於 kcvfhcpc

操作步驟

  1. BBED> INFO 確認檔號;以 System 表空間檔頭為基準讀取四欄位值。
  2. BBED> SET DBA 7,1 切換至故障檔 (File 7) 第 1 區塊。
  3. 依序 MODIFY /x <hex> 寫入四欄位值 (SCN、時間、CPC、CCC)。
  4. 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;

風險提示

  • BBED 屬非支援工具,僅限測試環境或極端災難恢復,生產環境嚴禁直接操作。
  • 修改檔頭不修正控制檔會導致 ORA-01207,必須重建控制檔。
  • 若 System 表空間亦損壞,此法失效,需完整備份恢復。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved