今天在使用ORACLE数据库时出现这样一个错误,登录时连接失败。
服务器提示:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
一顿操作,终于搞清楚解决办法。将过程记录下来:
1.检查Oracle相关服务是否已启动
咦。这么一看,是我的OracleOraDb11g_home1TNSListener服务没有启动,马上启动它!
然而我在启动OracleOraDb11g_home1TNSListener时又遇到这个问题:
2. 解决 - OracleOraDb11g_home1TNSListener服务启动后停止
网上找的别人给出的解决方案,先试着走了一通:
1) 配置Oracle的listener.ora文件
我的listener.ora文件是在D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下,其中 Listener修改为:
查看计算机全名的方法如下:
右键单击“计算机”-- 选择“属性”--左侧选择“高级系统设置”。
2) 修改注册表 register
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/OracleOraDb11g_home1TNSListener中的ImagePath改为:
(之前后面的.EXE没有)
3) 配置环境变量
4) 重启OracleServiceORCL服务,再启动OracleOraDb11g_home1TNSListener服务即可运行。
然鹅。。。。还是启动不了OracleOraDb11g_home1TNSListener服务呀!
================================================================================================
心灰意冷之际又看到一个解决方案:
原因:凡是在监听器配置中,配置的所有监听地址都必须可以访问到,否则监听器不认。
解决办法:确保配置的所有监听地址和服务器地址都可以访问到
步骤1:打开Oracle的NetManager:
步骤2:查看监听器配置:
这时发现,这里的配置和刚刚我修改过的listener文件是一致的。通过查看配置,突然意识到问题所在:我在安装ORACLE时的IP地址和现在的IP地址已经不一致了。而监听器配置还保留着我原来的IP地址,因此需要手动修改,改为当前地址。刚刚在listener文件中的配置也是不必要的,删除因为这步操作而产生的地址4。最终如下图:
这时查看D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下的listener文件,可以看到已经变成和刚刚配置一致了。
这时我再重启OracleServiceORCL服务,再启动OracleOraDb11g_home1TNSListener服务即可成功运行。
3.问题解决
再次尝试连接,成功: