Oracle ODP.NET托管驱动程序和连接池问题

Oracle ODP.NET托管驱动程序和连接池问题,oracle,ado.net,odp.net-managed,Oracle,Ado.net,Odp.net Managed,我知道这应该是Oracle的一个问题,但已经有四个线程在问同样的问题,他们没有得到答案。也许stackoverflow中的某个人可以帮助我,因为我们在托管驱动程序方面遇到了大量问题。我们希望这个社区的人能知道答案 从11个非托管驱动程序迁移到12c托管驱动程序(Nuget的4.121.2.0)后,我们的系统从Oracle获得异常。这是调用堆栈: Oracle.ManagedDataAccess.Client.OracleException (0x80004005): Request timed

我知道这应该是Oracle的一个问题,但已经有四个线程在问同样的问题,他们没有得到答案。也许stackoverflow中的某个人可以帮助我,因为我们在托管驱动程序方面遇到了大量问题。我们希望这个社区的人能知道答案

从11个非托管驱动程序迁移到12c托管驱动程序(Nuget的4.121.2.0)后,我们的系统从Oracle获得异常。这是调用堆栈:

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): Request timed out  
   bei OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)  
   bei OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)  
   bei OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)  
   bei Oracle.ManagedDataAccess.Client.OracleConnection.Open()  
我们做了一些测试,似乎池没有正常工作。据我们所知,即使您不做任何事情就让系统保持运行,池中的连接也会死掉。当这种情况发生时,系统将无法再工作,因为它无法使用任何连接。连接似乎无效,但驱动程序没有回收这些连接。在这种情况下,我们需要终止进程。由于这是一个作为服务工作的业务服务器,这是一个主要问题

与以前的非托管驱动程序相同的软件根本没有问题,因此它与池的大小或未处理的连接无关(正如我所说,我们可以在几乎不向系统查询的情况下重现问题)


你们有没有人听到过类似的消息,可以帮助我们吗?非常感谢您提供的任何提示。

无法将此添加到评论中,所以请看这里,以防万一有人像我一周前那样来到这里

我们的问题是从Oracle.DataAccess切换到Oracle.ManagedDataAccess时出现的问题

第一个运行正常,但随着托管驱动程序的升级,一切都陷入了地狱(代码中没有任何更改)

我们已经调试了所有的东西(或者至少我们认为是这样),但什么都没有出现,直到一位同事提出了一些关于使用CommandBehavior参数调用时未正确处理的阅读器的问题

正如我所说的,我们认为我们已经进行了双重和三重检查。。。但这种读卡器调用是问题所在(顺便说一句,它不在我们的DB访问模块中,这使我们至今无法看到它…整理您的代码!):

当使用托管驱动程序以这种方式调用时,读卡器似乎不会关闭自身

只是打电话

rd.Close()   

在从读者那里检索到必要的数据后,这个技巧就成功了。

这方面有什么新的东西吗?我们目前正面临这个问题,不知道如何解决它
rd.Close()