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

Oracle 資料庫備份與恢復全攻略:實例恢復、介質恢復與 RMAN 實務

     編輯:Oracle 資料庫基礎

資料庫故障分類與恢復策略總覽

Oracle 恢復分為實例恢復(自動)與介質恢復(手工/腳本)兩大類,對應不同故障層級。

一、實例故障一致性恢復(自動)

觸發條件:掉電、背景進程異常終止、SHUTDOWN ABORT。

下次啟動時(MOUNT → OPEN),SMON 自動執行:

  1. 前滾:套用線上 Redo Log 中尚未寫入資料檔的變更(含 Undo Segment)。
  2. 回滾:利用重建的 Undo Segment 回滾未提交事務。
  3. 釋放資源:釋放故障時持有的鎖與資源。
  4. 解決分散事務:處理處於「準備提交」狀態的雙階段提交事務。

無需 DBA 介入,核心依賴 Redo Log 完整性。

二、介質故障不一致恢復(需 DBA 操作)

觸發條件:資料檔/控制檔/Redo Log 損壞、磁碟故障、誤刪檔案。

分為完全介質恢復與不完全介質恢復:

完全介質恢復

  • 前提:具備備份 + 歸檔模式 + 可用歸檔日誌。
  • 目標:恢復至故障時刻,**零資料遺失**。
  • 類型:資料檔恢復、表空間恢復、區塊級恢復(RMAN BLOCKRECOVER)。

不完全介質恢復

前提:完全恢復不可行(歸檔缺失)或業務需求(誤操作回溯)。

目標:恢復至故障前某一時間點/SCN,**部分資料遺失**。

類型適用場景關鍵字句
基於 CANCEL歸檔日誌損壞,無法連續套用RECOVER DATABASE UNTIL CANCEL
基於 TIME誤刪表、誤更新,知悉大致時間RECOVER DATABASE UNTIL TIME '...'
基於 SCN精確定位至特定 SCNRECOVER DATABASE UNTIL CHANGE n

不完全恢復後**必須** ALTER DATABASE OPEN RESETLOGS,會重置 Redo Log 序號,導致舊備份失效,**務必立即進行完整冷備份**。

三、關鍵檔案類型故障處理速查

檔案類型故障影響核心恢復策略
控制檔所有控制檔遺失 → 無法 MOUNT1. 從備份覆蓋 2. CREATE CONTROLFILE 重建 3. 使用備份控制檔恢復 + RESETLOGS
線上 Redo Log非活動組遺失 → 可修復;當前組遺失 → 需不完全恢復非活動:CLEAR LOGFILE / 成員替換;當前:不完全恢復 + RESETLOGS
資料檔SYSTEM 表空間 → 必須 MOUNT 狀態恢復;非 SYSTEM 可 ONLINE 恢復含 Undo 的非 SYSTEM 檔損壞 → 需建立臨時 Undo Segment 維持 DML
歸檔日誌遺失導致完全恢復中斷修改歸檔目的地、立即冷備份、啟用多路徑歸檔

四、RMAN:現代化備份恢復利器

強烈建議使用 RMAN 取代傳統使用者管理備份:

  • 區塊級增量備份、壓縮、加密、並行化
  • 自動管理備份保留策略、過期清理
  • RECOVER DATABASE、RESTORE TABLESPACE、BLOCKRECOVER 一鍵完成
  • 目錄資料庫集中管理多實例備份元資料

五、恢復操作鐵律

  1. 災難發生後,**先做完整冷備份**再嘗試恢復(防操作失誤無路可退)。
  2. 使用 RESETLOGS 開啟後,**立即完整冷備份**。
  3. 恢復過程中**絕不可**讓備份中的 Redo Log 覆蓋當前 Redo Log。
  4. 複雜環境(RAC、Data Guard、PDB)務必使用 RMAN + 驗證腳本。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved