问题描述:
==========
使用VS.NET链接Oracle时报错:ORA-03114: not connected to Oracle
解决方法:
==========
在打了下面的补丁后,问题依旧:
FIX: A pooled connection is not disposed by Microsoft .NET Managed Provider for Oracle when an exception occurs
http://support.microsoft.com/default.aspx?scid=kb;en-us;830173
产生该原因是ADO.NET将一个无效的Oracle连接放回了连接池,当下一次使用时就会产生问题。所以解决方法是禁用连接池。禁用连接池的方法是在连接字符串中将pooling 设为false。下面的连接是关于连接字符串的信息,供您参考:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoracleclientoracleconnectionclassconnectionstringtopic.asp
最后,通过禁用连接池并在每次session开始的时候关闭连接然后重新建立解决了问题。
问题由于oracle重启或者连接中断而ADO.Net仍然未释放连接所致,
解决方法是通过禁用OracleClient的Pooling,禁用方法是在连接字符串中加上Pooling=false.
另外,据了解,Sql Server重启也会引起Asp.Net类似的问题,如果使用SqlClient,也可以用同样的方法禁用Pooling.
若是OLEDB的连接方式,则在连接字符串中加上OLE DB Services=-4;来禁用Connection Pool.