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

Oracle Dummy 實例完整恢復實戰:控制檔、資料檔、Redo 全遺失情境

     編輯:Oracle 教學

Oracle Dummy 實例完整恢復實戰:控制檔、資料檔、Redo 全遺失情境

當資料庫所有檔案(資料檔、線上 Redo、控制檔、參數檔)全遺失,僅剩 RMAN 備份集時,可利用 Dummy 實例(啞實例) 從零重建。本文記錄完整實驗流程:備份 → 模擬全毀 → Dummy 實例還原 SPFILE/Controlfile → 恢復資料庫 → RESETLOGS 開啟。

環境與備份

RMAN> BACKUP DATABASE;
-- 產生資料檔備份集 + 控制檔/SPFILE 自動備份集
-- 記錄備份集完整路徑,後續還原需用到

模擬災難:刪除所有檔案

cd /u01/app/oracle/oradata/test
rm ./*   # 刪除 controlfile、redo、datafile、tempfile 全部

此時資料庫例項進程仍在記憶體中,但任何 SQL 查詢報 ORA-01012: not logged on。

關閉殘留例項

SQL> SHUTDOWN ABORT;

階段一:Dummy 實例還原 SPFILE

export ORACLE_SID=dummy
rman target /
RMAN> STARTUP NOMOUNT;
-- 因無參數檔報錯,RMAN 自動啟動無參數檔例項

RMAN> RESTORE SPFILE TO '/u01/app/oracle/product/11.2.0.1/db_1/dbs/spfiletest.ora'
     FROM '/path/to/autobackup_controlfile_spfile.bkp';
RMAN> SHUTDOWN IMMEDIATE;

階段二:正式 SID 還原控制檔

export ORACLE_SID=test
rman target /
RMAN> STARTUP NOMOUNT;  -- 讀取刚才恢復的 SPFILE

RMAN> RESTORE CONTROLFILE FROM '/path/to/autobackup_controlfile_spfile.bkp';
RMAN> ALTER DATABASE MOUNT;

階段三:還原與恢復資料庫

RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
-- 若缺線上 Redo 導致 RECOVER 失敗(ORA-19625/ORA-27037),直接:
RMAN> ALTER DATABASE OPEN RESETLOGS;

關鍵點:因線上 Redo 已遺失,無法做完全恢復,RESETLOGS 開啟屬於不完全恢復,會重置 Redo 線上日誌序號。

OCP 官方標準恢復腳本(可直接納入災難演練文件)

RUN {
  STARTUP NOMOUNT PFILE='dummy.pfile';  -- 1. 僅含 DB_NAME 的啞參數檔啟動
  SET DBID=2176055307;                  -- 2. 指定目標資料庫 DBID
  RESTORE SPFILE FROM AUTOBACKUP;       -- 3. 從自動備份還原 SPFILE
  SHUTDOWN ABORT;                       -- 4. 關閉啞實例
  STARTUP NOMOUNT;                      -- 5. 以還原的 SPFILE 啟動
  RESTORE CONTROLFILE FROM AUTOBACKUP;  -- 6. 還原控制檔
  ALTER DATABASE MOUNT;                 -- 7. 掛載
  RESTORE DATABASE;                     -- 8. 還原所有資料檔
  RECOVER DATABASE;                     -- 9. 恢復(應用增量/歸檔/線上 Redo)
  ALTER DATABASE OPEN RESETLOGS;        -- 10. 開啟並重置 Redo(還原控制檔後必須)
}

關鍵參數檔 dummy.pfile 範例

*.db_name='TEST'

啟用自動備份的優勢

若已執行 CONFIGURE CONTROLFILE AUTOBACKUP ON;,步驟 3/6 可直接用 FROM AUTOBACKUP 無需指定備份集路徑,但仍需先 SET DBID。

實戰檢核清單

  1. 確認備份策略包含 CONFIGURE CONTROLFILE AUTOBACKUP ON
  2. 異地備份需包含:資料檔備份集、控制檔/SPFILE 自動備份、參數檔副本
  3. 定期演練:每季在測試環境執行上述完整恢復流程
  4. 記錄每次恢復耗時、遇到錯誤及解決方式,持續優化 RTO

掌握 Dummy 實例恢復流程,是 DBA 從「會備份」進階到「敢恢復」的關鍵門檻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved