“ORA-01012” error message when trying to connect to an Oracle database

為{幸葍}努か 提交于 2019-12-07 04:13:45

问题


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.



来源:https://stackoverflow.com/questions/11022111/ora-01012-error-message-when-trying-to-connect-to-an-oracle-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!