資料庫恢復兩大分類
故障發生後,重構完整資料庫的過程稱為「資料庫恢復」,分為 復原 與 恢復 兩階段。
1. 實例故障一致性恢復
觸發條件:掉電、背景進程異常終止、SHUTDOWN ABORT。
特點:Oracle 下次啟動時自動執行,無需 DBA 介入。
四大步驟:
- 前滾:讀取線上重做日志,重演已提交但未寫入資料檔的變更(含回滾段)。
- 回滾:利用重做日志重建的回滾段,撤銷未提交交易。
- 釋放資源:釋放故障時持有的鎖與資源。
- 解決分散式交易:處理處於「準備階段」的懸掛分散式交易。
2. 介質故障/檔案錯誤不一致恢復
觸發條件:資料檔/控制檔/重做日志檔損壞、遺失、誤刪。
特點:資料庫處於不一致狀態,需 DBA 手動介入,視備份策略與歸檔模式分兩類:
| 類型 | 前提條件 | 適用場景 |
| 完整介質恢復 | 有備份 + 歸檔模式 + 可用歸檔日志 | 恢復所有遺失變更,資料零損失 |
| 不完整介質恢復 | 缺少歸檔日志 / 不需恢復到最新 | 恢復至某時間點/SCN/取消點,接受部分資料遺失 |
不完整恢復三種形式
- 基於 CANCEL:歸檔日志損壞,手動控制在可用日志結束點停止。
- 基於 TIME:恢復至指定時間點(如誤刪表前)。
- 基於 SCN:恢復至指定系統變更號(精確到交易提交點)。
關鍵觀念釐清
- Restore (復原):從備份還原檔案到磁碟。
- Recover (恢復):應用 Redo/Archive Log 讓資料前滾到一致狀態。
- 兩者常搭配執行:
RESTORE DATABASE; RECOVER DATABASE;
實務建議
- 生產環境強制啟用歸檔模式,配合 RMAN 定期完整/增量備份。
- 定期演練恢復流程,驗證備份可用性與 RTO/RPO。
- 善用 Flashback Database/Table/Query 替代傳統不完整恢復,縮短 RTO。