1.环境描述
主库
1.操作系统: redhat 6.9
2.数据库版本: 11.2.0.4(RAC两节点)
3.补丁情况: 最新的PSU补丁
备库
1.操作系统: redhat 6.9
2.数据库版本: 11.2.0.4(RAC两节点)
3.补丁情况: 最新的PSU补丁
4.实例状态: OPEN
2.故障现象
主备之间日志不传输、数据库不同步,且备库MRP进程正常,重启MRP进程也无济于事。提示如下:
Error 1017 received logging on to the standby
------------------------------------------------------------
Check that the primary and standby are using a password file
and remote_login_passwordfile is set to SHARED or EXCLUSIVE,
and that the SYS password is same in the password files.
returning error ORA-16191
------------------------------------------------------------
PING[ARC2]: Heartbeat failed to connect to standby 'dsjzxstb'.
3.解决办法
根据经验,该错误提示是Oracle主备之间的密码文件不对所导致,同步主备之间的数据文件后错误依旧存在,几经折腾,最后再在mos中发现了该问题的解决办法。
ORA-16191 ORA-01017 and ORA-16000 shipping the logs to Standby database (Doc ID 2129339.1)
从mos可以看出,该问题是由于主、备库使用了数据库层面的登陆触发器所导致,关闭该触发器或者直接降隐藏参数_system_trig_enabled设置为false即可解决该问题。
该问题是不定时出现,通过关闭数据库,启动到Mount阶段,补齐了归档日志后恢复正常,下次故障可能在2个礼拜或者一天后就出现。
若业务库有灾备(DataGuard)存在,建议不要使用这种类型的触发器,以免影响主备之间的数据同步。