起因:

最近研发反应JDBC和PL/SQL工具连接过慢,昨天事情多懒得去管

今早检查alter.log后发现报错

Fatal NI connect error

12637, connecting to:

(LOCAL=NO)

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 -

Prod

uction

TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 -

Production

Time: 23-APR-2013

11:05:10

Tracing not turned

on.

Tns error

struct:

ns main err code: 12637

TNS-12637: Packet receive

failed

ns secondary err code: 12532

nt main err code: 0

nt secondary err code: 0

nt OS err code: 0

opiodr aborting process

unknown ospid (24234) as a result of ORA-609

Tue Apr 23 11:05:15

2013

故障分析

检查 listener 日志确认没有异常,在部分机器 TNSPING XXX 60 等进行尝试结果正常,无链接问题

明显感觉,只要第一次 tnsping 链接正常,之后的 jdbc 链接就正常;如果第一次不正常,之后的 jdbc 链接就容易返回超时的错误。

尝试重启 lsnrctl stop/start

和重新加载配置文件lsnrctl

reload 重新注册数据库实例,仍然无法解决超时错误。

tnsping xxxx N 的时候明显观察到:

OK (56730 msec)OK (80 msec)

OK (80 msec)

OK (70 msec)

OK (70 msec)

OK (60 msec)

OK (47820 msec)

OK (70 msec)

同时 PING IP

的结果并没有出现延时,机器之前并未设置防火墙等,可以排除网络和防火墙问题。在连续

TNSPING

的情况下,出现明显链接延时。

解决方案

方案一:(有效,但是由于是测试环境,所以影响层面未评估)

注释掉 /etc/resolve.conf 配置文件中对 DNS 的解析解决[oracle@vcdog log]$ cat /etc/resolv.conf #nameserver 202.106.0.20

方案二:官方文档(效果不明显)

ORA-609 TNS-12537 and TNS-12547 in 11g Alert.log [ID

1116960.1]

Cause

The ORA-609 error is thrown when a client connection

of any kind failed to complete or aborted the connection process

before the server process was completely spawned.

Very often, this connection abort is due to a

timeout.Beginning with 10gR2, a default value for inbound

connect timeout has been set at 60

seconds.This time limit is often inadequate for the entire

connection process to

complete. We have also discovered that the ORA-609 occurs frequently in

installations where the database is monitored by DB Console and the

Enterprise Manager agent

(emagent).After the DB Console is started and as a matter of

routine, the emagent will repeatedly try to connect to the target

instances.We can see frequent emagent connections in the

listener.log without error.However, on occasion it may have failed to complete

the connection process at the database so an ORA-609 is

thrown.The emagent will simply retry the connection and may

be successful on the subsequent

try.(Provided there is no real fault occurring at the

listener or database).This temporary failure to connect will not be reported

back to DB Console and there will be no indication, except for the

ORA-609, that a fault occurred.

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

Solution

It can be somewhat

challengingto determine the origin of the client that is causing

the error.

For that reason, we often recommend increasing the

values for INBOUND_CONNECT_TIMEOUT at both listener and server side

sqlnet.ora file as a preventive

measure.If the problemis due to connection timeouts, an increase in the

following parameters should eliminate or reduce the occurrence of

the ORA-609s.

e.g.Sqlnet.ora:

SQLNET.INBOUND_CONNECT_TIMEOUT=180Listener.ora:

INBOUND_CONNECT_TIMEOUT_listener_name=120

These settings are in seconds.Again, the default is 60.

If the issue persists and inbound connect does not

have any effect, the following steps are intended to help

locate the client that may be

causing the errors.

1)Suppress the TNS errors in the alert.log by setting

the following listener.ora file parameter: DIAG_ADR_ENABLED_listener_name=OFF

This will cause the TNS errors to be posted to the

ORACLE_HOME/network/log/sqlnet.log file that is local to the

database and may yield useful information about the client's

address.

For example, here's a snippet from a server side sqlnet.log where

client address info was posted:

Production Time: 15-FEB-2010

07:15:01Fatal NI connect error 12537, connecting

to:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=yourhost)(Port=1521))(CONNECT_DATA=(SID=PROD1DR)(CID=(PROGRAM=sqlplus)(HOST=client_host)(USER=client))))

Observe the PROGRAM and HOST fields on the last

line.This is where the connection originated.

Be sure to match timestamps in the sqlnet.log with the timestamps

of the alert.log errors.Once you've located the offending client, you can

enable client tracing to try and determine the cause:

