首页 > 解决方案 > 从 Oracle 托管数据访问 c# 中间歇性 Oracle 连接请求超时

问题描述

我正在使用 Oracle.ManagedDataAccess (v4.122.19.1) 从 asp.net MVC (.NetFramework v4.6.1) Web 应用程序连接到我的 Oracle 数据库。

自过去 4 天以来一直运行良好。突然,有一天 Oracle ManagedDataAcess 连续抛出连接超时错误(这会减慢整个系统的速度),但一两分钟后,一切都恢复正常,系统运行平稳。下面给出了发生连接超时错误时的消息和堆栈跟踪。

Message: Connection request timed out
Error code : -2147467259
Number : -1000
HResult : -2147467259

   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()
   at Repository.DBProvider.GetConnection(Boolean openConnection) in ***\Repository\DBProvider.cs:line 21
Oracle Data Provider for .NET, Managed Driver

我尝试了以下修复

 <oracle.manageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="SQLNET.AUTHENTICATION_SERVICES" value="null" />
      </settings>
    </version>
  </oracle.manageddataaccess.client>

但得到另一个错误如下

ORA-12649: Native Services: Unknown encrpytion or data integrity algorithm
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()
   at Repository.DBProvider.GetConnection(Boolean openConnection) in ***\Repository\DBProvider.cs:line 22
Oracle Data Provider for .NET, Managed Driver

我找到了一些其他类似的解决方案,但没有锻炼。

注意:我的 Web 应用程序池运行 32 位模式。

任何帮助,将不胜感激。

标签: c#asp.netoraclemodel-view-controlleroracle-manageddataaccess

解决方案


推荐阅读