Oracle Data Guard

通过重做日志传输与备库应用实现 Oracle 容灾:三种保护模式在可用性与零丢失之间取舍,支持切换(switchover)与故障转移(failover)。

备份与容灾速查数据更新于 2026-10-13

Oracle Data Guard 是什么

Data Guard 是 Oracle 的备库容灾方案:主库把重做日志传输到备库,备库持续应用,从而在另一套存储或另一个机房保有可用副本。保护模式决定是「零丢失」还是「主库可用性优先」,切换分计划内的 switchover 与故障处置的 failover,两者后续处理完全不同。

基本信息

适用平台Oracle Database(企业版功能,授权范围以官方为准)
保护模式MaxPerformance 默认异步、MaxAvailability 同步可降级、MaxProtection 同步零丢失
备库类型物理备库(块级一致,常用)与逻辑备库(可读写,限制多)
日志传输LGWR 同步或 ARCH 异步,由保护模式与配置决定
切换方式switchover 计划内可回切;failover 后原主库通常要重建
关键视图v$database、v$archive_dest_status、v$dataguard_stats、v$archive_gap

典型使用场景

  • 同城或异地容灾:对 RPO 与 RTO 有明确指标的库
  • 计划内维护:先 switchover 到备库,再维护原主库
  • 备份与报表卸载:在备库执行备份与查询,减轻主库压力
  • 版本升级演练:先用备库验证升级路径再切换
  • 站点级灾难恢复:主站点不可用时用 failover 接管

备库应用与状态检查

备库应用与状态检查
# 备库实时应用重做日志
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
# 查看保护模式与实际生效的保护级别
SELECT protection_mode, protection_level FROM v$database;
# 查看日志传输与应用状态(dest 1 与 2 分别对应主备)
SELECT dest_id, dest_name, status, error FROM v$archive_dest_status WHERE dest_id <= 2;
# 查看传输延迟与应用延迟(在备库执行)
SELECT name, value FROM v$dataguard_stats WHERE name IN ('transport lag','apply lag');
# 切换前确认没有归档间隙
SELECT thread#, low_sequence#, high_sequence# FROM v$archive_gap;
# 计划内切换(在主库执行,会先确认备库已追平)
ALTER DATABASE SWITCHOVER TO 'standby1';

保护模式读法

模式行为取舍
MaxPerformance默认,异步传输日志性能最好,主库故障可能丢最后一批事务
MaxAvailability同步传输,备库不可用时降级继续兼顾零丢失与主库可用性,依赖网络质量
MaxProtection同步零丢失,备库不可用则主库停止写入数据最安全,代价是主库可用性受制于备库
protection_level当前实际生效级别与 protection_mode 不一致说明已经发生降级
保护模式的取舍本质是「零丢失」与「主库可用性」之间的选择:金融核心与一般业务往往给出完全不同的答案,选型前先把业务能接受的 RPO 写清楚。
采用 MaxProtection 之前必须演练备库故障场景:备库断联时主库会直接停止写入,没演练过的团队往往在真故障时才发现业务已经全停。

易错点

  • 选 MaxProtection 却没演练备库故障:备库断联时主库写入直接停止,影响面超出预期
  • switchover 与 failover 混用:failover 后的原主库通常需要重建或做特定恢复才能回归
  • 不监控 apply lag:备份与报表长期跑在滞后数小时的备库上,取到的数据不是最新的
  • 把备库当读写分离节点:逻辑备库限制多,物理备库只读,架构设计要按官方能力边界来

数据来源与参考

  • Oracle Database Data Guard Concepts and Administration
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