前两天有开发反馈连接Oracle出现 ORA-01034 ORA-27101 错误,详细报错如下:
Exception in thread "main" java.sql.SQLException: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux-x86_64 Error: 2: No such file or directory
从问题来看,感觉是已经连接到服务器了,但是,他没能访问到数据库,提示数据库不可用,不能建立连接。
首先,对数据库进行了检查:数据库状态、错误日志、监听日志等,确认数据库正常。
然后对数据库的监听进行了检查。
监听配置:
ORACLE_HOME=/U01/app/oracle/product/11.2.0.4
而实际的路径为:
ORACLE_HOME=/data/U01/app/oracle/product/11.2.0.4
同时/U01有到/data/U01的软连接。
同时数据库配置的local_listener不对
对以上两个错误修复以后,重启监听,访问恢复正常。
如何发现问题:
当是程序反馈说,连接异常,我一直否认数数据库的问题。后来我自己在本地配置了一个tns,然后使用 sqlplus user_name@tns_name方式连接测试,发下出现同样的错误,然后我才开始怀疑是监听配置有问题,所以,以后出现类似的问题,大家可以这样进行测试,问题的原因可能很多,但思路是一样的。
分析讨论:
1、local_listener设置对数据库连接的影响?
2、如何正确配置监听及确认监听配置的正确性?
这里涉及的内容稍微多了些,就不详细说了,详见:
http://docs.oracle.com/cd/B28359_01/network.111/b28316/listenercfg.htm#i486171
http://docs.oracle.com/cd/B28359_01/network.111/b28316/architecture.htm#NETAG212
本文出自 “composer” 博客,请务必保留此出处http://zuoqujia.blog.51cto.com/9151800/1658819
原文地址:http://zuoqujia.blog.51cto.com/9151800/1658819