Oracle Data Guard Broker 详解

Oracle Data Guard Broker 详解

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


1. 概述

Data Guard Broker 是 Data Guard 集中管理框架[1]:

详细见:Oracle Data Guard 架构详解


2. 优势

2.1 集中

- 统一管理
- 多数据库
- 一处配置

2.2 自动化

- 自动 Failover
- Observer
- 监控

2.3 简化

- 简单命令
- 复杂操作
- 一键

3. 架构

3.1 组件

- Broker 配置
- 主库 DMON
- 备库 DMON
- Observer
- 客户端(dgmgrl)

3.2 DMON

- Data Guard Monitor
- 每实例一个
- 通信

3.3 配置文件

- broker 配置
- 主备同步
- 一致

4. 启用

4.1 参数

ALTER SYSTEM SET dg_broker_start=true;
-- 默认端口 1521
ALTER SYSTEM SET dg_broker_config_file1='/u01/dg1.dat';
ALTER SYSTEM SET dg_broker_config_file2='/u02/dg2.dat';

4.2 网络

# listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = (GLOBAL_DBNAME = prod_DGMGRL)(ORACLE_HOME=...)(SID_NAME=prod))
  )

5. 创建配置

5.1 创建

dgmgrl sys/password@prod
DGMGRL> CREATE CONFIGURATION dg_cfg AS
  PRIMARY DATABASE IS prod
  CONNECT IDENTIFIER IS prod;

5.2 添加备库

DGMGRL> ADD DATABASE stby AS
  CONNECT IDENTIFIER IS stby
  MAINTAINED AS PHYSICAL;

5.3 启用

DGMGRL> ENABLE CONFIGURATION;

6. 查看

6.1 配置

DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE VERBOSE prod;
DGMGRL> SHOW DATABASE VERBOSE stby;

6.2 状态

DGMGRL> SHOW DATABASE prod StatusReport;
DGMGRL> SHOW DATABASE stby StatusReport;

7. 属性

7.1 传输模式

DGMGRL> EDIT DATABASE prod SET PROPERTY LogXptMode='SYNC';
DGMGRL> EDIT DATABASE stby SET PROPERTY LogXptMode='SYNC';

7.2 保护模式

DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;

7.3 状态

DGMGRL> EDIT DATABASE stby SET STATE='APPLY-ON';
DGMGRL> EDIT DATABASE stby SET STATE='READ-ONLY';
DGMGRL> EDIT DATABASE stby SET STATE='READ-WRITE';

8. Switchover

8.1 命令

DGMGRL> SWITCHOVER TO stby;

8.2 流程

1. 验证
2. 主库转备
3. 备库转主
4. 应用切换
5. 旧主库应用

8.3 验证

DGMGRL> SHOW CONFIGURATION;

详细见:Oracle Switchover 详解


9. Failover

9.1 命令

DGMGRL> FAILOVER TO stby;

9.2 紧急

- 主库不可用
- 备库升级为主
- 应用切换

9.3 旧主库

- Reinstate
- 或重建

详细见:Oracle Failover 详解


10. Fast-Start Failover

10.1 启用

DGMGRL> ENABLE FAST_START FAILOVER;

10.2 Observer

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

10.3 条件

- 主库故障
- Observer 检测
- 自动切换
- 秒级

11. Observer

11.1 角色

- 监控主库
- 自动 Failover
- 独立节点

11.2 部署

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

11.3 启动

DGMGRL> START OBSERVER;
DGMGRL> STOP OBSERVER;

12. 管理

12.1 编辑

DGMGRL> EDIT DATABASE prod SET PROPERTY ...;
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS ...;

12.2 删除

DGMGRL> REMOVE DATABASE stby;
DGMGRL> REMOVE CONFIGURATION;

12.3 禁用

DGMGRL> DISABLE CONFIGURATION;
DGMGRL> DISABLE FAST_START FAILOVER;

13. 监控

13.1 状态

DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE prod;

13.2 日志

- drc<sid>.log
- alert log
- observer log

13.3 视图

SELECT * FROM v$dataguard_config;
SELECT * FROM v$dataguard_stats;

14. 常见问题

14.1 ORA-16532

- 配置不存在
- 检查

14.2 ORA-16625

- 状态不一致
- 同步

14.3 Failover 失败

- 状态
- 手动
- 日志

15. 最佳实践

  1. Broker:使用
  2. Observer:第三地
  3. Fast-Start:自动
  4. 监控:状态
  5. 日志:检查
  6. 测试:切换
  7. 网络:冗余
  8. 文档:配置
  9. 演练:定期
  10. 自动化:Failover

16. 参考资料

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