TNS-12535 TNS-00505
发布日期:2021-05-14 17:50:41 浏览次数:18 分类:精选文章

本文共 1294 字,大约阅读时间需要 4 分钟。

Oracle数据库连接超时问题解决方案——WARING: inbound connection timed out (ORA-3136)

分析问题

在Oracle数据库环境中,WARING: inbound connection timed out (ORA-3136) 这个警告指向数据库服务器在等待客户端提供身份验证信息的过程中超时。具体原因可能包括以下几种情况:

  • 网络攻击:尤其是半开连接攻击。恶意客户端可能洗吗大量连接请求,占用服务器资源,导致正常连接无法及时处理。

  • 客户端认证超时:默认的SQLNET.INBOUND_CONNECT_TIMEOUT设置为60秒。客户端在这段时间内未能完成身份验证,数据库服务器会记录IP地址并抛出ORA-12170:“TNS:Connect timeout occurred”。

  • 数据库负载过高:服务器负载过重,导致无法及时处理登录请求。这通常表现为数据库负载均值超过1秒。

  • 开始设置inbound_connect_timeout

    为了解决上述问题,我们可以通过以下方法调整连接超时设置:

  • 查看当前值

    使用lsnrctl命令查看当前的inbound_connect_timeout设置:

    lsnrctl show inbound_connect_timeout
  • 临时更改值

    如果认为60秒太长或太短,可以通过lsnrctl命令立即更改:

    lsnrctl set inbound_connect_timeout 0

    更改后可重启listener:

    lsnrctl stop
    lsnrctl start
  • 永久配置修改

    listener.ora文件中,添加或修改INBOUND_CONNECT_TIMEOUT_参数:

     
  • vim listener.ora

    添加或修改以下内容:
    ```ini
    INBOUND_CONNECT_TIMEOUT_<

    <替换为所需的连接超时值(如:8秒)。

    1. 重新加载配置

      完成修改后,用以下命令重新加载listener配置:

      lsnrctl reload
    2. 注意事项

      • 隐患提示:将inbound_connect_timeout设置为0可能会导致连接频繁超时,增加数据库压力。建议根据业务需求合理设置超时时间。设置为60秒(默认值)或8秒(个案优化)。

      • 潜在问题inbound_connect_timeout从9i版本开始引入,用于防止DoS攻击。然而,某些版本存在Bug,如:

        • Bug 5594769:当本地会话共享且设置了inbound_connect_timeout时,可能导致远程会话被终止。
        • Bug 5249163:连接会被拒绝 every 49天,原因在于inbound_connect_timeout设置过短。

      优化结果

      经过全面评估和权衡,确定将inbound_connect_timeout设置为8秒是一个合理的方案。此设置能够有效防止恶意攻击,同时避免因短超时产生的潜在问题。

      参考文档

    上一篇:oracle 11g rac启停
    下一篇:awr报告生成

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月06日 12时42分28秒