Our solution to ORA-12571
After a database update from 10.2.0.1.0 to 10.2.0.5 on Windows Server 2003, we encountered the ORA-12571 error when starting the Application Server. In the log files, the error showed up as an SQLException:
java.sql.SQLException: Io exception: Connection reset by peer: socket write error
I then used TNSPing to validate the connection to the database and I basically received this result:
OK OK OK ORA-12571: TNS:PACKET WRITER FAILURE
This means that there is a problem with the TNS Listener. I checked the listener log (
$ORACLE_HOME\network\log\listener_name.log) for errors and saw this:
11-OCT-2010 11:50:10 * ping * 0 11-OCT-2010 11:50:11 * ping * 0 11-OCT-2010 11:50:11 * ping * 0 11-OCT-2010 11:51:10 * <unknown connect data> * (ADDRESS=(PROTOCOL=tcp)(HOST=10.140.0.12)(PORT=2226)) * establish * <unknown sid> * 12525 TNS-12525: TNS:listener has not received client's request in time allowed TNS-12535: TNS:operation timed out TNS-12606: TNS: Application timeout occurred
I tried multiple approaches to solve the problem, including the complete reinstallation of everything related to TNS (listener, tnsnames) and a machine reboot. But nothing helped. Finally we decided to use Wireshark for further investigation.
After firing up Wireshark we quickly found the problem. It turns out that there were two SYNs from the client, both on the same interface. Suspecting an error in the network driver, we then disabled the Trunking mode of the network card and enabled the Load Balancing mode, which completely solved the problem.
It seems that in the Oracle Patchset, there was a change to the TNSLSNR which alters the behaviour when the listener receives multiple requests from the same client. After changing the network driver mode, the problem disappeared.
Thank you, Wireshark!