Question: Does it really mean cnnection was successfully established when you see the following information in listener.log:
12-OCT-2009 10:03:39 * (CONNECT_DATA=(SID=ORCL)) * (ADDRESS=(PROTOCOL=tcp)(HOST=123.456.1.123)(PORT=3158)) * establish * ORCL * 0
12-OCT-2009 10:03:39 * (CONNECT_DATA=(SID=ORCL)) * (ADDRESS=(PROTOCOL=tcp)(HOST=123.456.1.123)(PORT=3159)) * establish * ORCL * 0
As a big picture, these are the steps for a client connection:
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
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.
Listener log shows the connection was established with no apparent errors. This is because the connection failed AFTER the listener has handed off the connection to the server process.
Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (Doc ID 1121357.1)
Alert.log shows ORA-609 with TNS-12537: TNS:connection closed (Doc ID 1538717.1)