11gr2 alert日志中报TNS-12535 TNS-00505原因及解决方法
前面新装了11gr2 rac,某天在做巡检的时候发现alert日志中存在如下报错
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: 23-may-2019 10:49:06
tracing not turned on.
tns error struct:
ns main err code: 12535
tns-12535: tns:operation timed out
ns secondary err code: 12560
nt main err code: 505
tns-00505: operation timed out
nt secondary err code: 110
nt os err code: 0
client address: (address=(protocol=tcp)(host=172.16.100.116)(port=38136))
thu may 23 10:49:19 2019
触发原因:
是由于程序异常断开导致超时,11g r1如果出现如上的错误信息会写入到sqlnet.log,11g r2会写入到alert.log,
其实出现此错误是正常的现象。
如果从深层次分析为什么出现这些错误,详细如下:
一个客户端连接整个步骤:
1、客户端发起一个connection连接监听
2、监听启动一个专属进程(服务器进程,也就是我们通常说的loca=no进程)用于接收这个connection
3、在专属进程启动之后,监听会将这个connection传递给这个专属进程
4、专属进程通过这个connection来跟客户端握手
5、专属进程跟客户端信息交换需要建立一个session
6、session打开
当在以上的第3步到第4步时客户端关闭,所以当专属进程尝试跟客户端联系时发现连接已关闭时,就会报出我们看到的错误!!
如果不想让这些信息打印在alert日志中,设置如下:
在sqlnet.ora设置
diag_adr_enabled = off
在listener.ora设置
diag_adr_enabled_ = off
重启监听
下一篇: linux 学习第十一天