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

2019-06-22 20:47发布

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条回答
相关推荐>>
2楼-- · 2019-06-22 21:27

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.

查看更多
登录 后发表回答