Oracle 11g Client(Windows用)が9.2までのデータベースで正常に動作するという投稿をいくつか見ました。しかし、クライアントが11gおよび10gのデータベースに接続する場合でも、それは機能していますか?私の質問は:10gと11gのデータベースに接続するときに異なる構成にするものはありますか?
GACのポリシーについて教えてくれた人もいます。
ありがとう !
Oracle 11g Client(Windows用)が9.2までのデータベースで正常に動作するという投稿をいくつか見ました。しかし、クライアントが11gおよび10gのデータベースに接続する場合でも、それは機能していますか?私の質問は:10gと11gのデータベースに接続するときに異なる構成にするものはありますか?
GACのポリシーについて教えてくれた人もいます。
ありがとう !
通常、新しいクライアントドライバを使用して古いOracleデータベースに接続する場合、たとえば12gクライアントを使用して10gまたは11gデータベースに接続する場合は問題ありません。残りの答えは、プログラムを実行しているコンピュータにOracleクライアントが(おそらく)すでにインストールされている場合に、.Netプログラムで発生する可能性のある技術的な問題に属します。
2014年の更新:
その間、OracleはOracleデータベース用のマネージド.Netドライバーをリリースしました。したがって、ローカルのOracleクライアントをインストールしたり、アプリと一緒にInstant Clientを配信したりする代わりに、ローカル構成に依存せずに管理対象ドライバーのみを配信することをお勧めします。そうすれば、インストールされているクライアント、GAC、Oracleデータベースのバージョンなどに問題はありません。管理対象ドライバは、OracleのWebサイトからダウンロードできます。
以前の回答、マネージドドライバーを使用できない場合でも必要です:
クライアントワークステーションにOracleクライアントがインストールされているかどうかわからない場合に問題が発生します。私が想定しているGACについて話している場合、Oracleクライアントがインストールされているかどうか、インストールされている場合はどのバージョンであるかがわかりません。
インストールされているOracleClientに依存したくない場合は、.NetアプリケーションでOracleInstantClientを提供できます。たとえば、ODAC 11.2リリース4(11.2.0.3.0)をOracle Developer Tools for Visual Studioとともにダウンロードできます。これにより、開発者ワークステーション用のOracle Clientインストール(DataSet開発およびEntityFrameworkのVisual Studioサポート付き)およびすべてが提供されます。インスタントクライアントに必要なファイル。
インスタントクライアントの場合、次のファイルが必要です(ODACインストールのサブフォルダーでファイルを検索してください)。
さらに、Windowsディレクトリから次の.dllファイルが必要です。
アプリケーションの作業ディレクトリ(.exeファイルがある場所)にあるすべてのファイルをコピーするだけです。
さて、それはどのようにGACに属しますか?
Oracleクライアントがクライアントマシンにインストールされている場合、GACにはOracle.DataAccess.dllもあります。また、次のようなポリシーがインストールされている可能性もあります。プログラムが参照しているOracle.DataAccess.dllとは関係なく、GACのOracle.DataAccess.dllバージョンが常に使用されます。上でリンクしたODACをインストールすると、そのファイルは下にあります。
C:\ Windows \ Microsoft.NET \ assembly \ GAC_32 \ Policy.4.112.Oracle.DataAccess \ v4.0_4.112.3.0__89b483f429c47342
その結果、クライアントマシンに別のバージョンのOracle.DataAccess.dllがある場合、Oracle.DataAccess.dllをロードしようとすると(「プロバイダーは互換性がありません...」などのエラーメッセージが表示されます)、.Netアプリケーションは常に例外をスローします。アプリケーションで参照しているものよりもインストールされているOracleClient11。
これを解決するには、パブリッシャーポリシーが無視され、常にバージョンが読み込まれるようにapp.confを構成できます。
<configuration>
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
私はJAVAまたは.Netでこれを行うのに問題はありませんでした。実際、オラクルはそれは完全に問題ないと言っています。
このリリースには、OracleDatabase9.2以降にアクセスできるOracleDatabaseクライアント11.2.0.3が組み込まれています。Oracleは、EntityFramework4.1および4.2を含むMicrosoftVisualStudio2010および.NETFramework4でEntityFrameworkおよびLINQをサポートします。このリリースでは、CodeFirstはサポートされていません。
もちろん、それぞれに接続しながら同じプロセスをテストし、独自のテストで検証することもできますが、問題はないと思います。