11g中的12170事件.
其实遭遇这个错误不是第一回,我因为应用在半夜的批处理数据交互中出现某个环节进程连接丢失的情况在复查日志时候发现这个错误,因为是半夜2点,当时备份在执行,而且监听日志已经1g了,所以进程估计在io和cpu压力下响应时间超过了阀值就断开了,这个时候也报了12170.具体的12170解释参考了下官方的说法,下面描述一翻:
报错信息如下:
VERSION INFORMATION: TNS for Linux: Version 11.2.0.1.0 - Production Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production Time: 11-MAY-2011 22:23:40 Tracing not turned on. Tns error struct: Tns 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.131.29.167)(PORT=1827))
官方解释以及处理办法如下:
1.version Oracle Net Services - Version: 11.1.0.6 to 11.2.0.2 - Release: 11.1 to 11.2 Oracle Server - Enterprise Edition - Version: 11.1.0.6 to 11.2.0.2 [Release: 11.1 to 11.2] Information in this document applies to any platform. 2.cause These time out related messages are mostly informational in nature. The messages indicate the specified client connection (identified by the 'Client address:' details) has experienced a time out. The 'nt secondary err code' identifies the underlying network transport, such as (TCP/IP) timeout limits after a client has abnormally terminated the database connection. The 'nt secondary err code' translates to underlying network transport timeouts for the following Operating Systems: For the Solaris system: nt secondary err code: 145: #define ETIMEDOUT 145 /* Connection timed out */ For the Linux operating system: nt secondary err code: 110 ETIMEDOUT 110 Connection timed out For the HP-UX system: nt secondary err code: 238: ETIMEDOUT 238 /* Connection timed out */ For Windows based platforms: nt secondary err code: 60 (which translates to Winsock Error: 10060) Description: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. The reason the messages are written to the alert log is related to the use of the new 11g Automatic Diagnostic Repository (ADR) feature being enabled by default. 3、Solution To revert to Oracle Net Server tracing/logging, set following parameter in the server's sqlnet.ora : DIAG_ADR_ENABLED = OFF Also, to back out the ADR diag for the Listener component, set following parameter in the server's listener.ora: DIAG_ADR_ENABLED_= OFF - Where the would be replaced with the actual name of the configured listener(s) in the listener.ora configuration file. For example, if the listener name is 'LISTENER', the parameter would read: DIAG_ADR_ENABLED_LISTENER = OFF -Reload or restart the TNS Listener for the parameter change to take effect.