2

我有一个应用程序,它使用 ODP.net 将大约 10000 个条目插入和更新到 OracleDatabase 中的几个表中。我已将工作分成 100 个条目。

起初,应用程序为每个条目打开和关闭 oracleconnection。该应用程序在某些条目块上运行良好,但过了一段时间(并不总是相同)它只是停止运行,它仍在使用内存但没有 CPU 并且没有引发错误。我发现它是在应用程序调用 OracleConnection Close 方法时。

我已将其更改为在应用程序开始和结束时打开和关闭以及连接,一切都很好。

尽管为每个条目打开和关闭连接的事实不是正确的方法,但我的问题是为什么它只是停在 OracleConnection 的方法 Close() 处?

有人有想法吗?

提前致谢。

4

1 回答 1

0

我可以提出两个原因,这两个都是我以前见过的。

首先,如果您有一个影响大量记录的长时间运行的连接,则可能由于时间(或者某些东西阻止了插入/更新)并且连接池管理器正在尝试重新声明和回收连接。

另一个很难调试的问题是您的连接可能会通过防火墙,而防火墙正在丢弃长时间运行的连接。如果是这种情况,您可能会在从池中打开新连接时偶尔遇到问题 - 它应该可以使用,但在您尝试打开它时失败(我忘记了确切的症状和错误消息,因为这是几年前的事了) .

于 2012-08-20T14:53:06.327 回答