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

Oracle Data Guard 角色轉換深度解析:Switchover 與 Failover 實戰指南

     編輯:關於SqlServer

核心概念區分

維度Switchover (計畫性切換)Failover (故障切換)
觸發場景維護升級、硬體遷移等計畫性操作主庫 Crash、存儲故障、災難恢復
資料損失零資料損失(所有 redo 已同步應用)可能損失未傳輸至 Standby 的 redo(視保護模式而定)
原主庫角色轉為 Standby,仍屬同一 Data Guard 體系若啟用 Flashback Database,可轉為新主庫的 Standby
業務影響秒級切換,應用透明需人工介入,RTO 取決於故障偵測與決策速度

角色轉換前置檢查清單

  1. ArchiveLog 模式:Primary 與 Standby 均須啟用。
  2. 臨時檔案一致性:Standby 臨時表空間檔案數量、大小、路徑需與 Primary 完全對應。
  3. RAC 環境限制:Standby RAC 僅保留一個 Instance MOUNT 狀態,其餘全部 SHUTDOWN。
  4. 同步延遲評估:查詢 V$DATAGUARD_STATS 確認 apply lag、transport lag 在可接受閾值內。

關鍵監控查詢

-- 查看適用延遲、啟動預估時間等核心指標
COLUMN NAME FORMAT A18
COLUMN VALUE FORMAT A16
COLUMN TIME_COMPUTED FORMAT A24
SELECT * FROM V$DATAGUARD_STATS;

-- 確認資料庫角色與開放模式
SELECT NAME, DB_UNIQUE_NAME, OPEN_MODE, DATABASE_ROLE FROM V$DATABASE;

輸出範例解讀

NAME                 VALUE            TIME_COMPUTED
-------------------- ---------------- ------------------------
apply finish time    +00 00:38:57.2   26-SEP-2008 23:16:39
apply lag            +00 09:48:00     26-SEP-2008 23:16:39
estimated startup time 25 second      26-SEP-2008 23:16:39
standby has been open N               26-SEP-2008 23:16:39
transport lag        +00 00:00:00     26-SEP-2008 23:16:39
  • apply lag 09:48:00:Standby 落後 Primary 近 10 小時,執行 Failover 將丟失這段 redo,必須評估業務可接受度。
  • transport lag 00:00:00:網路傳輸無延遲,瓶頸在 Apply 端。
  • estimated startup time 25s:Standby 轉為 Primary 的預估開機時間。

Flashback Database 輔助 Failover 後恢復

若 Primary/Standby 均啟用 FLASHBACK DATABASE,Failover 後可將原 Primary 以 FLASHBACK STANDBY DATABASE 方式快速轉為新 Primary 的 Standby,避免完整重建,大幅縮短 RTO。

最佳實踐建議

  1. 定期演練 Switchover:每季度至少一次,驗證切換腳本、應用連接池切換、監控告警是否生效。
  2. 保護模式選型:核心業務採用 Maximum Availability(同步傳輸 + 自動 Failover),次要業務可用 Maximum Performance(非同步)。
  3. 自動化監控:將 V$DATAGUARD_STATS 關鍵指標納入 Prometheus/Grafana 告警,apply lag 超過 30 分鐘即觸發 P1 告警。
  4. 文件化 Runbook:記錄 Switchover/Failover 逐步操作、回滾方案、聯絡人矩陣,確保人員變動不影響應急響應。

總結

Switchover 是「有備無患」的計畫性演練,Failover 是「危機時刻」的最後防線。掌握兩者差異、建立完善前置檢查與自動化監控,才能在真正災難來臨時,以最小代價守住資料零損失、業務快速恢復的核心 SLA。

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