Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Oracle错误:池连接请求超时_C#_.net_Oracle_Oracle12c_Oracle.manageddataaccess - Fatal编程技术网

C# Oracle错误:池连接请求超时

C# Oracle错误:池连接请求超时,c#,.net,oracle,oracle12c,oracle.manageddataaccess,C#,.net,Oracle,Oracle12c,Oracle.manageddataaccess,我使用Oracle12c和用C#编写的应用程序,并使用Oracle.ManagedDataAccess.dll处理数据库连接 我们的一款产品在运行多年后偶尔会抛出此异常: Oracle.ManagedDataAccess.Client.OracleException (0xFFFFFC0C): Pooled connection request timed out at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionSt

我使用Oracle12c和用C#编写的应用程序,并使用Oracle.ManagedDataAccess.dll处理数据库连接

我们的一款产品在运行多年后偶尔会抛出此异常:

Oracle.ManagedDataAccess.Client.OracleException (0xFFFFFC0C): Pooled connection request timed out
   at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
   at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
我知道这个错误的原因。查看代码时,没有处理OracleConnection或OracleCommand对象。因此,这些连接正在建立,直到它最终抛出此异常为止

解决办法是直截了当的。使用语句将它们包装在
中。我不需要帮助

然而,我感兴趣的是为什么这个问题现在已经开始。该软件已运行多年,没有问题。他们做了一些数据库维护,更新了同一台服务器上的其他软件,然后这个问题开始了。我不知道他们做了什么

应用程序中的连接字符串未指定任何池属性

是否存在oracle db设置,该设置会导致数据库中同时连接的数量减少,从而导致这种情况开始发生

UPATE

我编写了一个小测试应用程序来检查限制。 它只是循环并打开一个连接,执行一个基本查询,而不处理连接。 在我的测试系统上,它在640次循环之后开始抛出这个异常。每次我运行它时,它会有10个循环


是什么设置了这个限制?

如果我没记错的话,一个调用dispose的using块正在有效地调用connection对象中的“Close方法”,这个方法调用就是将池连接发送回池并使其再次可用的方法,您在循环中调用Close方法吗?如果没有,连接将保持活动状态,并且不会返回到您的池。@Jesussala正如我在问题中提到的,我知道如何在代码中修复它。我想问的是为什么它现在开始显示这个问题。Oracle DB中是否存在一些可以更改以减少最大连接数或会话数的设置。您是否检查了Oracle设置中的空闲连接超时和相关设置是否有更改?如果除了不返回池(可能回滚任何隐式活动事务)之外,您没有有效地关闭连接,这可能会导致将连接保留为“活动”更长时间,最终会耗尽您的池。如果这些设置是“较低”的,可以解释您当前遇到的问题。我有相同的错误,最糟糕的是,在第一次超时错误之后,oracle即使手动清理池连接也无法恢复,在重新启动web之前,我会收到相同的错误。