Oracle ManagedDataAccess - 连接请求超时 - 池

时间:2015-06-20 15:33:25

标签: c# oracle visual-studio-2010 odp.net-managed

我终于承认失败并寻求帮助。我已经做了我能想到的一切来解决这个问题,但似乎我无法做到这一点。

我正在与: VS2010 C# Oracle 12c ODP.Net Managed121012

我继承了一个同时使用托管和非托管数据访问dll的应用。它一直在工作,直到我卸载oracle。然后我为64位机器重新安装了11g客户端。我立刻注意到安装了框架2只有dataaccess dll,但我仍然继续。然后我将所有oci和ora dll从client_1文件夹复制到我的应用程序的bin目录中,并将Oracle.DataAccess.dll复制到我的bin目录中。我还将Oracle.ManagedDataAccess.dll复制到此文件夹中。

只要我没有更改数据集上的任何内容,我的应用程序就会成功运行。我会很乐意继续这样做,除了我必须创建更多的数据集。当我尝试添加新数据集时,我的数据源连接向导下拉列表为空。然后我尝试重新创建连接,但只能看到.Net Framework DProviders。我看不到托管服务提供商。在某些时候,我也得到了这个错误“当前没有选择数据提供者”。

认为这是因为未安装托管服务提供商我卸载了11g客户端并安装了64位12c客户端并将所有相关文件复制到我的应用程序的bin中。我在app.config文件中添加了以下行:

      <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess" />

  <system.data>
<DbProviderFactories>
  <remove invariant="Oracle.DataAccess.Client" />
  <remove invariant="Oracle.ManagedDataAccess.Client" />
  <add name="ODP.NET, Managed Driver" invariant="Oracle.DataAccess.Client"
         description="Oracle Data Provider for .NET, Managed Driver"
         type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />     
</DbProviderFactories>

在此之后,我现在可以看到一些旧的数据源,但我无法连接到我的数据库,因为我收到“连接请求超时”。当我手动创建一个新连接时,我可以很好地与非托管提供程序连接,但得到一个连接请求超时错误。

我真的在绳子的尽头,在使用绳子之前真的很欣赏新鲜的眼睛。

提前致谢。

2 个答案:

答案 0 :(得分:13)

切换到托管驱动程序后,我遇到了同样的问题。甚至使用本机和托管驱动程序编写了测试应用程序。结论是托管驱动程序需要比本机驱动程序更多的时间来打开新连接。对我们有用的解决方案是使用连接字符串设置大的连接超时。

<connectionStrings>
    <add name="ConnectionString" connectionString="data source=xxxx;user id=xxxx;password=xxxx;persist security info=false;Connection Timeout=120;" />

</connectionStrings>

答案 1 :(得分:0)

以防万一在mono 4.8上运行时遇到此问题。似乎存在同步错误,导致Oracle客户端在使用所有连接后无法扩展连接池。见bug