尝试连接到Oracle数据库时出现“ORA-01012”错误消息

时间:2012-06-13 19:36:13

标签: c# oracle10g odp.net

使用C#和Oracle Data Provider for .NET(ODP)我对数据库进行了长时间查询,然后使用TOAD结束服务器端的连接。之后,对数据库的后续调用,甚至创建新的OracleConnection对象,都会抛出以下错误:

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

其中进程ID和会话ID是我用来结束连接的标识符。

似乎当我在服务器端结束与Oracle数据库的连接时,断开的连接将返回到连接池。当C#客户端代码(使用ODP)打开新连接时,可能会检索返回到连接池的断开连接。

有关如何解决此问题的任何想法?

BTW我正在使用Oracle客户端10

1 个答案:

答案 0 :(得分:5)

我通过将连接字符串中的“Validate Connection”属性设置为true来解决我的问题。

您可以阅读更多here

作为警告,我引用了Oracle文档。

  

Validate Connection属性验证来自的连接   游泳池。只有在绝对必要时才应使用此属性   因为它导致服务器往返数据库以验证每个   连接在提供给应用程序之前。如果无效   连接不常见,开发人员可以创建自己的事件   处理程序以检索新连接,而不是使用Validate   连接。这通常会提供更好的性能。