Oracle Data Guard Broker 详解

Oracle Data Guard Broker 详解

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


1. 概述

Data Guard Broker 是 Oracle 提供的 Data Guard 集中管理与监控框架[1]:

详细见:Oracle Data Guard 架构详解


2. 架构

2.1 组件

- Broker 配置(Configuration)
- Primary 数据库
- Standby 数据库(最多 30 个)
- DMON 进程(每个实例)
- 客户端:DGMGRL / Enterprise Manager

2.2 优势

- 集中管理
- 自动 Failover
- 简化 Switchover
- 配置一致性
- 监控告警

3. 启用 Broker

3.1 主库

ALTER SYSTEM SET dg_broker_start = TRUE;

3.2 备库

ALTER SYSTEM SET dg_broker_start = TRUE;

3.3 监听配置

# listener.ora 添加
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = prod_dgmgrl)
      (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1)
      (SID_NAME = prod)
    )
  )

4. 创建配置

4.1 DGMGRL

dgmgrl sys/password@prod
DGMGRL> CREATE CONFIGURATION prod_config AS
  PRIMARY DATABASE IS prod
  CONNECT IDENTIFIER IS prod;
DGMGRL> ADD DATABASE stby1 AS
  CONNECT IDENTIFIER IS stby1
  MAINTAINED AS PHYSICAL;
DGMGRL> ENABLE CONFIGURATION;

4.2 查看

DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE prod;
DGMGRL> SHOW DATABASE stby1;

5. 属性

5.1 常用

DGMGRL> EDIT DATABASE prod SET PROPERTY 'LogXptMode' = 'SYNC';
DGMGRL> EDIT DATABASE stby1 SET PROPERTY 'LogXptMode' = 'SYNC';
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
DGMGRL> EDIT DATABASE stby1 SET PROPERTY 'FastStartFailoverTarget' = 'prod';

5.2 DelayMins

DGMGRL> EDIT DATABASE stby1 SET PROPERTY 'DelayMins' = 60;

5.3 RedoRoutes

DGMGRL> EDIT DATABASE prod SET PROPERTY 'RedoRoutes' = '(stby1 : SYNC)';

6. Switchover

6.1 命令

DGMGRL> SWITCHOVER TO stby1;

6.2 验证

DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE prod;
DGMGRL> SHOW DATABASE stby1;

6.3 回切

DGMGRL> SWITCHOVER TO prod;

7. Failover

7.1 手动

DGMGRL> FAILOVER TO stby1;

7.2 后续

-- 原主库重置
ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
-- 或重建

7.3 Reinstate

DGMGRL> REINSTATE DATABASE prod;

8. Fast-Start Failover

8.1 启用

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

8.2 Observer

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

8.3 验证

DGMGRL> SHOW CONFIGURATION VERBOSE;
DGMGRL> SHOW FAST_START FAILOVER;

9. 监控

9.1 状态

DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE prod STATUSREPORT;
DGMGRL> SHOW DATABASE stby1 STATUSREPORT;

9.2 日志

DGMGRL> SHOW DATABASE prod LOGLOCATION;
DGMGRL> SHOW DATABASE stby1 LOGLOCATION;

9.3 性能

SELECT * FROM v$dataguard_stats;
SELECT * FROM v$archive_dest_status;

10. 命令汇总

CREATE CONFIGURATION
ADD DATABASE
REMOVE DATABASE
ENABLE CONFIGURATION
DISABLE CONFIGURATION
ENABLE DATABASE
DISABLE DATABASE
SWITCHOVER
FAILOVER
REINSTATE
START OBSERVER
STOP OBSERVER
SHOW
EDIT

11. 应用场景

11.1 生产管理

- 集中管理
- 简化运维
- 自动 Failover

11.2 HA

- Observer
- Fast-Start Failover
- 高可用

11.3 DR

- Switchover 演练
- Failover 灾备
- 监控

12. 常见坑与排错

12.1 ORA-16625

- 无法连接
- 检查监听
- 检查 password file

12.2 ORA-16664

- 状态不一致
- 重置 DG配置

12.3 ORA-16816

- 不正确配置
- 检查属性

13. 最佳实践

  1. Broker 启用:简化
  2. Observer 部署:独立
  3. Fast-Start:HA
  4. 属性一致:验证
  5. 监控:状态
  6. 测试:Switchover/Failover
  7. 文档:流程
  8. 备份:配置
  9. 网络:稳定
  10. 监控:告警

14. 参考资料

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