Oracle 监听器日志文件过大导致监听异常
db版本:11.2.0.1
os版本:windows2008
现象:
应用异常,无法连接数据库。登陆数据库服务器,查看监听已经断掉。尝试重启监听,重启失败。查看监听日志listener.log的大小已经超过4G。
日志信息:
*********************************************************************** Fatal NI connect error 12570, connecting to: (LOCAL=NO) VERSION INFORMATION: TNS for 64-bit Windows: Version 11.2.0.1.0 - Production Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production Time: 30-6月 -2015 8:43:34 Tracing not turned on. Tns error struct: ns main err code: 12570 TNS-12570: TNS: 包阅读程序失败 ns secondary err code: 12560 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 opiodr aborting process unknown ospid (2660) as a result of ORA-609
解决方法:
删除listener.log(删除前可以先做备份),然后重启监听。监听重启后会自动创建一个新的日志文件。
补充:
在监听进程运行时,无法对listener.log做删除或者重命名操作。
如果不想重启监听,删除监听日志。可以按如下操作:
1.>lsnrctl set log_status off # 先把日志状态停掉,这样就不会写监听器日志
2. 备份或者删除监听日志
3.>lsnrctl set log_status on # 重新打开日志,开始记录监听器日志。该文件会自动创建
4.>lsnrctl status #检查监听状态
Linux下不要直接 cat /dev/null > listener.log 除非在监听器关闭的情况下。否则,即便文件已经被清空,监听器还是无法执行写入日志的。
参考资料:
Bug 9497965 - Win: Listener Startup Fails Due to listener.log Size is Greater Than 4GB [ID 9497965.8]