您的位置:首页 > 运维架构

TNS-12535: TNS:operation timed out TNS-00505: Operation timed out

2015-11-18 15:56 190 查看
TNS-12535 TNS-00505 经常出现很多这种报错

Problem Description

---------------------------------------------------

查看alert警告日志,经常发现很多如下报错

Mon Nov 09 18:40:11 2015

***********************************************************************

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: 09-NOV-2015 18:40:11

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=10.0.105.11)(PORT=60866))

问题解决:

如下文档解释了这个错误

Fatal NI Connect Error 12170, 'TNS-12535: TNS:operation timed out' Reported in 11g Alert Log ( Doc
ID 1286376.1 )

Alert Log Errors: 12170 TNS-12535/TNS-00505: Operation Timed Out ( Doc
ID 1628949.1 )

基本上这是一个告知性的消息。它的意思是说

The messages indicate the specified client connection (identified by the 'Client address:' details) has experienced a time out.

通常是由于客户端发起的连接没有经过正常的流程结束引起的。一个常见的场景是,从客户端连接数据库,比如通过plsql工具,连上之后,很久没有操作,

然后网络防火墙发现了这个空闲的连接超过了设置的允许时间,于是中断了它。数据库端就会记这个错误。比较糟糕的一种情况是,发起一个非常长时间的查询,

数据库由于要运行很久才会给客户端发送回复,结果超过了防火墙允许的时间,于是被中断了。

所以关键在于您的应用方面是否有异常,如果应用方面正常,那么也可以不必管它。

一个常用的解决方式是在$ORACLE_HOME/network/admin下的sqlnet.ora文件中设置

SQLNET.EXPIRE_TIME=n Where <n> is a non-zero value set in minutes.

比如

SQLNET.EXPIRE_TIME=3

设置这个参数后,Oracle服务器会每隔n分钟向所有的客户端连接发送一个非常小的侦测包,大约10byte,这个侦测包本身构成了连接上的活跃通讯,从而避免防火墙认为这个连接是空闲的。

如果设置了这个参数,仍然有错误,而且非常频繁的话,那么可以考虑检查一下报错的客户端地址,看该客户端上有什么应用会导致这个异常?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: