私はついに敗北を認め、助けを求めています。私はこの問題を解決するために考えられるすべてのことをしましたが、私はそれを行うことができないようです。
使用しているもの:VS2010 C#Oracle 12c ODP.Net Managed121012
マネージデータアクセスdllとアンマネージデータアクセスdllの両方を使用するアプリを継承しました。 Oracleをアンインストールするまでは機能していました。次に、64ビットマシン用に11gクライアントを再インストールしました。フレームワーク2のdataaccessdllしかインストールされていないことにすぐに気づきましたが、とにかく続けました。次に、すべてのociおよびora dllをclient_1フォルダーからアプリのbinディレクトリーにコピーし、Oracle.DataAccess.dllもbinディレクトリーにコピーしました。 Oracle.ManagedDataAccess.dllもこのフォルダにコピーしました。
データセットで何も変更しない限り、アプリケーションは正常に実行されました。より多くのデータセットを作成する必要があることを除いて、私はこのように喜んで続けていただろう。新しいデータセットを追加しようとすると、データソース接続ウィザードのドロップダウンリストが空白になりました。次に、接続を再作成しようとしましたが、.Net FrameworkDProvidersしか表示されませんでした。マネージドプロバイダーが表示されませんでした。ある時点で、「現在データプロバイダーが選択されていません」というエラーも発生しました。
管理対象プロバイダーがインストールされていないためだと考えて、11gクライアントをアンインストールし、64ビット12cクライアントをインストールして、関連するすべてのファイルをアプリのビンにコピーしました。 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>
この後、古いデータソースの一部を確認できますが、「接続要求がタイムアウトしました」というメッセージが表示されるため、データベースに接続できません。新しい接続を手動で作成すると、アンマネージプロバイダーと正常に接続できますが、接続要求のタイムアウトエラーが発生します。
私は本当にロープの終わりにいます、そして私がロープを使う前に新鮮な目を本当に感謝します。
前もって感謝します。
マネージドドライバーに切り替えた後も同じ問題が発生しました。ネイティブドライバーとマネージドライバーの両方を使用してテストアプリを作成しました。結論として、管理対象ドライバーは、ネイティブドライバーよりも、新しい接続を開くのにはるかに多くの時間を必要とします。私たちのために働いた解決策は、接続文字列を使用して大きな接続タイムアウトを設定することでした。
<connectionStrings>
<add name="ConnectionString" connectionString="data source=xxxx;user id=xxxx;password=xxxx;persist security info=false;Connection Timeout=120;" />
</connectionStrings>
モノ4.8で実行しているときに誰かがこの問題に苦しんでいる場合に備えて。同期のバグがあるようです。すべての接続が使用されると、Oracleクライアントは接続プールを拡張できなくなります。これを参照してください バグ