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

Oracle 資料庫恢復機制核心原理:轉儲備份與 Redo/Undo 雙重保障

     編輯:Oracle 資料庫基礎

雙引擎恢復架構

Oracle 採用 轉儲備份 與 重做日誌 兩大技術支柱構建完整恢復體系:

  • 轉儲:檔案拷貝、Export/Import、SQL*Loader、自製程式等多種離線/邏輯備份方式。
  • 重做日誌:記錄所有變更的前像與後像,配合回滾段實現前滾/回滾雙向恢復。

早期版本:雙日誌檔架構 (BI/AI)

  • Before Image (BI) 檔:記錄更新前舊值,**強制配置**,保證資料庫可恢復至一致性狀態。
  • After Image (AI) 檔:記錄更新後新值,**可選配置**,用於減少需重跑的事務,最大化恢復資料量。
    無 AI 檔時僅能執行 UNDO (回滾),無法 REDO (前滾)。

缺點:佔用空間大、掃描效率低。

現代架構:Redo Log + Rollback Segment (Undo)

為解決「讀髒資料」與「故障高效恢復」,引入:

  • Redo Log Buffer → Redo Log Files:順序寫入,記錄前像與後像,支援崩潰恢復前滾。
  • Rollback Segment (Undo Tablespace):記錄前像,支援交易回滾、讀一致性 (Consistent Read)、閃回查詢。

故障恢復兩階段流程

  1. 前滾:掃描 Redo Log,**重做所有操作** (含未提交事務),將資料檔推進至崩潰時刻。
  2. 回滾:根據 Undo 資訊,**撤銷未提交事務** 的變更,恢復交易一致性。

優勢:單次掃描 Redo Log 即可完成前滾,再利用 Undo 精準回滾,大幅優於舊版雙日誌多次掃描。

關鍵機制補充

  • Fast Commit:提交時僅寫入 Commit 記錄至 Redo Log Buffer,資料塊異步刷盤 (DBWR),極大縮短提交延遲。
  • SCN (System Change Number):全域遞增時鐘,賦予每次提交唯一序號,記錄於 Redo Log,支援分散式/並行恢復同步。
  • Write-Ahead Logging (WAL):DBWR 寫髒塊前,LGWR 必須先將對應 Redo 寫入磁碟,保證可恢復性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved