IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    TNS-12518: TNS:listener could not hand off client connection

    惜分飞发表于 2024-03-12 13:17:40
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:TNS-12518: TNS:listener could not hand off client connection

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    客户反馈业务经常性出现数据库连接异常,通过工具访问ORACLE进程报ORA-12170
    ORA-12170


    通过分析发现lsnrctl status几乎hang住,tnsping延迟特别大
    tnsping-slow

    进一步分析监听日志发现TNS-12518: TNS:listener could not hand off client connection错误

    12-MAR-2024 15:34:50 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)
    (HOST=__jdbc__)(USER=Administrator))(SERVICE_NAME=ilas)) * (ADDRESS=(PROTOCOL=tcp)
    (HOST=ip)(PORT=52854)) * establish * ilas * 12518
    TNS-12518: TNS:listener could not hand off client connection
     TNS-12547: TNS:lost contact
      TNS-12560: TNS:protocol adapter error
       TNS-00517: Lost contact
        Linux Error: 32: Broken pipe
    

    根据经验和Troubleshooting Guide for TNS-12518 TNS listener could not hand off client connection描述,检查监听文件配置

    [oracle@xff admin]$ cat listener.ora
    # listener.ora Network Configuration File:/home/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
    # Generated by Oracle configuration tools.
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/oraclr11.dll")
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521))
        )
      )
    
    ADR_BASE_LISTENER = /home/u01/app/oracle
    

    根据经验和客户的业务进行分析,确认他们不会使用 external procedures方式访问数据库,直接修改监听配置

    [oracle@xff admin]$ cat listener.ora
    # listener.ora Network Configuration File:/home/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
    # Generated by Oracle configuration tools.
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = xff)
          (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/dbhome_1)
          (GLOBAL_DBNAME = xff)
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521))
        )
      )
    
    ADR_BASE_LISTENER = /home/u01/app/oracle
    

    然后reload配置,再使用lsnrctl status查看结果秒出,tnsping也非常快
    20240312205940


    让客户测试应用也恢复正常,一切ok,问题在最小修改的情况下解决,和最初供应商建议的重装系统,双机,数据库等解决方案大大简化

    • hostname配置不切当导致TNS-12542错误
    • oracle to sql 透明网络配置
    • Oracle静态监听和动态监听
    • 因IPC导致多个监听不能正常启动
    • 同台服务器多版本数据库监听配置
    • WARNING: Subscription for node down event still pending
    • Enterprise Manager Database Express 12c 欣赏
    • ORA-01034 ORA-27101故障分析
    • Oracle监听设置密码
    • hosts中缺少localhost.localdomain导致监听启动时间超长
    • 远程访问ASM
    • 提高短连接性能方法测试


沪ICP备19023445号-2号
友情链接