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

Oracle 資料庫備份與災難恢復實戰總覽

     編輯:Oracle 資料庫基礎

前言

隨著企業對資訊系統依賴度提高,資料庫可靠性至關重要。DBA 必須依業務需求制定詳細備份/恢復策略,並透過模擬故障嚴格測試,確保高可用性。本文系統整理 Oracle 可能遭遇的各類故障及對應恢復方法,供參考。

資料庫三種運行狀態

  • NOMOUNT:僅讀取參數檔初始化 SGA
  • MOUNT:讀取控制檔,掌握資料庫物理結構
  • OPEN:檢查所有檔案一致性、執行恢復/回滾、允許使用者存取

三大備份類型

  • 冷備份:資料庫關閉狀態下完整複製所有資料檔、控制檔、線上 log、參數檔
  • 熱備份:資料庫開啟狀態下備份資料檔與控制檔,須啟用 ARCHIVELOG 模式
  • 邏輯備份:用 EXP 匯出表/使用者/全庫,支援完全/累加/增量,資料庫須開啟,最好在 RESTRICT 模式確保一致性

恢復分類

  • 完全恢復:恢復至故障時刻,零資料遺失
  • 不完全恢復:恢復至故障前某時間點,後續變更遺失。無特殊需求優先用完全恢復

恢復原則:只能在故障前備份基礎上套用 redo 向前滾動,無法將當前資料庫向後回滾。

五大錯誤類別與應對

  1. SQL 陳述式失敗
  2. 執行緒失敗
  3. 實例失敗
  4. 使用者操作失敗(誤刪資料)→ 匯入邏輯備份或時間點不完全恢復;Oracle 8+ 提供 TSPITR(表空間時間點恢復)或 LogMiner 產生反向 SQL
  5. 儲存設備失敗 → 本文重點

儲存設備失敗:關鍵檔案類型與恢復要點

控制檔

  • 單一遺失:註解掉 init.ora 中該檔路徑即可啟動
  • 全部遺失:NOMOUNT 下 CREATE CONTROLFILE 重建,需提供 redo log、datafile 路徑及 MAX 參數;若有 BACKUP CONTROLFILE TO TRACE 腳本可直接執行;用舊控制檔恢復需 RECOVER ... USING BACKUP CONTROLFILE 並 OPEN RESETLOGS

線上重做日誌

  • 非作用中日誌組遺失:
    • 組內有多成員:關機 → 以良好成員覆蓋損壞成員 → 若路徑不可用則複製新位置並 ALTER DATABASE RENAME FILE → 啟動 → 冷備份
    • 單一成員:MOUNT → 轉 NOARCHIVELOG → ADD LOGFILE MEMBER → DROP LOGFILE MEMBER → 備份控制檔 → 轉回 ARCHIVELOG → 冷備份
  • 作用中日誌組遺失(無鏡像、全組不可用):SHUTDOWN ABORT → 從最近全備份還原所有資料檔 → MOUNT → 必要時 RENAME FILE → RECOVER DATABASE UNTIL CANCEL 套用至最後存檔 → CANCEL → ALTER DATABASE OPEN RESETLOGS → 冷備份。注意:損壞 redo log 內已提交資料將遺失,生產環境務必多成員、多磁碟鏡像。

資料檔

  • SYSTEM 表空間資料檔:唯一辦法從備份還原,MOUNT 狀態下 RECOVER DATABASE/DATAFILE 完成後才能 OPEN
  • 非 SYSTEM、無回滾段資料檔:可選 OPEN 或 MOUNT 狀態恢復。急需服務時:MOUNT 時 OFFLINE 損壞檔 → OPEN 服務未損壞部分 → RECOVER DATAFILE/TABLESPACE → ONLINE 恢復服務
  • 含回滾段的非 SYSTEM 資料檔:同樣可二模式恢復。若 OPEN 狀態恢復,須先建立臨時回滾段(如 CREATE ROLLBACK SEGMENT temp1 TABLESPACE SYSTEM)供交易使用,恢復後再手動 ALTER ROLLBACK SEGMENT ... ONLINE 恢復原有回滾段。MOUNT 恢復則無此顧慮
  • 無備份但控制檔建立早於資料檔且從未 RESETLOGS:OFFLINE 損壞檔 → ALTER DATABASE CREATE DATAFILE ... AS ... 依控制檔資訊重建空檔 → RECOVER TABLESPACE/DATAFILE 套用所有 redo → ONLINE

存檔日誌檔

遺失或路徑不可用:SHUTDOWN → 冷備份 → 修改參數檔存檔路徑 → 重啟。Oracle 8+ 提供 LOG_ARCHIVE_DUPLEX_DEST、LOG_ARCHIVE_DEST_n 多路徑甚至遠端備份機制。

恢復操作四大注意事項

  1. 本文預設 ARCHIVELOG 模式,僅涵蓋基礎方法;複雜環境建議用 RMAN
  2. 災難發生後、恢復前先做完整冷備份,防誤操作造成二次損失
  3. 使用 RESETLOGS 開啟後立即關機冷備份,因舊備份將失效
  4. 完全恢復時切勿用備份中的 redo log 覆蓋當前 redo log,否則被迫不完全恢復並遺失資料
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved