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

Oracle Data Guard 架構全解析:Physical/Logical Standby、三大保護模式與故障切換實戰

     編輯:Oracle 資料庫基礎

Oracle Data Guard 災難恢復與高可用架構完整指南

Data Guard 是 Oracle 原生高可用/災備方案,提供 Physical Standby (物理備援) 與 Logical Standby (邏輯備援) 兩種架構,支援 Maximum Protection / Availability / Performance 三種保護模式。本文系統整理架構差異、同步機制、角色切換 (Switchover/Failover)、客戶端自動轉向與監控指標。

兩種 Standby 架構對比

特性Physical StandbyLogical Standby
同步來源Primary Redo Log (Archived/Standby Redo)SQL Apply (從 Redo 轉換的 SQL)
結構一致性Physical + Logical 完全一致 (Block-level)僅 Logical 一致 (Table-level)
開啟模式Mount (Apply) / Read Only (Active Data Guard)Open Read/Write (可建立索引/物化視圖)
適用場景災備、報表卸載 (Active DG)、零資料遺失報表查詢、異構平台、部分物件複製
效能影響Primary 極低 (僅傳輸 Redo)Primary 較高 (SQL 轉換、Apply 處理)
不支援物件極少 (Global Temp Table 等)較多 (Unsupported Datatypes, DDL 限制)

三大保護模式

模式同步機制資料遺失風險Primary 可用性影響適用場景
Maximum ProtectionSYNC + AFFIRM (雙寫確認)零 (RPO=0)Standby/Network 故障 → Primary Shutdown核心金融、零容忍遺失
Maximum AvailabilitySYNC + AFFIRM (正常) / ASYNC (異常降級)極低 (正常同步)Standby/Network 故障 → Primary 繼續 (降級)高可用 + 資料保護平衡
Maximum PerformanceASYNC (非同步傳輸)可能遺失 (RPO > 0)無影響 (最佳效能)跨地域、網路不穩、效能優先

角色切換操作


-- 1. Switchover (計劃性角色互換,雙方正常)
-- Primary 執行
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
-- Standby 執行
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

-- 2. Failover (非計劃性,Primary 故障)
-- Standby 執行 (Physical)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

-- Standby 執行 (Logical)
ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE FINISH APPLY;

客戶端自動轉向 (Fast-Start Failover / FAN)

  • JDBC Thin 驅動支援 ONS (Oracle Notification Service) 訂閱 FAN 事件
  • 連接字串配置:(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=STANDBY)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=MY_SVC)))
  • 應用層無感知自動重連新 Primary

關鍵監控指標


-- Primary 端:傳輸延遲
SELECT DEST_ID, STATUS, GAP_STATUS, APPLY_LAG, TRANSPORT_LAG
FROM V$ARCHIVE_DEST_STATUS WHERE TARGET='STANDBY';

-- Standby 端:應用延遲
SELECT NAME, VALUE, DATUM_TIME, TIME_COMPUTED
FROM V$DATAGUARD_STATS WHERE NAME LIKE '%lag%';

-- 缺口偵測
SELECT * FROM V$ARCHIVE_GAP;

-- Active Data Guard 即時查詢
SELECT OPEN_MODE, DATABASE_ROLE FROM V$DATABASE;
-- Physical Standby + READ ONLY = Active Data Guard 啟用

部署最佳實踐

  1. Standby Redo Log (SRL):強制配置,大小 = Online Redo Log,組數 = Online Redo 組數 + 1
  2. LOG_ARCHIVE_DEST_2 參數:SERVICE=STANDBY SYNC AFFIRM NET_TIMEOUT=30 VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY
  3. Flashback Database:雙方啟用,Failover 後原 Primary 可快速轉為 Standby (Reinstate)
  4. 定期 Switchover 演練:每季驗證切換流程、應用轉向、資料一致性
  5. Data Guard Broker:使用 DGMGRL 統一管理、自動化 Failover、集中監控

版本演進

  • 11g:Active Data Guard (Physical Standby Read Only + Apply)
  • 12c:Far Sync Instance (零資料遺失跨地域)、多租戶 (CDB/PDB) 支援
  • 18c/19c:Automatic Failover 增強、Rolling Upgrade 支援
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved