这是一个关于Oracle数据库连接错误TNS-12541: TNS: 监听程序未运行 TNS-12560的文档,解释了当监听服务没有启动时出现此问题的原因及解决方法。
最近遇到一个监听器的问题案例,在Windows Server 2008 64位系统(已进行高可用性配置)上运行的Oracle数据库11.1.0.7版本中出现。
故障发生后,我们立即查看了监听程序的状态,并发现有TNS-12541、TNS-12560等错误。在服务选项里检查oracle监听器服务时,发现该服务已停止运行。手动启动后,在CMD窗口执行lsnrctl status命令依然返回同样的错误信息。
我们还查看了告警日志,发现了大量的ora错误和Fatal NI connect error 12170的记录。尽管怀疑可能是监听器配置的问题并尝试重新构建监听器,但问题仍然存在。
后来发现监听程序的日志大小达到了4G,并且Oracle有一个与此相关的BUG(编号为9879101),指出当listener日志达到或接近4GB时,通过监听器连接的速度会变慢。根据MOS文章(ID 1319797.1)提供的解决方案,我们按照以下步骤操作:
- 停止监听程序。
- 删除在$ORACLE_BASE\diag\tnslsnr\\listener\trace路径下接近或达到4GB大小的log文件。
- 使用lsnrctl命令重新启动监听器并检查状态。
通过上述方法后,问题得到了解决。