ALERT日志中常见监听相关报错之一:ORA-609错误的排查

参考MOS文档有:

Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (文档 ID 1121357.1)

Alert.log shows ORA-609 with TNS-12537: TNS:connection closed (文档 ID 1538717.1)

Fatal NI Connect 12560‘ And ‘ORA-609 Opiodr Aborting Process‘ Errors In The Alert Log (文档 ID 987162.1)

数据库的ALERT日志中常会见到ORA-609、ORA-3136/ORA-609 TNS-12537 and TNS-12547 or TNS-12170  12170, ‘TNS-12535等相关错误,对此类型问题进行整理归纳,如下:

1.ORA-609错误的排查指南:

Alert log 可以看到如下错误信息:

Fatal NI connect error 12537, connecting to:

(LOCAL=NO)

VERSION INFORMATION:

TNS for Linux: Version 11.2.0.3.0 - Production

Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.3.0 - Production

TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.3.0 - Production

Time: 26-FEB-2013 02:23:51

Tracing not turned on.

Tns error struct:

ns main err code: 12537

TNS-12537: TNS:connection closed

ns secondary err code: 12560

nt main err code: 0

nt secondary err code: 0

nt OS err code: 0

opiodr aborting process unknown ospid (28725) as a result of ORA-609

First an explanation of this kind of errors.

The message

opiodr aborting process unknown ospid (.....) as a result of ORA-609

is just a notifications that oracle database closed (aborted) a dedicated process because of ORA-609.

ORA-609 means  "could not attach to incoming connection" so the database process was ‘aborted‘ (closed) because it couldn‘t attach to the incoming connection passed to it by the listener.

The reason for this is found in the sqlnet error stack, in our case is:

TNS-12537: TNS:connection closed.

Basically the dedicated process didn‘t have a client connection anymore to work with.

此报错类似通知:ORACLE因为ORA-609关闭或者叫中止了一个到数据库的专有连接--ospid (28725)。

ORA-609错误原因是:无法与进入的连接进行联系,所以无法将此连接转入监听器,所以数据库的process中止此进程。

此时报错TNS-12537: TNS:connection closed,根本原因为客户端连接不正常。

客户端通过监听器连接ORACLE数据库的过程:

1.    Client initiates a connection to the database so it connects to the listener

2.    Listener starts (fork) a dedicated database process that will receive this connection (session)

3.    After this dedicated process is started, the listener passes the connection from the client to this process

4.    The server process takes the connection from the listener to continue the handshake with the client

5.    Server process and client exchange information required for establishing a session (ASO, Two Task Common, User logon)

6.    Session is opened

简单说就是:

1.客户端连接到监听器

2.监听派生fork一个子进程,交转化为专有服务器进程dedicated database process

3.第2步完成后,监听将客户端的连接转入此专有进程dedicated process

4.服务器进程收到从监听来的连接信息后,需要继续与客户端的连接进行handshake

5.服务器进程与客户端进程交换建立会话需要的信息,如用户名、密码等

6.以上OK后,SESSION OPEN。

在介于3、4步时客户端连接关闭,dedicated database process与客户端通信时发现客户端关闭了。

###############################

使用跟踪来排查:

文档:Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (文档 ID 1121357.1)

对于这种问题的排查,使用listener.log或者SQLNET的跟踪效果不太好,因为每秒可能有很多连接同时SQLNET的跟踪未提供更多的客户端信息。

此时可以尝试使用OS层面的跟踪。

如:1111为监听进程,ps -ef|grep tnslsnr   查出

LINUX: strace -rf -o /tmp/lsnr1.log -p 1111

HP-UX: tusc -T hires -afpo /tmp/lsnr1.log 1111

如果使用TRACE跟踪,如下:

3. Oracle Net Level 16 Server tracing. Add to server side SQLNET.ORA file

DIAG_ADR_ENABLED=off                  # Disable ADR if version 11g

TRACE_LEVEL_SERVER = 16               # Enable level 16 trace

TRACE_TIMESTAMP_SERVER = ON           # Set timestamp in the trace files

TRACE_DIRECTORY_SERVER = <DIRECTORY>  # Control trace file location

