參考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。根本原由于client连接不正常。



client通过监听器连接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.client连接到监听器

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

3.第2步完毕后,监听将client的连接转入此专有进程dedicated process

4.server进程收到从监听来的连接信息后。须要继续与client的连接进行handshake

5.server进程与client进程交换建立会话须要的信息,如username、password等

6.以上OK后。SESSION OPEN。

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



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

使用跟踪来排查:

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

对于这样的问题的排查,使用listener.log或者SQLNET的跟踪效果不太好,由于每秒可能有非常多连接同一时候SQLNET的跟踪未提供很多其它的client信息。

此时能够尝试使用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)

可能原因:

client卡住、崩溃;连接被防火墙KILL;client超时设置;client连接后立马关闭;网络不稳定。

须要检查clienttnsnames.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

    

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

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

  1. 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等问题的解决方法: Troublesho ...

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

    最近在多个大型系统中遇到此问题,一般来说假设client未反映异常的话能够忽略的. 假设是client登陆时遇到ORA-12170: TNS:Connect timeout occurred,能够參考 ...

  3. Oracle ALERT日志中常见监听相关报错之二:ORA-3136错误的排查 (转载)

    近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的.如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http:/ ...

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

    <html> <head> <script type="text/javascript"> // 页面监听js报错问题 onerror=hand ...

  5. java里监听相关ActionListene的理解。========此代码是错误的,

    package com.aa; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event. ...

  6. JS中常见的几种报错类型

    1.SyntaxError(语法错误) 解析代码时发生的语法错误 var 1a; //Uncaught SyntaxError: Invalid or unexpected token 变量名错误 c ...

  7. 11.2.0.1升级到11.2.0.4报错之中的一个:UtilSession failed: Patch 9413827

    UtilSession failed: Patch 9413827 requires component(s) that are not installed in OracleHome. These ...

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

    15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...

  9. spring中配置监听队列的MQ

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

随机推荐

  1. System.Drawing.Design.UITypeEditor自定义控件属性GetEditStyle(ITypeDescriptorContext context),EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  2. bash 正则表达式匹配,一行文本中 “包含 ABC” 并且 “不包含 XYZ”

    bash 正则表达式匹配,一行文本中  “包含 ABC”  并且  “不包含 XYZ” A文件: XXXX ABC XXX4444444444444444XXXX ABC XXX XYZ6666666 ...

  3. Scrapy在win7 32位的安装及依赖包

    Scrapy,一个网络爬虫的框架,首先第一步肯定是安装. 参考网上的文章. 安装过程中需要用到pip工具,请自行安装. 1.安装python 这个是必须的,既然都用到scrapy了,肯定已经安装了py ...

  4. 正确认识Android的内存管理机制,合理关闭进程 (一)

    随着大家收货后会有很多乐粉晒内存,为啦方便大家,在网上搜集了一些相关Andriod管理的相关机制合理管理内存,整理下发个贴. 首先要知道Android系统是基于Linux 2.6内核开发的开源操作系统 ...

  5. Cookie设置HttpOnly,Secure,Expire属性

    在eclipese中创建Web工程时,有个dynamic web module version选项,首先解释下这个选项的意思: http://stackoverflow.com/questions/3 ...

  6. SPOJ 962 Intergalactic Map (从A到B再到C的路线)

    [题意]在一个无向图中,一个人要从A点赶往B点,之后再赶往C点,且要求中途不能多次经过同一个点.问是否存在这样的路线.(3 <= N <= 30011, 1 <= M <= 5 ...

  7. C# 中类和结构的区别

    转角撞倒猪原文C# 中类和结构的区别

  8. [Tommas] 测试用例覆盖率(一)

    一.测试用例的切面设计 所谓测试切面设计,其实就是测试用例大项的划分.测试用例划分的经典方法是瀑布模型,也就是从上到下,逐渐细分,大模块包括小模块,小模块包括更小的模块.但仅仅如此是不够的,我们还要从 ...

  9. activemq p2p方式

    package ch02.chat; import java.io.Serializable; import javax.jms.Connection; import javax.jms.Connec ...

  10. IGT一道笔试题

    1到n连续的n个数 输入m 得出m个有序序列 比如 输入为n=5 ,m=3 则输出 543 542 541 532 531 521  432 431 421 321 当前长度为i,每个位上的取之范围为 ...