今天项目上突然出现数据库连不上的问题,pl/sql连接提示无监听。之前碰到过类似问题,排查原因为监听日志过大导致。
Oracle监听器日志文件(通常叫做listener.log)是一个纯文本文件,它的大小是一直不断增长的,在一个生产Oracle服务器上,DBA会每日查看该文件,如检查监听器是否有异常停止,是否有恶意攻击连接等,当这个文件特别大的时候,打开和浏览文件内容时可能比较慢。这时可能会想到将当前的日志文件备份一下,然后重新创建一个新的日志文件,但Oracle的监听器在运行时是不允许对其日志文件做删除,重命名操作,于是只有停止监听器。重命名后,再启动监听器,启动时会自动创建一个新的监听器日志文件。
解决办法是先停掉监听服务,重命名listener.log,再启动监听服务,数据库恢复正常。