TRACE_FILELEN_SERVER =<n>   #Control size of trace set in kilobytes eg 20480

TRACE_FILENO_SERVER =<n>       #Control number of trace files per process

使用Errorstack方法如下:

4. Errorstack: Setup errorstack to capture failure. This can be particular useful when capturing an Oracle Net client trace is not feasible.

SQL> alter session set events ‘609 errorstack(3)‘;

Once a few traces have been collected while the error is reproduced:

SQL> alter session set events ‘609 off‘;

###############################################

关于此问题的解决方法有:

文档:Alert.log shows ORA-609 with TNS-12537: TNS:connection closed (文档 ID 1538717.1)

可能原因:

客户端卡住、崩溃;连接被防火墙KILL;客户端超时设置;客户端连接后立刻关闭;网络不稳定;

需要检查客户端tnsnames.ora/sqlnet.ora中信息:

possible timeouts in sqlnet.ora in client oracle home:

sqlnet.outbound_connect_time

sqlnet.recv_timeout

sqlnet.send_timeout

tcp_connect_timeout

possible timeout in client connect descriptor (hardcoded in client application or in client tnsnames.ora):

connect_timeout

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-02 08:54:30

ALERT日志中常见监听相关报错之一:ORA-609错误的排查的相关文章

ALERT日志中常见监听相关报错之三:ORA-609 TNS-12537 and TNS-12547 or TNS-12170 TNS-12535错误的排查

1.11G中ALERT日志中有报错ORA-609 TNS-12537 and TNS-12547 or TNS-12170  12170, 'TNS-12535等问题的解决方法: Troubleshooting Guide for TNS-12535 or ORA-12535 or ORA-12170 Errors (文档 ID 119706.1) TNS-12535 / ORA-12535 on Connection to Database (文档 ID 214122.1) 11g: ORA-

ALERT日志中常见监听相关报错之二:ORA-3136错误的排查

近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的. 如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http://blog.csdn.net/haibusuanyun/article/details/14517211#t12 ############### 参考MOS文档有: Troubleshooting Guide for TNS-12535 or ORA-12535 or ORA-12170 Erro

ALERT日志中常见监听错误:ORA-3136错误的排查

[现象] ***********************************************************************   Fatal NI connect error 12170.     VERSION INFORMATION:         TNS for Linux: Version 12.1.0.2.0 - Production         Oracle Bequeath NT Protocol Adapter for Linux: Versio

【js监听报错】页面监听js报错问题

<html> <head> <script type="text/javascript"> // 页面监听js报错问题 onerror=handleErr var txt="" function handleErr(msg,url,l) { txt="本页中存在错误如下:\n\n" txt+="错误:" + msg + "\n" txt+="URL: "

javaScript中常见的几种报错类型

一般我们运行代码的时候,在控制台报错会相应的显示你错误的行数,找到那一行,查找你相应的错误 1.xxx is not defined xxx 没有定义 2.xxx is not a function xxx 不是一个函数 xxx此时是undefined 3.Cannot read property 'xxx' of undefined 不能读取undefined的xxx属性 xxx前面的变量是undefined 4.Cannot set property 'xxx' of null 不能给nul

oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错.错误提示内容如下. 错误分析: 经过查看警告中给出的日志文件 F:\develop\oracle_data\app\Administrator\cfgtoollog

spring中配置监听队列的MQ

一.spring中配置监听队列的MQ相关信息注:${}是读取propertites文件的常量,这里忽略.绿色部分配置在接收和发送端都要配置. <bean id="axx" class="com.ibm.mq.jms.MQQueueConnectionFactory"> <property name="hostName" value="${}" />  <property name="po

【翻译自mos文章】升级到11.2.0.4之后在alert日志中出现 NUMA 警告信息

注:与本文有关的文章为:http://blog.csdn.net/msdnchina/article/details/43763927 升级到11.2.0.4之后在alert日志中出现 NUMA 警告信息 翻译自mos文章:NUMA warning message appear after upgrade to 11.2.0.4 (文档 ID 1600824.1)1 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.4 and

Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差

Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别 Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信.与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流.Unix domain sockets的接口和Internet socke