Skip to Main Content

Breadcrumb

May 4th

Question and Answer

Connor McDonald

Thanks for the question, Oracle.

Asked: July 28, 2016 - 9:27 am UTC

Last updated: June 13, 2022 - 8:39 am UTC

Version: 11.2.0.1

Viewed 10K+ times! This question is

You Asked

Hi tom,

In our oracle database setup frequently getting error like -

Fatal NI connect error 12537, 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 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production
Time: 27-JUL-2016 17:24:10
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 (9352) as a result of ORA-609

and Connor said...

From MOS 1538717.1

==================================================

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

APPLIES TO:

Oracle Net Services - Version 11.2.0.1 to 11.2.0.4 [Release 11.2]
Oracle Net Services - Version 12.1.0.2 to 12.1.0.2 [Release 12.1]
Information in this document applies to any platform.

SYMPTOMS

Alert log shows failed incoming connection:

    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
 

CAUSE

First an explanation of this kind of errors.

The message
    opiodr aborting process unknown ospid (.....) as a result of ORA-609
is just a notification 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.

As a big picture, these are the steps for a client connection:

 

Client initiates a connection to the database so it connects to the listener
Listener starts (fork) a dedicated database process that will receive this connection (session)
After this dedicated process is started, the listener passes the connection from the client to this process
The server process takes the connection from the listener to continue the handshake with the client
Server process and client exchange information required for establishing a session (ASO, Two Task Common, User logon)
Session is opened

In the case of the above error the connection from the client was closed somewhere between 3. and 4. So when the dedicated process tries to communicate with the client it finds that connection closed.


To determine the client which hit this problem we can try to match the timestamp of the error from alert log with an entry in listener.log, but this might be difficult in case of a loaded listener with many incoming connections per second.
Server sqlnet trace will not provide any information about the client.

We can enable sqlnet server trace to catch the error (the match is done based on the ospid found in sqlnet server trace file name and the line with ORA-609 error):

    nscon: doing connect handshake...
    nscon: recving a packet
    nsprecv: entry
    nsprecv: reading from transport...
    nttrd: entry
    nttrd: exit
    ntt2err: entry
    ntt2err: Read unexpected EOF ERROR on 15    <<<<<<< error
    ntt2err: exit
    nsprecv: error exit
    nserror: entry
    nserror: nsres: id=0, op=68, ns=12537, ns2=12560; nt[0]=507, nt[1]=0, nt[2]=0; ora[0]=0, ora[1]=0, ora[2]=0
    nscon: error exit
    nsdo: nsctxrnk=0
    nsdo: error exit
    nsinh_hoff: error recving request
 
Server process got an unexpected End Of File on the connection socket passed from the listener.

SOLUTION

It is often possible to eliminate this error by increasing the following sqlnet.ora file value for SQLNET.INBOUND_CONNECT_TIMEOUT.  The default is 60 seconds. 
This parameter is set in the database environment in RDBMS_HOME/network/admin.

Example:  

SQLNET.INBOUND_CONNECT_TIMEOUT=300

See the following note:  Document 1116960.1  11g: ORA-609 TNS-12537 and TNS-12547 or TNS-12170 in 11g Alert.log


Several possible situations can cause this to happen:

    client changed its mind and closed the connection immediately after initiating it
    client crashed
    firewall kills the connection
    some oracle timeout set on client
From all the above causes only the last one can be checked by Oracle Support, because all the others are outside oracle product, they are not under our control/possibility for investigation. 

Because the entry from listener.log contains only CONNECT_DATA and CID related information we need to check the client configuration for any sqlnet  timeouts:

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


==================================================

Rating

  (3 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

A reader, August 11, 2016 - 2:09 pm UTC

Thanks for reply

I have changed the sqlnet.ora file inbound connection timeout but getting the same error So as per my observations to check the connectivity from server through putty or fire a command are also very slow So it is network fluctuation .

I have very much in dba but my observations is this network connectivity problem or it my firewall connection time out to close the connection after certain time.

Thanks
Chris Saxon
August 12, 2016 - 3:19 am UTC

I think you'll need to chat to Support with this one.

A reader, August 11, 2016 - 2:12 pm UTC

I am not very much in dba. I am trying to learn from you.

Fatal NI connect error 12537

Celestinne, June 07, 2022 - 7:04 pm UTC

Fatal NI connect error 12537, connecting to:
(LOCAL=NO)

VERSION INFORMATION:
TNS for Linux: Version 11.1.0.7.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 11.1.0.7.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.1.0.7.0 - Production
Time: 07-JUN-2022 17:56:28
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
ORA-609 : opiodr aborting process unknown ospid (9033_46963202326112)

Connor McDonald
June 13, 2022 - 8:39 am UTC

12560/12537 means we could not successfully talk to the the listener

which could be:
- listener not started
- sqlnet.ora config error
- firewall issues
etc

Check MOS note 555609.1