Oracle 恢復分為實例恢復(自動)與介質恢復(手工/腳本)兩大類,對應不同故障層級。
觸發條件:掉電、背景進程異常終止、SHUTDOWN ABORT。
下次啟動時(MOUNT → OPEN),SMON 自動執行:
無需 DBA 介入,核心依賴 Redo Log 完整性。
觸發條件:資料檔/控制檔/Redo Log 損壞、磁碟故障、誤刪檔案。
分為完全介質恢復與不完全介質恢復:
前提:完全恢復不可行(歸檔缺失)或業務需求(誤操作回溯)。
目標:恢復至故障前某一時間點/SCN,**部分資料遺失**。
| 類型 | 適用場景 | 關鍵字句 |
|---|---|---|
| 基於 CANCEL | 歸檔日誌損壞,無法連續套用 | RECOVER DATABASE UNTIL CANCEL |
| 基於 TIME | 誤刪表、誤更新,知悉大致時間 | RECOVER DATABASE UNTIL TIME '...' |
| 基於 SCN | 精確定位至特定 SCN | RECOVER DATABASE UNTIL CHANGE n |
不完全恢復後**必須** ALTER DATABASE OPEN RESETLOGS,會重置 Redo Log 序號,導致舊備份失效,**務必立即進行完整冷備份**。
| 檔案類型 | 故障影響 | 核心恢復策略 |
|---|---|---|
| 控制檔 | 所有控制檔遺失 → 無法 MOUNT | 1. 從備份覆蓋 2. CREATE CONTROLFILE 重建 3. 使用備份控制檔恢復 + RESETLOGS |
| 線上 Redo Log | 非活動組遺失 → 可修復;當前組遺失 → 需不完全恢復 | 非活動:CLEAR LOGFILE / 成員替換;當前:不完全恢復 + RESETLOGS |
| 資料檔 | SYSTEM 表空間 → 必須 MOUNT 狀態恢復;非 SYSTEM 可 ONLINE 恢復 | 含 Undo 的非 SYSTEM 檔損壞 → 需建立臨時 Undo Segment 維持 DML |
| 歸檔日誌 | 遺失導致完全恢復中斷 | 修改歸檔目的地、立即冷備份、啟用多路徑歸檔 |
強烈建議使用 RMAN 取代傳統使用者管理備份:
RECOVER DATABASE、RESTORE TABLESPACE、BLOCKRECOVER 一鍵完成RESETLOGS 開啟後,**立即完整冷備份**。