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

Oracle 備份與恢復實戰案例全解析:從冷熱備份到 RMAN 不完全恢復

     編輯:Oracle 資料庫基礎

資料庫恢復核心概念

實例恢復(一致性恢復)

非預期關閉(斷電、SHUTDOWN ABORT)後,Oracle 下次啟動自動執行:向前捲動重做日誌、回滾未提交事務、釋放資源、解決分散式事務。

介質恢復(不一致性恢復)

  • 完全介質恢復:需備份 + 歸檔模式 + 可用歸檔日誌,恢復所有變更。
  • 不完全介質恢復:基於 CANCEL、TIME、SCN 三種方式,恢復至指定時間點,需 RESETLOGS 開啟資料庫。

測試環境與備份腳本

環境:Windows 2000 Server + Oracle 8.1.6。提供三種備份模式腳本:

  • OS 冷備份:關閉資料庫,複製所有 .dbf/.ctl/.log 檔案。
  • OS 熱備份:歸檔模式下,逐表空間 BEGIN/END BACKUP 複製資料檔,備份控制檔(二進位與追蹤檔)。
  • RMAN 熱備份:使用恢復目錄,BACKUP DATABASE INCLUDE CURRENT CONTROLFILE,自動管理備份組與歸檔。

關鍵恢復資訊來源

  • Alert Log(BACKGROUND_DUMP_DEST 目錄)
  • 背景進程追蹤檔(如 DBW0、LGWR)
  • 動態視圖:V$RECOVER_FILE、V$RECOVERY_LOG

經典恢復案例演示

4.1 非歸檔模式冷備份恢復

僅能恢復至備份時間點,備份後至故障前資料遺失。步驟:關閉 DB → 刪除資料檔模擬故障 → 啟動報錯 → 複製冷備份檔回原位 → ALTER DATABASE OPEN。

4.2 歸檔模式單一資料檔遺失

OS 方案:OFFLINE DROP 故障檔 → 開啟 DB → 複製備份檔 → RECOVER DATAFILE n → ONLINE。
RMAN 方案:RESTORE DATAFILE n; RECOVER DATAFILE n; ALTER DATABASE DATAFILE n ONLINE,可在 OPEN 狀態下操作,減少停機時間。

4.3 多資料檔/系統表空間遺失 - 整庫恢復

MOUNT 狀態下 RESTORE DATABASE; RECOVER DATABASE,OS 需手動複製所有資料檔,RMAN 單一命令完成,均需應用歸檔日誌至最新。

4.4 不完全恢復實戰

  • 基於時間:RECOVER DATABASE UNTIL TIME 'YYYY-MM-DD:HH24:MI:SS',適用誤刪表場景,通常在備用機恢復後匯出導入生產庫。
  • 基於 SCN:RECOVER DATABASE UNTIL SCN scn_num,精確度更高,需從 X$KTUXE 或 V$ARCHIVED_LOG 獲取 SCN。

所有不完全恢復均需 ALTER DATABASE OPEN RESETLOGS,並建議立即做全備份。

特殊故障恢復專題

5.1 線上重做日誌損壞

  • 非當前日誌組:CLEAR LOGFILE GROUP n(未歸檔加 UNARCHIVED)。
  • 當前日誌組:有備份用不完全恢復;無備份用隱藏參數 _ALLOW_RESETLOGS_CORRUPTION=TRUE 強制開啟(風險極高,需後續 EXP/IMP 重建)。

5.2 控制檔損壞

  • 單個損壞:複製好控制檔覆蓋或修改參數移除壞檔。
  • 全部損壞:使用 CREATE CONTROLFILE 重建,需完整列出所有資料檔與重做日誌路徑,或修改 BACKUP CONTROLFILE TO TRACE 生成的腳本。

5.3 回滾段資料檔損壞

分四種情況:OPEN 狀態下離線恢復/重建表空間;正常關閉無作用事務用 OFFLINE DROP + 重建;異常關閉有作用事務無備份用隱藏參數 _CORRUPTED_ROLLBACK_SEGMENTS 強制開啟;有備份則正常恢復。

5.4 臨時資料檔損壞

直接 OFFLINE DROP → DROP TABLESPACE → 重建臨時表空間並重新指派給用戶,不影響永久資料。

常見恢復誤區澄清

  1. 無備份僅靠歸檔無法向前恢復(9i 前)。
  2. 不完全恢復必須還原所有資料檔,否則 SCN 不一致導致失敗。
  3. RMAN 目錄庫不可與目標庫同庫,否則系統表空間損壞時無法連接目錄。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved