一、核心架構:Primary 與 Standby 同步機制
Data Guard 透過將 Primary Database 的 Redo Log 傳輸並應用至 Standby Database,實現資料同步。三種傳輸/應用策略權衡 資料零損失 與 主庫效能:
- 同步寫入 (SYNC):Redo 同步寫入 Standby,零資料損失,但影響主庫效能(等待網路 I/O 確認)。
- 非同步寫入 (ASYNC):歸檔後傳輸,主庫幾無效能損耗,但可能丟失未歸檔的 Redo。
- 應用延遲:Redo 到達 Standby 後延遲應用,可防止主庫邏輯錯誤(如誤刪表)即時傳播,但拉大 RTO。
二、四大資料保護模式
| 模式 | 可用性要求 | 網路中斷行為 | 資料損失 | 效能影響 |
Maximum Protection (Guaranteed) | 至少 1 個 Standby 同步可用 | 主庫強制掛起 (Shutdown),拒絕提交 | 零 | 大 |
Maximum Availability (Instant) | 至少 1 個 Standby 同步可用 | 允許短暫不一致,連線恢復後自動同步 | 極小 | 中 |
Maximum Performance (Rapid) | 無強制同步要求 | 非同步傳輸,允許差異 | 可能丟失未歸檔 Redo | 小 |
| Delayed Protection | 無強制要求 | 延遲 N 分鐘/小時應用 Redo | 同 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 個物理 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 支援 | 自動應用 | 透過 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 Standby 整合為單一可管理解決方案。節點可為單實例或 RAC,透過網路互聯,統一管理 Failover 資源組與基礎計算框架。