首页 > 技术文章 > 监听日志文件过大,导致数据库出错,TNS-12541:无监听程序

Roobbin 2018-08-24 21:31 原文

周五了,原本以为可以早早下班回家打游戏;谁知道突然一个电话过来告诉我有一个数据库挂了,除了本地能登陆,其他所有的方式都无法连接上去;错误代码提示: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

推荐阅读