作者:bytehouse
Oracle ACE、PostgreSQL ACE
10+年数据库架构与运维实战经验
公众号:bytehouse
墨天轮专栏:bytehouse
CSDN:Young DBA
DGMGRL> edit database ats set property ApplyState = OFF;
错误: ORA-16587: 指定给 Data Guard 中介的对象不明确
失败。
DGMGRL>
备库的 DMON(Broker)进程已经进入僵死状态,单纯停掉 MRP 进程不足以释放资源,必须彻底重启 Broker 服务。
1. 备库侧:彻底关闭并重启 Broker 进程
sqlplus / as sysdba
-- 第一步:停止日志应用
alter database recover managed standby database cancel;
-- 第二步:关闭 Broker
alter system set dg_broker_start=false scope=both sid='*';
commit;
-- 第三步:强制刷新内存
alter system flush shared_pool;
-- 第四步:重新启动 Broker
alter system set dg_broker_start=true scope=both sid='*';
exit
2. 主库侧:同样重启 Broker(关键!)
sqlplus / as sysdba
alter system set dg_broker_start=false scope=both sid='*';
alter system set dg_broker_start=true scope=both sid='*';
exit
3. 回到 DGMGRL,修改备库 LogXptMode
edit database ats set property LogXptMode=SYNC;
这次命令会成功,输出 已更新属性 "logxptmode"。
4. 备库侧:重新开启实时日志应用
sqlplus / as sysdba
alter database recover managed standby database using current logfile disconnect from session;
exit
或
start database ats apply;
5. 切换保护模式为 MaxAvailability
edit configuration set protection mode as availability;
show configuration;
关键说明
ORA-16713超时的本质,是备库的DMON进程无法响应主库 Broker 的命令,重启dg_broker_start是最直接的修复方式。- 主库也必须重启 Broker,否则两边的 Broker 通信依然可能存在问题。
- 重启后,
LogXptMode就能正常修改,保护模式也能成功切换。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




