• TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序(亲测有效)


    此文版权归作者 – yaogang所有,转载请注明yaogang©www.luocs.com

    整理之后的解决办法是:

    1.在 listener.ora 文件中找见 ADR_BASE_LISTENER =(日志目录)如: D:appAdministrator   

    2.用命令  lsnrctl  stop   或者  直接在服务中停止监听

    3.找到  D:appAdministratordiag nslsnrWIN-NME98R72PK9listener race   该目录下的  listener.log    (不出意外的话这里的文件大小约为4G) 删除这个文件  

    4.重启监听 

    5.成功。 navicat连接成功 ,服务访问成功

    6.如不成功,参考原文分析

    原文如下

      1 Luocs说:这是我一个朋友的一个监听器问题解决案例,这是昨天发生的事情,我一直跟朋友一起Troubleshooting,折腾了半天最后是BUG所致。再次汗颜,Windows平台惹不起啊!好,那么下面开始分享我朋友的案例!
      2 
      3 环境描述:
      4 OS : Windows Server 2008 64Bit (做了HA)
      5 DB : 11.1.0.7.0
      6 
      7 排错过程:
      8 前天应用不能访问数据库了 (后台应用能访问数据库),故障发生。
      9 马上登录到服务器里查看监听状态,发现有TNS-12541 ,TNS-12560等错误
     10 
     11  
     12 
     13 Luocs补充:我跟朋友要了错误代码,但他没有保存,就直接贴图。
     14 
     15 从计算器的管理 –> 服务选项 –> 检查oracle 监听服务程序,发现该服务已经停止。
     16 
     17 手动把监听服务启动,这时候服务状态上显示为已启动,但在CMD窗口执行lsnrctl status的时候依然返回错误信息:
     18 
     19 C:>lsnrctl status
     20 
     21 LSNRCTL for 64-bit Windows: Version 11.1.0.7.0 - Production on 12-11月-2012 18:1
     22 8:32
     23 
     24 Copyright (c) 1991, 2008, Oracle. All rights reserved.
     25 
     26 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.203.218)(PORT=1521)))
     27 TNS-12541: TNS: 无监听程序
     28 TNS-12560: TNS: 协议适配器错误
     29 TNS-00511: 无监听程序
     30 64-bit Windows Error: 61: Unknown error
     31 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
     32  
     33 
     34 过段时间回显非常慢。 
     35 
     36 然后我检查了下告警日志,大量的ora错误
     37 
     38 Fatal NI connect error 12170.
     39  
     40   VERSION INFORMATION:
     41     TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
     42     Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.1.0.7.0 - Production
     43     Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.1.0.7.0 - Production
     44   Time: 12-11月-2012 15:23:33
     45   Tracing not turned on.
     46   Tns error struct:
     47     ns main err code: 12535
     48     
     49 TNS-12535: TNS: 操作超时
     50     ns secondary err code: 12560
     51     nt main err code: 0
     52     nt secondary err code: 0
     53     nt OS err code: 0
     54   Client address: <unknown>
     55 
     56 ORA-609 : opiodr aborting process unknown ospid (4116_6104)
     57  
     58 
     59 这时候朋友怀疑是不是监听器配置问题,就把原先的监听器删除重建了下,问题依然。
     60 
     61 网上有个解决TNS-12535错误的案例,平台和版本都很类似,如下:
     62 1、在 sqlnet.ora文件中 增加如下行:
     63 DIAG_ADR_ENABLED = OFF
     64 2、在listener.ora文件中增加如下行:
     65 DIAG_ADR_ENABLED_<listenername> = OFF
     66 如何监听是listener时,则前面的名称为:DIAG_ADR_ENABLED_LISTENER = OFF
     67 3、重新启动windows服务管理中的监听程序.先停止,然后再重新启动.
     68 4、检查结果.发现可以了,返回的值在10毫秒.有时为0毫秒.成功!!
     69 
     70 但这并不是问题发生原因,在继续排查过程中偶然发现监听日志大小居然为4G。然后把这现象告诉了Luocs。
     71 过了一会儿,Luocs回应是Oracle一个BUG,BUG号为9879101 : THE CONNECT THROUGH LISTENER WAS SLOW WHEN LISTNER LOG GROWED 4GB。
     72  
     73 
     74 Luocs还提供了MOS上一篇文章,ID 1319797.1 :  WINDOWS: Listener Hangs & Lsnrctl Commands Are Slow or Hang,里面给出了解决方法:
     75 
     76 You can solve this problem by deleting the large listener in $ORACLE_BASEdiag	nslsnr<hostname>listener	race<listener_name>.log
     77 1)  Stop the listener process using the command line or Control Panel Service.
     78 
     79 2) Delete the log file(s) that are at or approaching the 4G size limit at this location:
     80 $ORACLE_BASEdiag	nslsnr<hostname>listener	race<listener_name>.log
     81 3)  Issue any lsnrctl command and you will see a new listener.log in its place under:
     82 $ORACLE_BASEdiag	nslsnr<hostname>listener	race
     83 
     84 
     85 Since ADR Diagnostics are enabled for this listener these steps cannot be done dynamically using the lsnrctl utility. 
     86 e.g.
     87 LSNRCTL>set log_file mylog
     88 Will yield:  TNS-01251: Cannot set trace/log directory under ADR.
     89 
     90 However, it is possible to disable the flat file listener logging using the following commands:
     91 
     92 LSNRCTL>set current_listener <listener_name>
     93 LSNRCTL>set log_status OFF
     94 LSNRCTL>save_config
     95  
     96 
     97 我就按照以上说明如下进行:
     98 1)LSNRCTL进入交互模式
     99 2)执行set current_listener LISTENER
    100 3set log_status off
    101 4)stop 停止监听器
    102 5)手工删除ADR指定的监听日志路径下的listener.log文件
    103 6)start重启监听器
    104 7)status查看状态
    105 
    106 到此问题解决。
    107 
    108 虽然最后解决过程仅仅耗费了短短几分钟时间,但整个排错过程却是令人惊讶。在此整理,并与遇到同样问题的朋友分享。
  • 相关阅读:
    2-SAT模板
    AC自动机
    省选预备营-Day3(图论) 总结
    省选预备营-Day2(分治) 总结
    左偏树(可并堆)总结
    省选预备营-Day1(数据结构) 总结
    OI基础知识
    C++ 堆
    CH4601 普通平衡树
    java 函数形参传值和传引用的区别
  • 原文地址:https://www.cnblogs.com/ysyy/p/14421337.html
Copyright © 2020-2023  润新知