TRACE_LEVEL_CLIENT=16

TRACE_DIRECTORY_CLIENT=

TRACE_TIMESTAMP_CLIENT=TRUE

DIAG_ADR_ENABLED=off<<<<<11g or newer client

requirement

If you need assistance with client or server tracing, please open

an SR with Global Customer Support.

2)Check the listener.log for client connections that

were logged at timestamps that match the ORA-609 timestamps as they

appear in the alert.log.The client information is recorded in each

listener.log entry.Since this error occurs AFTER the listener has handled

the connection, do not expect to see errors in the

listener.log.

Here's an example snippet of an incoming client connection that was

posted to the listener.log:

20-JAN-2009 17:08:45

(CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=D:\oracle\product\10.1.0\Db_1\perl\5.6.1\bin\MSWin32-x86\perl.exe)(HOST=myclient)

Note that the exact timestamp, program name and client host will

often be recorded.Again, once you've located the offending client,

enable tracing (see above) to try to capture the connection

failure.3)Enable server side Oracle Net tracing and capture the

TNS error along with the incoming connection.

Match the PID that accompanies the ORA-609 to the server trace

label.e.g. ORA-609 : opiodr aborting process unknown ospid

(4799_1)*Note the PID

This PID would correspond to server trace

labeled:svr_4799.trc.Check the server trace for either TNS error (the 609

will not appear) and try to locate the originating client

address.If assistance is needed for this investigation, please

open an SR with Oracle Support.

See below for instuctions on enabling Oracle Net server

tracing.

The following details the discovery of the source of

an ORA-609 for a real case:

The alert.log reports the following messages

intermittently but frequently:

Mon Nov 16 22:39:22 2009ORA-609 : opiodr aborting process unknown ospid

(nnnn)

Enabled Oracle Net server tracing:

TRACE_LEVEL_SERVER=16

TRACE_DIRECTORY_SERVER=

TRACE_TIMESTAMP_SERVER=TRUE

DIAG_ADR_ENABLED=off

Reloaded listener and wait for error to appear again.:

ORA-609 : opiodr aborting process unknown

ospid(5233_1)

Note that the server trace file set that corresponded to this event

was namedsvr_5233*.trc.

Of course the timestamps of the alert.log event and the server

trace creation matched as well.

A review of the server trace showed only an EOF failure and

theTNS-12537 error:

Read unexpected EOF ERRORnserror: nsres: id=0, op=68, ns=12537

In this particular case, there was no information about the client

in the trace. This is atypical for a server trace.It may be that the client aborted before all the

client information was posted to the

file.However, there was post in the listener.log for an

emagent connection that was established at the same point in

time.

Here's an excerpt from a listener.log entry where an emagent

establishes a connection:

PROGRAM=D:\oracle\product\10.1.0\Db_1\bin\emagent.exe)

Checked the EM Agent traces and logs and discovered the following

entry:

Fatal NI connect error 12547, connecting

to:(LOCAL=NO)VERSION INFORMATION:TNS for Solaris: Version 11.1.0.7.0 -

ProductionOracle Bequeath NT Protocol Adapter for Solaris:

Version 11.1.0.7.0 - ProductionTCP/IP NT Protocol Adapter for Solaris: Version

11.1.0.7.0 - ProductionTime: 16-NOV-2009 22:39:22****Tracing to file:

/backup/sid_traces/sqlnetlog/svr_5233.trcTns error struct:ns main err code: 12547TNS-12547: TNS:lost contactns secondary err code: 12560nt main err code: 0nt secondary err code: 0nt OS err code: 0****Note the name of the server trace which contains

the PID:svr_5233.trcAlso, the timestamp of the agent event matches the

timestamp of the alert.log error.

Check the following locations for EM Agent traces. If

working with support on this issue and the EM Agent is suspected,

upload ALL files under:

$ORACLE_HOME/sysman/log/emagent.trc < Single node agent trace

location

$ORACLE_HOME/host/sysman/log/emagent.trc < RAC agent trace

location

It was determined that in this case, the emagent was aborting the

connection before it was complete and then simply reconnecting and

succeeding on the subsequent

try.No errors were reported in the listener log or

listener trace. No errors were returned to the DB

Console.There was no apparent outage of any

kind. No action was taken to

correct the ORA-609 in this

case.It was decided that the message was informational and

completely benign.

Please review the following documents for more information about

timeouts and tracing:Troubleshooting Guide TNS-12535 or ORA-12535 or

ORA-12170

