1

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

我们的 Web 应用程序每天都会出现一次这个问题:ODP-1000 "Connection request timed out"。

众所周知,这是一个内存泄漏问题,由于打开的连接没有被关闭和处理。

我们已经仔细检查了我们的代码,并且打开后的所有连接都已关闭和处置。OracleCommand、Oracledatareader 等所有 odp.net 对象在使用后都会被丢弃。

在 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 Pool Size 数量的池连接。”

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

就像是:

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

0 回答 0