在给客户的数据库从9.2.0.4升级到11.2.0.4.0的时候,开发人员说应用程序访问不了数据库,客户的环境是rhel 5.5操作系统。而我通过客户端使用sqlplus、PLSQL Developer等工具业务是可以远程访问数据库的,这说明数据库是没有问题的。通过检查应用程序日志,发现如下报错。
1 Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
这是在给客户做读写分离的时候遇到的,写库是2节点的11.2.0.4.0版本的RAC,使用ADG做读写分离,应用程序原先使用9.2.0.4版本的数据库,当应用程序连接ADG备库的时候,就出现这个问题。通过查找资料,发现jdbc连接数据库,使用的是sid而不是service_name,应用程序配置的是service_name,因为是DG,备库的service_name和sid并不一样,因此访问不到数据库。参考原文地址http://www.blogjava.net/itspy/archive/2007/12/20/169072.html。
将应用程序配置的service_name改成sid,应用程序就可访问数据库了,问题解决。
--转自