监听日志文件过大,导致数据库出错,TNS-12541:无监听程序
周五了,原本以为可以早早下班回家打游戏;谁知道突然一个电话过来告诉我有一个数据库挂了,除了本地能登陆,其他所有的方式都无法连接上去;错误代码提示:TNS-12541:无监听程序。
最初的思路是检查监听服务以及配置文件,一路检查下来就发现服务正常,配置文件也没问题。这就老火了,到底是哪里出问题了呢,迷茫...
随后去查看了alert_jxjg.log,发下大量如下错误:
Fatal NI connect error 12537, 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: 24-8月 -2018 15:23:34 Tracing not turned on. Tns error struct: ns main err code: 12537 TNS-12537: 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 (12972) as a result of ORA-609 Fri Aug 24 15:23:44 2018
看这个日志然后思路又跑到监听配置啊,服务,上面去了。
好吧,就把原来的监听删除了重新建(在这过程我发现netmanager这个东西出奇的卡,卡的不要不要的,当时就很郁闷),弄好之后,再次去看日志发现还是一毛一样的错误;人都要开始崩溃了。这时候开始做最坏的打算,从本地登陆吧数据库备份出来,到另外一个平台去还原。就在准备换去做准备的工作的时候,去看了一下监听服务状态,不看不知道,一看吓一跳,错误提示如下:
C:\Users\Administrator>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-08月-2018 20:1 8:32 Copyright (c) 1991, 2008, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.136.7.66)(PORT=1521))) TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 64-bit Windows Error: 61: Unknown error 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
看到这个提示后,拿着死马当活马医的心态,上网找资料。在一篇博客里面找到了这个错误的相关资料:
大致的意思就是该错误是由于windows平台的一个Bug导致的,只需将监听服务停掉,然后删除Listener.log日志文件,再重启监听服务就可以正常连接到数据了。
按照资料给的解决方法,最后是成功的。
原文地址,最后:治标的办法就是关闭监听日志写入
LSNRCTL>set current_listener <listener_name>
LSNRCTL>set log_status OFF
LSNRCTL>save_config