ORA-3136 问题处理

Alert 日志报错:
Wed May 22 18:02:47 2019
***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for Linux: Version 11.2.0.4.0 - Production
    Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
  Time: 22-MAY-2019 18:02:47
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    
TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=10.171.32.9)(PORT=44186))
WARNING: inbound connection timed out (ORA-3136)

处理方案

文档 ID 2331569.1

引入此超时限制是为了抵御恶意客户端尝试使用无效证书的连接请求来攻击数据库服务器的情形。

  以下是这个错误的最可能的原因 

1.通常该错误抛出都是由于客户端或者应用尝试使用了错误的userid或者密码来连接。参考下面的文档:  Note: 793259.1 ORA-1017 May Cause ORA-3136 WARNING : Inbound Connection Timed Out in Alert Log

2.服务器收到有效的客户端连接请求,但客户端需要很长时间才能进行超过默认60秒的身份验证。

3.数据库服务器负载很重,因此无法在指定的超时时间内完成客户端登录。

 

要了解是什么导致了这个问题,可以做下面的检查

在大多数情况下,数据库服务器可以在默认值60秒内完成客户端连接的认证。如果需要更长的时间,则在实施变通方法之前,请检查以下项目

1.检查数据库服务器上的本地连接是否可以很快完成。

2.如果本地连接速度很快,请在网络管理员的帮助下检查底层网络延迟。

3.检查你的数据库性能是否有问题。

 

4.检查警报日志中是否有关于 ORA-600 或 ORA-7445 的严重错误,并首先解决它们。这些严重错误可能会引发数据库服务器的缓慢。

使用下面指导步骤来设置这些参数的值使其高于默认的60秒

修改$RDBMS/network/admin/sqlnet.ora 文件(不是GIHome)

添加:

SQLNET.INBOUND_CONNECT_TIMEOUT = 120 

不需要重启监听。

通过检查监听trace 确认是否生效。

lsnrctl trace support    --启用trace
lsnrctl trace off       --关闭trace
niotns: Enabling CTO, value=120000 (milliseconds) <== 120 seconds
niotns: Not enabling dead connection detection.
niotns: listener bequeathed shadow coming to life...

 

我的方法

我的数据库为 11.2.0.4.0 单机,经测试以上方法没生效。自己整理处理方法如下:

1.优化SQL 降低压力

2.修改inbound_connect_timeout=120

 

操作

执行以下操作,不需要重启监听

lsnrctl set inbound_connect_timeout 120
lsnrctl save_config

参数保存到了listener.ora

检查是否生效

打开监听trace
lsnrctl trace support cat /u01/app/oracle/diag/tnslsnr/oracle/listener/trace/ora_xxx.trc | grep mill
2019-05-23 15:56:52.729683 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c3850, val=60000(millisecs)
2019-05-23 15:56:52.732543 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c3850, val=60000(millisecs)            --修改120前,默认60s
2019-05-23 15:58:26.076381 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c6c20, val=120000(millisecs)          --修改为120后
2019-05-23 15:58:26.079273 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c6c20, val=120000(millisecs)

确认成功关闭trace

lsnrctl trace off

 

回滚操作

如果需要修改回60,执行:

lsnrctl set inbound_connect_timeout 60
lsnrctl save_config

 

悲剧

悲剧的是仍然不能解决问题,哈哈!

参考:https://www.cndba.cn/dave/article/1942  关闭监听ADR

关闭监听ADR: vi $RDBMS/network/admin/listener.ora

DIAG_ADR_ENABLED_LISTENER = OFF
DIAG_ADR_ENABLED_LISTENER1 = OFF      #如果监听名为LISTENER1
#ADR_BASE_LISTENER = /u01/app/oracle
#ADR_BASE_LISTENER1 = /u01/app/oracle  #如果监听名为LISTENER1

启用监听ADR:  vi $RDBMS/network/admin/listener.ora

ADR_BASE_LISTENER = /u01/app/oracle
ADR_BASE_LISTENER1 = /u01/app/oracle  #如果监听名为LISTENER1

 

重启监听

lsnrctl stop;lsnrctl start

 --好像依然无效,纠结,可咋办吧。。。

转载于:https://www.cnblogs.com/plluoye/p/10912990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值