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!

Hello world

My name is Simon Krenger, I am a Technical Account Manager (TAM) at Red Hat. I advise our customers in using Kubernetes, Containers, Linux and Open Source.

Elsewhere

  1. GitHub
  2. LinkedIn
  3. GitLab