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

作業系統損壞後 Oracle 10g/11g/19c 完整災難恢復實戰:Rootvg 損壞、SPFILE 遺失、控制檔/Redo 重建全紀錄

     編輯:Oracle 資料庫基礎

災難場景定義

  • Rootvg (OS 磁碟) 損壞,需重裝 OS
  • Oracle Home、資料檔、控制檔、Redo Log 分離儲存於獨立磁碟/磁碟組 (存活)
  • 備份:最新 SPFILE 檔案備份、控制檔追蹤備份、RMAN 備份 (最佳)

恢復前提檢查清單

分階段恢復流程

Phase 1:OS 重裝與 Oracle 軟體安裝

  1. 重裝 OS、套用相同核心參數、建立 oracle 用戶/群組、目錄結構
  2. 安裝 Oracle 軟體 (僅軟體,不建資料庫):runInstaller -silent ...
  3. 套用相同 PSU/CPU 补丁

Phase 2:SPFILE 恢復與 NOMOUNT

  1. 還原 SPFILE 至 $ORACLE_HOME/dbs/spfile.ora
  2. 啟動 NOMOUNT:
    sqlplus / as sysdba
    STARTUP NOMOUNT;
  3. 若報錯 ORA-00444: MMAN failed / ORA-07446: bad value:
    • 建立 PFILE:CREATE PFILE FROM SPFILE;
    • 檢查 PFILE 中目錄參數:background_dump_dest, core_dump_dest, user_dump_dest, audit_file_dest, log_archive_dest_1
    • 逐一建立缺失目錄:mkdir -p /path/from/pfile
    • 重試 STARTUP NOMOUNT

Phase 3:控制檔與密碼檔

  1. 若控制檔存在:ALTER DATABASE MOUNT;
  2. 若控制檔遺失但有追蹤備份:
    • 編輯追蹤檔中的 CREATE CONTROLFILE 腳本 (RESETLOGS/NORESETLOGS)
    • 執行腳本建立控制檔
  3. 密碼檔遺失:orapwd file=$ORACLE_HOME/dbs/orapw password=sys_pass entries=10

Phase 4:OPEN 資料庫

  1. ALTER DATABASE OPEN;
  2. 若啟用 Flashback 且報 ORA-38760:
    ALTER DATABASE FLASHBACK OFF;
    ALTER DATABASE OPEN;
  3. 驗證:ARCHIVE LOG LIST;、SELECT status FROM v$instance;

關鍵決策點:RESETLOGS vs NORESETLOGS

項目必備條件
OS 版本/套件與原環境一致 (含核心參數、用戶/群組、目錄結構)
Oracle 軟體相同版本/PSU 重新安裝至相同路徑
資料檔完整、路徑不變、權限正確 (oracle:oinstall)
控制檔至少一份完整 (多路徑多工)
Redo Log所有線上 Redo Log 完整
SPFILE/PFILE檔案備份或可從 Alert Log 重建參數
密碼檔備份或重建
條件選項後果
所有線上 Redo Log 完整、無遺失、SCN 連續NORESETLOGS保留現有 Redo 序號、可繼續應用歸檔
Redo Log 遺失、損壞、或不確定RESETLOGS開新 Incarnation、需完整備份、舊歸檔無效

原則:能用 NORESETLOGS 盡量用;必須 RESETLOGS 時,立即執行完整備份。

RMAN 備份恢復 (最佳實踐)

# 目標端 (已安裝軟體、建立密碼檔、啟動 NOMOUNT)
rman target /
RESTORE CONTROLFILE FROM '/backup/controlfile.bkp';
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;  -- 或 NORESETLOGS 視情況

常見錯誤與對策

錯誤原因解決
ORA-01100: database already mounted重複 MOUNT檢查 SELECT status FROM v$instance;
ORA-01194: file 1 needs more recovery資料檔需更多 Redo提供歸檔、繼續 RECOVER
ORA-01547: RECOVER succeeded but OPEN RESETLOGS would get error資料檔不一致檢查所有資料檔 ONLINE、OFFLINE DROP 損壞檔
ORA-00205: control file error控制檔路徑/權限檢查 control_files 參數、檔案存在權限

恢復後驗證

  1. 應用連線測試
  2. 核心表筆數/檢查和對比
  3. DBMS_STATS.GATHER_SCHEMA_STATS 更新統計
  4. 啟用 Flashback/備份排程/監控
  5. 文件化恢復過程、更新 DRP 文件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved