搭建ADG时遇到Heartbeat failed to connect to standby ‘XXXX’. Error is 16058错误
Aug292017
我大姨姐在为公司数据库搭建ADG时遇到了主库日志不能传输到备库的错误,备库告警日志显示存在gap而不能从主库获取到。备库配了静态监听,而且备库已经启动到了MOUNT状态。我建议她检查tnsnames文件和密码文件及相关的参数,她确认没有配置错误后,问题依旧。
这是一套主库为两节点的RAC,备库为单实例的11.2.0.4.0版本的环境,我远程控制她的电脑后,发现主库告警日志存在Heartbeat failed to connect to standby ‘XXXX’. Error is 16058错误,这就是导致这个问题的原因。
PING[ARC2]: Heartbeat failed to connect to standby 'XXXX'. Error is 16058.
这个错误的16058错误号,就是ORA-16058,通过oerr命令查看这个错误的描述信息。
[oracle@SL010A-IVDB08 ~]$ oerr ora 16058 16058, 00000, "standby database instance is not mounted" // *Cause: The Remote File Server (RFS) process on the standby database // received an internal error. // *Action: Check the standby alert log and RFS trace files for more // information.
发现这个错误是备库的状态没有启动到mount或者open read only导致的,通过v$archive_dest_status视图也可以查询到这个错误。
SYS>select status,database_mode,error,synchronization_status from v$archive_dest_status where type='PHYSICAL'; STATUS DATABASE_MODE ERROR SYNCHRONIZATION_STATUS ------- ---------------- --------------------------------------------------- ---------------------- ERROR MOUNTED-STANDBY ORA-16058: standby database instance is not mounted CHECK CONFIGURATION
经过查询发现,备库已经是mount状态了,而且一切正常,在主库的两个节点通过tnsnames配置的连接串都可以使用sys用户远程登录到备库。备库并没有问题,那么怎么会遇到这个问题呢?
查询了下资料,国外的专家的解释是,在使用duplicate创建DG的时候,在主库的操作遇到了错误,导致主库误认为备库的状态不对,就导致了这个问题。
经过询问,她的确是使用duplicate创建的备库,而且在duplicate过程中,有两个数据文件没有成功创建,她使用rman备份了这两个数据文件,在备库restore出来,备库启动MRP进程后,就遇到了这个问题。
我将备库重新启动到MOUNT状态后,问题解决。