最近使用Oracle 11g 数据库出现了一下比较郁闷的问题,在本地使用SQLPlus连接数据库没有任何问题,远程使用Navicat Premium无法连接,提示ORA-12541:无监听程序。本地使用SQLdevelop连接时也出现了连接失败的问题;
关于这个连接异常找了很多资料,大致分为以下几种情况:
1、查看监听器服务有没有正常运行,如果没有运行重新启动监听服务;
2、host配置问题:oracle的listener.ora文件中关于host内容配置
listener.ora文件路径:F:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora(具体安装路径可能有不同,请根据自己的安装路径来找),修改之后需要重启监听服务;
具体可以参考该链接:https://blog.youkuaiyun.com/lhjllff12345/article/details/50667037

3、如果listener.ora、tnsnames.ora已经配置好,还是出现“ORA-12541 无监听程序解决方案”,这个时候需要对监听进行配置。(在这次的问题并没有实际使用此方法)
4、使用Win+R进入命令行先输入sqlplus后输入用户名、密码发现能够连接oracle数据库,但是服务中没有OracleOraDb11g_home1TNSListener,这个时候就必须进入注册表增加该项了;
PS:3和4的情况具体可以参考:https://blog.youkuaiyun.com/tmx012398/article/details/84070531
以上的几种情况就不再具体描述了,这篇文章只是做一个踩坑的记录,如果需要可以通过链接自行查看
如果发现通过上面几项检查或者操作之后依旧无法解决可以参考以下内容看看:
我遇到的问题是这样的,在之前数据库一直是可以正常使用的,突然使用Navicat Premium远程数据库时提示ORA-12541:无监听程序。我到服务器上去检查数据库服务,发现监听服务是正常的,文件配置也没有问题,但是除了本地的SQLPlus以外,其他的工具都无法连接到数据库。通过上述情况的检查也没有找到问题,直到看到一篇关于listener监听日志的文章,才最后定位到问题原因,很简单的一个问题折腾了我两天。是因为listener日志文件过大导致的,在windows下如果listener日志文件过大,会出现应用无法启动,数据库连接异常缓慢,或直接超时,无法连接的问题。监听日志文件listener.log中记录着监听连接的各种信息,并不断增长,最终达到4G;
解决办法也很简单:关闭监听 -> 重命名日志文件或清空日志 -> 重启监听 -> 恢复正常
我的日志位置是在C:\Oracle\diag\tnslsnr\11.2.1\listener\trace\listener.log,每个人设置位置可能不一样,我记得通过cmd控制台C:\Documents and Settings\Administrator>lsnrctl status,可以查询到自己的日志文件位置;
windows环境下:
C:> cd C:\Oracle\diag\tnslsnr\11.2.1\listener\trace --切换到监听器日志文件所在目录
C:\Oracle\diag\tnslsnr\11.2.1\listener\trace> lsnrctl set log_status off --暂停或脱机记录日志文件
C:\Oracle\diag\tnslsnr\11.2.1\listener\trace> rename listener.log listener.old150424 --重命名日志文件,一般加上日期
C:\Oracle\diag\tnslsnr\11.2.1\listener\trace> lsnrctl set log_status on --联机监听器日志文件,会自动重新创建一个新的日志文件
Unix/Linux环境下:
$lsnrctl set log_status off
#mv listener.log listener.old150424
$lsnrctl set log_status on
(Linux可以自己试一下,没有试过)
下面这篇文章提供了定时清理的脚本,有兴趣的可以试一下:
https://blog.youkuaiyun.com/wwyfriend/article/details/89182236
3512



被折叠的 条评论
为什么被折叠?



