如何使用ODP.NET强制关闭非活动Oracle会话

时间:2012-08-27 21:39:43

标签: asp.net connection-pooling odp.net

asp.net 2.0使用odp.net 10.1.04连接到Oracle 10g。

我们的网络应用程序每天都有一次这个问题:ODP-1000“连接请求超时”。

正如我们所知,这是一个内存泄漏问题,由于打开的连接无法关闭和处理而导致。

我们仔细检查了我们的代码,打开后的所有连接都已关闭并处理完毕。所有odp.net对象,如OracleCommand,Oracledatareader都在使用后处理。

在web.config上,这是我们的连接字符串:

<add key="ConnectionString" value="user id=xxxx;data source=XXXX;password=xxxxx;Pooling=True;Connection Timeout=15;Incr Pool Size=5;Decr Pool Size=3;Max Pool Size=300;Min Pool Size=10;Validate Connection=true;"/>

我们已将连接超时增加到60。

由于我们在代码中找不到任何未关闭的连接,当conn.Open收到错误“连接请求超时”时,有没有办法关闭或销毁非活动的Oracle会话?

根据一些信息: http://rainmanalex.wordpress.com/2008/11/13/odpnet-connection-string-attributes/

“调节器线程每隔3分钟生成一次,如果不使用,则关闭池内连接的Decr池大小。”

而不是等待3分钟,是否有任何方法强制关闭非活动连接时收到错误“连接请求超时”?

类似的东西:

If conn.Open gets error "Connection request timed out"
Then
  Destroy inactive Oracle session
  Try again conn.Open 
End If

0 个答案:

没有答案