直接重置Data Guard Broker配置是高风险操作,必须先停用所有实例、归档配置文件、确认无switchover/failover活动;ORA-16706等错误主因是通信异常,需检查dg_broker_start参数、配置文件存在性与权限、磁盘空间及SELinux;重置前须关闭broker、备份.dat文件、清空日志目录;主备库须严格同步执行DISABLE/REMOVE、重启broker并重建配置;重置后须验证switchover就绪状态、归档目标属性、MRP/RFS进程及配置实时生效。
直接重置 data guard broker 配置是高风险操作,不能跳过验证和备份 —— 除非你确认所有数据库实例已停用、配置文件已归档、且当前无任何 switchover/failover 活动。
ORA-16706 / ORA-16501 / ORA-16701 报错时,先别急着删配置
这些错误本质是 broker worker 进程无法与数据库或配置文件正常通信,常见于参数不一致、服务未启动、或配置损坏。盲目重置会丢失保护组状态、归档路径、延迟设置等关键元数据。
-
dg_broker_start必须为TRUE,否则DGMGRL命令全失效;检查方式:SHOW PARAMETER dg_broker_start - 确认
DG_BROKER_CONFIG_FILE1和DG_BROKER_CONFIG_FILE2指向的两个文件真实存在、权限可读写(属主应为oracle,非root或grid) - 若报
ORA-16786: unable to access Data Guard broker configuration files,优先检查文件系统是否只读、磁盘空间是否耗尽(df -h)、或 SELinux 是否拦截访问 - 不要手动编辑
.dat配置文件 —— 它们是二进制格式,破坏后 broker 无法加载,只能重置
重置前必须做的三件事
重置不是“删掉再建”,而是清除 broker 状态并重建信任链。漏掉任一环节,新配置会立即报 ORA-16603(configuration ID mismatch)或连接失败。
- 在每个数据库实例上执行:
ALTER SYSTEM SET dg_broker_start=FALSE SCOPE=BOTH;,再确认ps -ef | grep dmon无残留进程 - 备份现有配置文件:把
DG_BROKER_CONFIG_FILE1和DG_BROKER_CONFIG_FILE2对应路径下的两个.dat文件 cp 到安全位置(如/backup/dg_broker_$(date +%Y%m%d).bak) - 清空 broker 日志目录(默认
$ORACLE_HOME/rdbms/log/),避免旧 trace 干扰诊断;重点看drn*.log和drc*.trc
真正安全的重置流程(主库 + 备库同步操作)
Broker 配置是跨实例共享的,必须主备库严格按顺序执行,否则触发 ORA-16748(broker cannot open the primary database)。
- 主库执行:
DISABLE DATABASE→; REMOVE CONFIGURATION;(仅当配置中只剩一个库时才允许) - 备库执行相同命令;若报错
ORA-16713: command timed out,说明网络或监听异常,先验证tnsping - 主库重启 broker:
ALTER SYSTEM SET dg_broker_start=TRUE;,然后DGMGRL中运行CREATE CONFIGURATION 'myconf' AS PRIMARY DATABASE IS 'prim' CONNECT IDENTIFIER IS prim; - 添加备库时,
CONNECT IDENTIFIER必须指向其StaticConnectIdentifier,不是普通 service_name;若报ORA-12541,说明监听未配静态注册(见 listener.ora 中SID_LIST是否含该SID_NAME和GLOBAL_DBNAME)
重置后最易忽略的验证点
配置显示 “SUCCESS” 不代表可用。很多故障在 switchover 时才暴露,因为 broker 会尝试用静态连接重启实例。
- 执行
VALIDATE DATABASE后,务必检查输出中 “Ready for Switchover” 是否为Yes,而非Not Allowed或空白 - 确认备库的
LOG_ARCHIVE_DEST_2(或对应 DG 目标)中VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)等属性未被意外覆盖 - 用
SELECT PROCESS, STATUS, CLIENT_PROCESS FROM V$MANAGED_STANDBY;验证 RFS、MRP 进程是否 RUNNING,且CLIENT_PROCESS显示ARCH或LNS,而非UNKNOWN - 修改任何 broker 属性(如
Set Protection Mode)后,立刻查SHOW CONFIGURATION VERBOSE;—— 输出里Protection Mode和Fast-Start Failover状态必须实时更新,否则配置未真正落地











