C# oracleconnection关闭问题

C# oracleconnection关闭问题,c#,oracle,odp.net,C#,Oracle,Odp.net,我有一个应用程序,它使用ODP.net在OracleDatabase的几个表中插入和更新大约10000个条目。我把这项工作分成了100个条目 首先,应用程序打开和关闭每个条目的oracleconnection。对于某些条目块,应用程序运行良好,但过了一段时间(不总是相同的),它只是停止运行,它仍在使用内存,但没有CPU,也没有抛出错误。我发现是在应用程序调用OracleConnectionClose方法时 我已经将其更改为在应用程序的开始和结束时打开和关闭以及连接,一切都很好 虽然为每个条目打开

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

首先,应用程序打开和关闭每个条目的oracleconnection。对于某些条目块,应用程序运行良好,但过了一段时间(不总是相同的),它只是停止运行,它仍在使用内存,但没有CPU,也没有抛出错误。我发现是在应用程序调用OracleConnectionClose方法时

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

虽然为每个条目打开和关闭连接不是正确的方式,但我的问题是为什么它只是停留在OracleConnection的close()方法上

有人有主意吗


提前谢谢。

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

首先,如果有一个长时间运行的连接影响了很多记录,那么可能是由于时间原因(或者可能有什么东西阻止了插入/更新),连接池管理器正在尝试重新声明和回收连接


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

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

首先,如果有一个长时间运行的连接影响了很多记录,那么可能是由于时间原因(或者可能有什么东西阻止了插入/更新),连接池管理器正在尝试重新声明和回收连接


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

如果没有打开/插入/更新/关闭连接的原始代码,很难说。你能给我看一下密码吗?关上还不够。您还应该调用Dispose,或者更好的方法是,将使用连接的代码放在
using{}
块中。谢谢,自从问题发生以来,代码已经发生了更改,所以我认为实际的代码不会是相关的。我在做双糖。我在关闭方法之前和之后放置了一些跟踪,我拥有的最后一个跟踪是关闭之前的跟踪,所以我认为问题出在关闭方法中。@ShadowWizard我正在监视同样的事情。这就是我要求查看代码非常相关的原因-如果新代码没有
Dispose()
,那么最好添加它。如果没有打开/插入/更新/关闭连接的原始代码,很难说。你能给我看一下密码吗?关上还不够。您还应该调用Dispose,或者更好的方法是,将使用连接的代码放在
using{}
块中。谢谢,自从问题发生以来,代码已经发生了更改,所以我认为实际的代码不会是相关的。我在做双糖。我在关闭方法之前和之后放置了一些跟踪,我拥有的最后一个跟踪是关闭之前的跟踪,所以我认为问题出在关闭方法中。@ShadowWizard我正在监视同样的事情。这就是我要求查看代码相关性的原因-如果新代码没有
Dispose()
,您最好添加它。谢谢,插入更新查询只需几毫秒即可执行,因此连接不会长时间打开。oracle服务器(linux)和应用程序服务器之间没有防火墙。谢谢,插入更新查询只需几毫秒即可执行,因此连接不会长时间打开。oracle服务器(linux)和应用程序服务器之间没有防火墙。