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

Oracle 資料庫停機時間最小化與災難恢復完整指南

     編輯:Oracle 資料庫基礎

核心備份策略假設

  • 控制檔多重鏡像
  • 資料庫運行於 ARCHIVELOG 模式
  • 每週冷備份、每日熱備份、每日全資料庫匯出

16 種典型故障情境與恢復步驟

事件 1:完整資料庫重構

採用全資料庫匯出或冷/熱備份結合方式重建。注意:線上 redo log 中的交易將遺失。

事件 2:部分表空間恢復

  1. 以 RESTRICT 模式啟動資料庫
  2. 重建表空間
  3. 用最新全資料庫匯出匯入,指定 IGNORE=Y
  4. 關閉並以 NORMAL 模式重啟

事件 3:遺失一般資料檔

依損壞表空間類型(回滾段、使用者、索引、唯讀)採取不同步驟。通用流程:

  1. 關閉資料庫
  2. 從熱備份還原遺失資料檔
  3. STARTUP MOUNT
  4. 查詢 V$LOG、V$LOGFILE 取得線上 redo log 群組、序號、首次變更號
  5. 若還原檔的 CHANGE# 小於線上 redo log 最小 FIRST_CHANGE#,無法完全恢復,須決定是否接受資料遺失或重建表空間
  6. 套用存檔與線上 redo log 恢復資料檔
  7. 開啟資料庫

事件 4:恢復單一資料表

  1. 用最近全資料庫匯出匯入該表,指定 OWNER=、TABLES=
  2. 效能考量下重建索引

事件 5:遺失單一控制檔

  1. 關閉資料庫
  2. 排查原因(硬體或非硬體)
  3. 非硬體:以正常控制檔複本覆蓋遺失位置,跳至步驟 5
  4. 硬體:將正常複本複製至可靠位置
  5. 修改 init.ora 或 config.ora 中 CONTROL_FILES 參數
  6. 啟動資料庫

事件 6:遺失所有控制檔

  1. 關閉資料庫
  2. 完整冷備份(含所有資料檔、redo log)
  3. STARTUP NOMOUNT
  4. 用 CREATE CONTROLFILE 重建,或執行 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 產生的腳本
  5. 執行媒體恢復
  6. 開啟資料庫
  7. SHUTDOWN NORMAL
  8. 再做一次冷備份

事件 7:遺失索引

直接重建遺失索引即可。

事件 8:遺失非作用中 redo log

  1. ALTER SYSTEM SWITCH LOGFILE 切換 log
  2. 關閉資料庫
  3. STARTUP MOUNT
  4. 離線刪除相關資料檔
  5. 開啟資料庫
  6. 刪除使用者表空間(含內容)
  7. 從全備份重建表空間與物件

事件 9:遺失作用中 redo log

步驟類似事件 8,但須注意:作用中交易將遺失。

事件 10:遺失存檔 redo log

立即做一次冷備份,最好再做一次全資料庫匯出。後續任何恢復皆為不完全恢復。

事件 11:遺失作用中回滾段

假設資料庫已啟動且運行於 ARCHIVELOG 模式,目標保留作用中交易。

  1. 勿關閉資料庫
  2. 將該資料檔屬的所有回滾段離線
  3. 刪除所有離線回滾段
  4. 若有作用中交易無法離線,查詢 V$ROLLSTAT、DBA_ROLLBACK_SEGS 確認狀態
  5. 處理作用中交易:查詢 V$SESSION、V$TRANSACTION、V$ROLLNAME 找出持有交易的 session,要求提交/回滾或 ALTER SYSTEM KILL SESSION
  6. 捨棄表空間並重建回滾表空間與回滾段

事件 12:遺失所有回滾段

  1. 關閉資料庫
  2. DBVERIFY 驗證所有資料檔
  3. 解決硬體/資料檔損壞
  4. STARTUP MOUNT
  5. 媒體恢復
  6. 開啟資料庫
  7. 按需建立新回滾段

事件 13:匯出檔損壞

若資料庫正常:冷備份 + 全資料庫匯出。若資料庫也損壞:用 ORA-1157 找出受影響表,跳過壞區塊導出資料到暫存表,丟棄損壞表,重命名暫存表,重建索引,ANALYZE ... VALIDATE STRUCTURE CASCADE。注意:壞區塊資料無法恢復。

事件 14:熱備份期間意外關機

  1. STARTUP MOUNT
  2. 查詢 V$BACKUP 找出 ACTIVE 狀態資料檔
  3. ALTER DATABASE DATAFILE ... END BACKUP 結束備份模式
  4. 開啟資料庫

事件 15:時間點恢復

  1. 關閉實例
  2. STARTUP NOMOUNT
  3. RECOVER DATABASE UNTIL TIME '...'
  4. 開啟資料庫
  5. SHUTDOWN NORMAL
  6. 重啟實例

事件 16:基於特定事件/SCN 恢復

  1. 關閉實例
  2. STARTUP NOMOUNT
  3. RECOVER DATABASE UNTIL CANCEL 並依序套用存檔 log 至目標事件
  4. 輸入 CANCEL
  5. 開啟資料庫
  6. SHUTDOWN NORMAL
  7. 重啟實例

結語

高可用性是企業核心指標。DBA 應預先規劃完整備份策略,並熟練各類故障恢復演練,才能在災難發生時將停機時間壓縮至最低。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved