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

Oracle 災難恢復完整指南:架構狀態、備份類型、錯誤分類與分檔案恢復實戰

     編輯:Oracle 資料庫基礎

資料庫三大運行狀態與恢復前提

狀態操作內容適用場景
NOMOUNT讀取參數檔、啟動 SGA、背景進程建立資料庫、恢復控制檔、RMAN 還原控制檔
MOUNT讀取控制檔、獲取物理結構備份控制檔、歸檔模式切換、資料檔/Redo 恢復、不完全恢復
OPEN檢查檔案一致性、前滾/回滾、開放用戶存取正常業務、邏輯備份匯出

三大備份類型

  1. 冷備份:資料庫關閉(SHUTDOWN NORMAL/IMMEDIATE)下複製**所有資料檔、控制檔、線上 Redo、參數檔**。最簡單、最安全、需停機。
  2. 熱備份:資料庫 OPEN 狀態下,表空間進入 BACKUP MODE 複製資料檔、**必須歸檔模式**。業務不停機,操作複雜度高。
  3. 邏輯備份:Data Pump Export (`expdp`),按表/用戶/全庫導出,**資料庫需 OPEN**,RESTRICTED SESSION 保證一致性。跨版本/平台遷移首選。

恢復分類:完全 vs 不完全

  • 完全恢復:套用所有 Redo,恢復至故障時刻,**零遺失**。首選方案。
  • 不完全恢復:恢復至過去某時間點/SCN,**部分遺失**。適用:歸檔缺失、誤操作回溯、測試環境刷新。

**核心原理:** 恢復 = **前滾** + **回滾**。只能從舊備份前滾至目標點,**不能**從新備份回滾至過去。

五大錯誤分類與自動/手工恢復策略

錯誤類別典型案例恢復責任策略
SQL 語句失敗約束違反、空間不足Oracle 自動語句級回滾,無需 DBA
進程/會話失敗用戶進程異常終止Oracle 自動PMON 清理、釋放鎖、回滾事務
實例失敗掉電、SHUTDOWN ABORTOracle 自動下次啟動 SMON 實例恢復
用戶操作失敗誤刪表、誤更新DBA 手工TSPITR(表空間時間點恢復)、LogMiner 反向 SQL、不完全恢復
儲存設備失敗磁碟壞軌、控制檔損壞DBA 手工分檔案類型恢復(見下文)

儲存設備失敗:分檔案類型恢復實戰

1. 控制檔

  • 多路徑鏡像:單一損壞 → 註釋參數檔故障路徑 → 重啟。
  • 全損:NOMOUNT → `CREATE CONTROLFILE` 重建(需 Redo/Datafile 路徑、MAX 參數)或 覆蓋備份控制檔 → `RECOVER DATABASE USING BACKUP CONTROLFILE` → `OPEN RESETLOGS`。

2. 線上 Redo Log

  • 非活動組損壞:有鏡像成員 → 好成員覆蓋壞成員 → `ALTER DATABASE CLEAR LOGFILE GROUP n`;無鏡像 → `CLEAR UNARCHIVED LOGFILE GROUP n`(需備份後)。
  • 當前組損壞:需不完全恢復 → 從備份還原所有資料檔 → MOUNT → `RECOVER DATABASE UNTIL CANCEL` → `OPEN RESETLOGS` → **立即冷備份**。**已提交資料可能遺失**,生產環境**必須多成員多路徑**。

3. 資料檔

類型恢復狀態關鍵步驟
SYSTEM 表空間必須 MOUNT還原檔案 → `RECOVER DATABASE/DATAFILE` → OPEN
非 SYSTEM 無 UndoMOUNT 或 OPENOPEN 狀下:`ALTER DATABASE DATAFILE ... OFFLINE` → OPEN 業務 → `RECOVER DATAFILE` → `ONLINE`
非 SYSTEM 含 UndoMOUNT 或 OPENOPEN 狀下需建立**臨時 Undo Segment**(SYSTEM 表空間)維持 DML,恢復後手工 ONLINE 原 Undo

無備份但控制檔建立早於資料檔且無 RESETLOGS:`ALTER DATABASE CREATE DATAFILE ... AS ...` 重建空檔 → `RECOVER` 全量前滾。

4. 歸檔日誌

  • 損壞/路徑不可用 → SHUTDOWN → **立即冷備份** → 修改參數檔歸檔目的地 → 啟動 → **新備份成為基準**,後續恢復不再依賴舊歸檔。
  • 生產環境**必須**配置多路徑歸檔(`LOG_ARCHIVE_DEST_1..5`、`LOG_ARCHIVE_DUPLEX_DEST`)甚至遠端傳輸(Data Guard/NFS)。

恢復操作四大鐵律

  1. 災難發生後,**先完整冷備份**再動手(防操作失誤無退路)。
  2. 使用 `RESETLOGS` 開啟後,**立即完整冷備份**(舊備份失效)。
  3. 恢復過程中**絕不可**讓備份 Redo 覆蓋當前 Redo。
  4. 複雜環境**強制使用 RMAN**(目錄庫、腳本化、驗證、並行、壓縮、加密)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved