萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> 資料庫綜合

Oracle 災難恢復完整指南:備份類型、恢復原理、五大故障類型與分級恢復策略

資料庫災難恢復 (DR) 是 DBA 最高階的核心能力。本文系統闡述 Oracle 備份分類、Redo Log 核心角色、完全/不完全恢復原理、三種運行狀態、五大故障分類與針對控制檔、Redo Log、資料檔 (含 System/Undo/一般) 的分級恢復操作手冊。

一、三種資料庫運行狀態

狀態活動可用性
NOMOUNT讀取 SPFILE/PFILE → 啟動 Instance (SGA、背景進程)僅 DBA 維護
MOUNT讀取 Control File → 掛載資料庫結構DBA 維護、備份控制檔、恢復控制檔
OPEN檢查 SCN 一致性 → 前滾 Redo → 回滾未提交交易 → 開放用戶存取正常業務服務

二、三大備份類型

  • 冷備份 (Cold/Offline Backup):SHUTDOWN NORMAL/IMMEDIATE → OS 複製所有 Data/Control/Redo/Parameter Files。優點:一致性最佳、無需恢復直接掛載。缺點:需停機。
  • 熱備份 (Hot/Online Backup):資料庫 必須啟用 ARCHIVELOG 模式。Tablespace 進入 BEGIN BACKUP 模式 → OS 複製 Data Files → END BACKUP。配合 Archived Redo Logs 實現時間點恢復 (PITR)。
  • 邏輯備份 (Export/Data Pump):EXPDP/IMPDP 匯出/匯入物件/Schema/全庫。支援完全/累加/增量。注意:非 RESTRICTED 模式下一致性無保證,適合輔助備份、跨版本/平台遷移。

三、恢復核心原理:前滾與回滾

恢復 = Roll Forward (Cache Recovery) + Roll Back (Transaction Recovery)

  1. 前滾:將 Redo Log (Online + Archived) 中 所有 變更 (Committed + Uncommitted) 重做到 Data Files,將資料庫推進到故障時刻 (或指定 SCN/時間)
  2. 回滾:利用 Undo Segments 撤銷 未提交 交易的變更,確保交易一致性 (ACID)

鐵律:只能在「較舊備份 + Redo」上前滾,絕不能 在較新資料上反向回滾到過去時間點。

四、五大故障分類與自動/手動恢復

故障類型特徵恢復責任
SQL 陳述式失敗邏輯錯誤、權限不足、空間不足Oracle 自動回滾該陳述式,用戶重試
用戶程序失敗Session 異常中斷 (網路斷線、Client Crash)PMON 自動清理鎖、回滾未提交交易、釋放資源
執行個體失敗Instance Crash (SHUTDOWN ABORT、OS Crash、電源中斷)下次啟動時 SMON 自動 Instance Recovery (前滾+回滾)
用戶操作失誤誤 DROP TABLE、誤 DELETE/UPDATE、誤 TRUNCATE需人工介入:Flashback Table/Drop、PITR、TSPITR、LogMiner 產生反向 SQL
媒體故障磁碟損壞、檔案遺失/損毀 (Control File、Redo Log、Data File)需人工介入:本文重點討論對象

五、媒體故障分級恢復操作手冊

1. 控制檔 (Control File) 損壞

  • 部分損壞 (多路徑鏡像):SHUTDOWN → 註釋損壞路徑 → STARTUP → 重建鏡像副本
  • 全部損壞:
    1. 有 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 腳本 → NOMOUNT → 執行腳本重建 → RECOVER DATABASE USING BACKUP CONTROLFILE → ALTER DATABASE OPEN RESETLOGS
    2. 無腳本 → NOMOUNT → 手工 CREATE CONTROLFILE (需列出所有 Data/Redo 路徑、MAXLOGFILES/MAXDATAFILES/MAXINSTANCES) → 同上
    3. 有二進位備份 (BACKUP CONTROLFILE TO 'path') → 覆蓋 → RECOVER DATABASE USING BACKUP CONTROLFILE → OPEN RESETLOGS

2. 線上 Redo Log 損壞

場景處理步驟
非當前群組、有多 MemberSHUTDOWN → OS 複製正常 Member 覆蓋損壞檔 → 若路徑不可用 ALTER DATABASE RENAME FILE → STARTUP → 立即冷備份
非當前群組、單 MemberSTARTUP MOUNT → ALTER DATABASE NOARCHIVELOG → ADD LOGFILE MEMBER → DROP LOGFILE MEMBER (損壞者) → ALTER DATABASE ARCHIVELOG → 開啟 → 冷備份
當前群組、無鏡像、全損資料損失不可避免:SHUTDOWN ABORT → 從最近冷備份還原所有 Data Files → MOUNT → 修正 Redo 路徑 → RECOVER DATABASE UNTIL CANCEL (應用至最後可用 Archived Log) → CANCEL → ALTER DATABASE OPEN RESETLOGS → 立即冷備份

3. 資料檔損壞

場景恢復策略
System Tablespace 資料檔必須 MOUNT 狀態:還原檔案 → RECOVER DATABASE/DATAFILE → OPEN。System 檔案離線資料庫無法 OPEN
非 System、無 Undo Segment選項 A:MOUNT → RECOVER DATAFILE → OPEN
選項 B (業務優先):MOUNT → ALTER DATABASE DATAFILE ... OFFLINE → OPEN (業務存取其餘資料) → RECOVER DATAFILE → ONLINE
非 System、含 Undo Segment選項 A:同上 (MOUNT 完整恢復)
選項 B (OPEN 狀態恢復):
  1. 建立臨時 Undo:CREATE ROLLBACK SEGMENT temp_rbs TABLESPACE system; ALTER ROLLBACK SEGMENT temp_rbs ONLINE;
  2. OFFLINE 損壞檔案/表空間 → OPEN
  3. RECOVER 受損檔案
  4. ONLINE 檔案/表空間
  5. ALTER ROLLBACK SEGMENT temp_rbs OFFLINE; DROP ROLLBACK SEGMENT temp_rbs;
  6. 關鍵:手工 ALTER ROLLBACK SEGMENT rbs_name ONLINE; 恢復所有原有 Undo Segment

4. 臨時表空間資料檔遺失

不影響資料庫開啟 (無 Checkpoint): ALTER DATABASE TEMPFILE 'path' DROP; → ALTER TABLESPACE temp ADD TEMPFILE 'path' SIZE 100M;

六、災難恢復演練與自動化建議

  1. 季度演練:模擬各類媒體故障,驗證 RTO/RPO、操作手冊有效性
  2. RMAN 自動化:CONFIGURE CONTROLFILE AUTOBACKUP ON、BACKUP DATABASE PLUS ARCHIVELOG、BACKUP VALIDATE 定期驗證備份可用性
  3. Flashback 技術:啟用 FLASHBACK DATABASE、FLASHBACK TABLE、FLASHBACK DROP,秒級修復人為誤操作
  4. Data Guard 同步驗證:V$DATAGUARD_STATS 監控 Apply Lag、Transport Lag
  5. 文件化與版控:所有恢復腳本、參數檔、網路拓撲納入 Git 版控,離職交接零風險

災難恢復的本質是「平時流汗,戰時流血」。建立標準化操作手冊、自動化備份驗證、定期實戰演練,才是確保資料資產安全的唯一鋼鐵防線。

copyright © 萬盛學電腦網 all rights reserved