快速修复步骤:1. 先停止观察器:$ srvctl stop observer -release 19c;2. 检查备库状态:select name,open_mode,database_role from v$database;3. 如果备库异常,重启备库:srvctl start database -d standbydb;4. 强制停止观察器:kill -9 observer_pid;5. 清理observer配置:rm -rf /u01/app/oracle/product/19.0.0/observer;6. 重新配置观察器:srvctl add observer -release 19c -observer host1:1521。
网友经验一
遇到ORA-16636,观察器卡死无法停止,备库日志报错太多。直接在主库执行:ALTER SYSTEM SET dg_broker_start=FALSE;然后杀掉observer进程,重启broker服务,再启动observer。测试有效,远程用ssh执行一气呵成。
网友经验二
备库异常导致的,可能是redo传输问题。先检查MRP进程:select process,pid from v$managed_standby where process like 'MRP0';如果卡住,abort它:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;然后手动recover,重启observer就好了。
网友经验三
远程处理方案:用dgmgrl连接broker,show configuration; show database 'standbydb'; 如果verbose显示异常,用disable configuration; 清理后enable。观察器就能停了,不用登录服务器。
网友经验四
实用技巧:观察器配置文件在$GOLDENGATE_HOME/observer.ora,里面host和port不对就报这个。编辑文件改对,重启observer服务。网友说99%是配置漂移引起的。
网友经验五
备库挂了,observer报ORA-16636。脚本一键修:#!/bin/bash srvctl stop observer ps -ef|grep observer|grep -v grep|awk '{print $2}'|xargs kill -9 srvctl start database -d primarydb standbydb sleep 60 srvctl start observer。保存为fix.sh,远程chmod +x后跑。
网友经验六
日志看:observer.log里有'Failed to connect to standby',证明备库网络问题。ping备库IP,检查tnsnames.ora,重启listener后observer正常停止。简单粗暴。
FAQ
Q: ORA-16636怎么快速停观察器?
A: srvctl stop observer,如果不行kill进程。
Q: 备库异常怎么查?
A: v$database看open_mode和role,alert.log找错误。
Q: 远程怎么处理?
A: 用dgmgrl或ssh脚本批量执行。
Q: 预防这个报错?
A: 定期检查broker状态,observer配置。