首页 > 解决方案 > 在同一台计算机上运行的多个控制台应用程序实例具有相同的连接字符串达到最大池大小 - Oracle

问题描述

当我在同一台机器上运行应用程序的 2 个实例时,我收到此错误:

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): Pooled connection request timed out
   at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, OracleConnection connRefForCriteria)
   at Oracle.ManagedDataAccess.Client.OracleConnection.Open()

从我一直在阅读的内容来看,连接池是每个进程的,因此即使两个实例具有相同的连接字符串,它们也不应该共享连接池。

我一直在查看 V$SESSION,我可以看到最大连接数,但它们处于非活动状态并正在等待。当 Connection.Open() 被调用时,我希望使用其中之一,但似乎并非如此。

标签: c#oracleconnection-pooling

解决方案


推荐阅读