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

Jua*_*gui 5 c# odp.net oracle10g

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

ORA-01012: not logged on
Process ID: xxx
Session ID: yyy Serial number: zzz
Run Code Online (Sandbox Code Playgroud)

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

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

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

顺便说一下,我正在使用Oracle客户端10

Jua*_*gui 5

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

你可以在这里阅读更多

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

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