Oracle Data Guard Observer 详解

Oracle Data Guard Observer 详解

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

Observer 是 Fast-Start Failover 的核心[1]:

详细见:Oracle Data Guard Broker 详解Oracle Failover 详解


2. Observer 作用

2.1 监控

- 监控主库
- 检测故障
- 自动切换

2.2 Fast-Start Failover

- 自动
- 秒级
- 透明

2.3 独立

- 第三地点
- 独立
- 高可用

3. 部署

3.1 位置

- 第三地点
- 独立于主备
- 高可用

3.2 要求

- 网络可达主备
- Oracle 客户端
- dgmgrl

3.3 冗余

- 多 Observer
- 12c+
- 高可用

4. 启用 Fast-Start Failover

4.1 配置

DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=30;
DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverTarget='stby';
DGMGRL> ENABLE FAST_START FAILOVER;

4.2 条件

- 最大性能模式
- Observer 运行
- 备库正常
- 配置允许

4.3 验证

DGMGRL> SHOW CONFIGURATION VERBOSE;

5. 启动 Observer

5.1 命令

dgmgrl -logfile observer.log sys/xxx@prod
DGMGRL> START OBSERVER;

5.2 后台

nohup dgmgrl -logfile observer.log sys/xxx@prod <<EOF &
START OBSERVER;
EOF

5.3 验证

DGMGRL> SHOW OBSERVER;

6. Observer 行为

6.1 监控

- 定期 ping 主库
- 检测可达
- 状态

6.2 故障检测

- 主库不可达
- 阈值(30s)
- 确认

6.3 切换

- 备库升级
- 服务切换
- 通知

7. 多 Observer

7.1 12c+

- 多 Observer
- 冗余
- 高可用

7.2 主从

- 一个主 Observer
- 其他备用
- 切换

7.3 优势

- Observer 冗余
- 高可用
- 可靠

8. 日志

8.1 observer.log

- Observer 日志
- 状态
- 事件

8.2 分析

- 故障检测
- 切换
- 恢复

8.3 监控

- 日志监控
- 告警
- 响应

9. 管理

9.1 停止

DGMGRL> STOP OBSERVER;

9.2 重启

DGMGRL> STOP OBSERVER;
DGMGRL> START OBSERVER;

9.3 状态

DGMGRL> SHOW OBSERVER;

10. 故障场景

10.1 主库故障

1. Observer 检测
2. 等待阈值(30s)
3. 验证备库
4. Failover
5. 备库升级
6. 通知应用

10.2 网络分区

- Observer 看不到主库
- 但备库能看到
- 不切换
- 避免 split-brain

10.3 Observer 故障

- Observer 故障
- 多 Observer
- 备用接管

11. Reinstate

11.1 旧主库恢复

DGMGRL> REINSTATE DATABASE prod;

11.2 条件

- Flashback 启用
- 还原点
- 可恢复

11.3 自动

- Observer 自动
- 或手动
- 恢复

12. 监控

12.1 状态

DGMGRL> SHOW OBSERVER;
DGMGRL> SHOW CONFIGURATION VERBOSE;

12.2 日志

- observer.log
- 告警
- 事件

12.3 Fast-Start

SELECT fs_failover_status, fs_failover_observer_present 
FROM v$database;

13. 常见问题

13.1 Observer 未运行

- 检查
- 重启
- 日志

13.2 误切换

- 网络抖动
- 阈值
- 调整

13.3 不切换

- 条件不满足
- 检查
- 修复

14. 最佳实践

  1. 第三地点:部署
  2. 多 Observer:冗余
  3. 阈值:合理
  4. 监控:状态
  5. 日志:检查
  6. Flashback:启用
  7. 测试:切换
  8. 文档:配置
  9. 演练:故障
  10. 改进:持续

15. 参考资料

[1] Oracle Data Guard Broker 19c, “Observer” https://docs.oracle.com/en/database/oracle/oracle-database/19/dgbkr/