ErrorsConnections that Used to Work in Oracle 10.1 Now

Intermittently Fail with ORA-3113,ORA-3106 or ORA-3136 from

10.2 OnwardsFiles Needed for Troubleshooting an EM 10G Service

Request

if an RDA is not AvailableHow to Enable Oracle SQLNet Client , Server , Listener

,

Kerberos and External procedure Tracing from Net ManagerUsing and Disabling the Automatic Diagnostic

Repository

(ADR) with Oracle Net for 11g

oracle错误12637,TNS-12537 TNSconnection closed ORA-609错误处理相关推荐

  1. plsql 连接oralce数据库,报ora 12557 tns 协议适配器不可加载错误

    使用plsql 连接oracle 数据库报ora 12557 错误: 解决方案: 1:首先确保服务中的service以及监听器都开启 2:F:\app\Administrator\product\11 ...

  2. oracle中srv添加监听服务,Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务...

    Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 解决过程: 1. 找到listener.ora监听文件,具体位置:D:\app\Administrator ...

  3. Oracle 错误代码详解及解决方式--ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  4. python连接oracle报错TNS,python连接oracle数据库报出 ORA-12541: TNS: 无监听程序

    答:方法一: 在oracle_home下找到lsnrctl.exe 输入 start 方法二 可能认不到实例名 在cmd下运行 set oracle_sid=自己数据库的实例名(大多数orcl) 网上 ...

  5. linux下ora-12505,甲骨文临时ORA 12505错误后的Linux启动

    我遇到与Oracle一个很奇怪的现象,也许有人可以帮助我,让我总结一下真正的快:甲骨文临时ORA 12505错误后的Linux启动 我的首选操作系统是Debian的Linux操作系统,我使用的是Ora ...

  6. Oracle的网络三大配置文件(sqlnet.ora、tnsnames.ora、listener.ora)

    Oracle的网络三大配置文件(sqlnet.ora.tnsnames.ora.listener.ora) blog文档结构图: 1  说明 为了使得外部进程能够访问Oracle 数据库则必须配置Or ...

  7. oracle中间人投毒漏洞,Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)的完美解决方法...

    环境:Windows 2008 R2 + Oracle 10.2.0.3 应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener ...

  8. oracle里的tns是什么意思

    oracle里的tns是什么意思 参考http://www.jb51.net/article/44668.htm TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Net ...

  9. PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决

    PL/SQL developer连接oracle出现"ORA-12154:TNS:could not resolve the connect identifier specified&quo ...

  10. 也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

    也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 参考文章: (1)也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符 ...

最新文章

  1. 如何构建一个有效的知识库?
  2. Hibernate的Session会话中get()和load()方法的区别
  3. 关于估时间的一些感想
  4. python快速入门 数据输出和基本类型 常用的循环遍历等
  5. 在桌面养只捣蛋鹅,让 Desktop Goose 陪你一起用Mac
  6. 不要残渣10w+,推荐8个我平时看的公众号
  7. CAS3.5.x(x1)支持OAuth2 server
  8. Phoenix错误信息: Malformed connection url
  9. 2022-2028全球与中国语音疏散系统市场现状及未来发展趋势
  10. 【Hide-and-Seek】《Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization xxx》
  11. Linux上一键部署KMS
  12. asp.net 后台生成二维码及生成带logo的二维码
  13. c语言程序设计书店销售管理系统,C语言课程设计-书店管理系统
  14. 小程序实现image标签的图片铺满整个屏幕,高度自适应
  15. 逻辑思维强的人适合学计算机不,逻辑思维强的人适合什么工作?
  16. 隐私保护模型之——语义匿名模型
  17. python实现简单的四则运算_Python实现简单的四则运算计算器
  18. mysql8修改密码之后无法登陆_解决MySQL8.0安装第一次登陆修改密码时出现的问题...
  19. 台式机下成功在windows10的基础上安装Ubuntu 18.04 LTS 系统(详细教程)
  20. checkmarx : Input path not canocalized 问题解决方法

热门文章

  1. 前端学习(531):什么是等高布局
  2. HardFault_Handler问题查找方法
  3. 移动端H5终端适配方案
  4. 8位可控加减法器_行测高分技巧-资料分析之有效数字加减法取舍
  5. c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法
  6. scratch少儿编程第一季——07、人要衣装佛靠金装——外观模块
  7. php opcache 详解
  8. cdoj 1246 每周一题 拆拆拆~ 分解质因数
  9. SChema中group指示器的使用
  10. BZOJ-1045 糖果传递