“ORA-01012” error message when trying to connect t

2019-06-22 21:12发布

问题:

Using C# and Oracle Data Provider for .NET (ODP) I made a long query to the database, then I end the connection on the server side using TOAD. After that, the subsequent calls to the database, even creating a new OracleConnection object, throw the following error:

ORA-01012: not logged on
Process ID: xxx
Session ID: yyy Serial number: zzz

Where Process ID and Session ID are the identifiers I used to end the connection.

It seems like when I end the connection to the Oracle database on the server side, the broken connection is returned to the connection pool. And when the C# client code (using ODP) opens a new connection, the broken connection that was returned to the connection pool may be retrieved.

Any ideas on how to fix this behaviour?

BTW I'm using Oracle client 10

回答1:

I solved my problem by setting to true the "Validate Connection" property in the connection string.

you can read more here

As a warning I quote the Oracle docs.

The Validate Connection attribute validates connections coming out of the pool. This attribute should only be used when absolutely necessary because it causes a server round-trip to the database to validate each connection right before it is provided to the application. If invalid connections are uncommon, developers can create their own event handler to retrieve a new connection, rather than using Validate Connection. This generally provides better performance.