Oracle错误:池连接请求超时

时间:2019-03-13 16:07:15

标签: 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(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对象。因此,这些连接不断建立,直到最终引发此异常。

解决方法很简单。将它们包装在Using语句中。我不需要帮助。

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

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

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

UPATE

我写了一个小测试应用程序来检查限制。 它只是循环并打开连接,执行基本查询,并且不处理连接。 在我的测试系统上,它在640ish循环后开始引发此异常。每次运行它时,它都会产生10个循环。

设置此限制是什么?

0 个答案:

没有答案