一、核心架構:Primary-Standby 同步機制
Data Guard 通過將 Primary Database 的 Redo Log 傳輸並應用至 Standby Database,實現資料同步。三種策略權衡 零資料損失 與 主庫效能:
- 同步傳輸 (SYNC/LGWR):Redo 同步寫入 Standby,**零資料損失**,主庫等待網路確認,效能影響大。
- 非同步傳輸 (ASYNC/ARCH):歸檔後傳輸,主庫幾無損耗,可能丟失未歸檔 Redo。
- 延遲應用 (DELAY):Redo 到達 Standby 後延遲 N 分鐘應用,防邏輯錯誤傳播,犧牲 RTO。
二、四大資料保護模式詳細對比
| 模式 | 可用性要求 | 網路中斷行為 | 資料損失 | 效能影響 | 適用場景 |
Maximum Protection (Guaranteed) | ≥1 Standby 同步可用 | 主庫強制掛起,拒絕提交 | 零 | 大 | 核心金融、訂單、醫療等零容忍業務 |
Maximum Availability (Instant) | ≥1 Standby 同步可用 | 允許短暫不一致,恢復後自動同步 | 極小 | 中 | 高可用生產、可接受秒級 RPO |
Maximum Performance (Rapid) | 無強制要求 | 非同步傳輸,允許差異 | 可能丟失未歸檔 Redo | 小 | 異地災備、效能優先、可容忍分鐘級 RPO |
| Delayed Protection | 無要求 | 延遲 N 分鐘應用 | 同 Rapid + 延遲窗口 | 最小 | 防邏輯錯誤 (誤刪表) 傳播、審計合規 |
三、限制資料損失量的兩大手段
- Standby Zero Data Loss (LGWR 同步寫入):LGWR 寫本地 Redo 同時網路寫入 Standby,本質是遠端 Redo 鏡像。代價:極大效能損耗。
- ARCHIVE_LAG_TARGET 參數:強制日誌切換間隔 (建議 1800 秒)。確保未歸檔 Redo 量可控。注意:長交易未提交前不切換,實際損失可能超標。
四、從 Oracle 8 Standby 到 9i Data Guard 演進
- Oracle 8 Automated Standby:最多 4 個 Physical Standby,自動應用歸檔日誌,唯讀開啟,Oracle Net 傳輸影響可忽略。
- Oracle 9i Data Guard = 增強版 Physical Standby + Logical Standby + 新增模組 (LogMiner、Data Guard Broker、DR Server)。
五、Physical vs Logical Standby 核心差異
| 特性 | Physical Standby | Logical Standby |
| 儲存結構 | 區塊級完全一致 (ROWID 級恢復) | 邏輯級一致,物理結構可不同 |
| 開啟模式 | MOUNT / READ ONLY | READ WRITE 可開啟 |
| 額外價值 | 純災備 | 可建不同索引/物化視圖,承擔報表查詢 |
| DDL 應用 | 自動 (Redo 級) | SQL Apply 重構,部分 DDL 需手動 |
| 技能要求 | 較低 | DBA 需更高技能 |
最佳實踐:混合部署——Physical 保障極致 RTO/RPO,Logical 分擔報表並提供邏輯級保護。
六、Role Transition:Failover vs Switchover
| 特性 | Failover (故障切換) | Switchover (角色互換) |
| 觸發原因 | 主庫宕機、無法及時恢復 | 計劃性維護、升級、遷移 |
| 資料損失 | 可能 (除 Maximum Protection) | 零 (無需應用 Redo) |
| 原主庫恢復 | 需重建 (Reinstantiate) | 無需重建,直接轉為 Standby |
| 其他 Standby | 需重新配置指向新主庫 | 自動跟隨新角色 |
| 可逆性 | 不可逆 | 可逆,隨時切回 |
七、Data Guard 核心組件架構
- Log Transport Services:統一傳輸模組,支援 Physical/Logical,含錯誤處理、報告、缺口解析。
- Data Guard Broker:自動化管理框架,單指令完成 Failover/Switchover。雙介面:Enterprise Manager Data Guard Manager (GUI) + DGMGRL 命令列。
- LogMiner:9i 大幅增強,SQL 讀取/分析線上/歸檔 Redo,為 Logical Standby 提供基礎設施。EM 整合 LogMiner Viewer 圖形介面。
- Disaster Recovery (DR) Server / DRMON:鬆散耦合節點群,將 Physical/Logical 整合為單一可管理解決方案。節點可為單實例或 RAC,統一管理 Failover 資源組與基礎計算框架。
八、部署檢查清單
- 硬體平台一致性 (Primary/Standby 同架構)
- OS 版本相容 (可不同次版本)
- 字符集、時區、NLS 參數完全一致
- 網路帶宽 ≥ 3× 峰值 Redo 生成速率 (預留 66% 余量)
- 啟用 FORCE LOGGING (主庫) 確保所有操作產生 Redo
- 配置 Flashback Database (10g+) 便於快速反轉
- 建立 Data Guard Broker 配置 (自動化管理)
- 文檔化 Switchover/Failover 操作手冊並季度演練