人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

サーバにあるOracleへクライアントPCのWindowsアプリからODP.NETでの接続で、
普通のOracle Clientでは接続できるのに、Instant Clientからの接続ができません。
「The provider is not compatible with the version of Oracle client」の例外が出ます。
バージョン不一致を訴えていると思われますが、OracleのClientをまったくインストールしない場合にも
同例外が出るので、ODP.NETがクライアントを認識していないと思います。
そもそも、サーバ、クライアント、ODP.NETでバージョンはすべて11.2.0.1.0で統一させています。
なお、Tnsnames.oraは使わず、アプリのコードの中で
Conn.ConnectionString = "User Id=・・・Data Source=((DESCRIPTION = (ADDRESS_LIST = ・・・;"
のように直接記述する方法で、「Oracle Client」では接続に成功しています。
同条件で、「Instant Client」にすると上記例外が出ます。
画像のように「win32_11gR2_client.zip」のOUIにて、インストールタイプを
「InstantClient」のタイプで、「Instant Client」を入れ、
「管理者」タイプで「Oracle Clinet」を試しています。
必ず一旦もう一方を削除してからインストールしています。
「Instant Client」へのパスは通しています。
何かすべきことが抜けているのでしょうか。

1313835668
●拡大する


●質問者: kyoko55
●カテゴリ:コンピュータ
✍キーワード:.NET 2.0 Client ODP Oracle
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● cx20
●450ポイント ベストアンサー

ODP.NET は、

[App]
 ↓
[Oracle.DataAccess.dll]
 ↓
[OraOpsXX.dll](11g の場合は「OraOps11w.dll」)

のような、依存関係を持っています。


今回のケースは、OraOpsXX.dll(ODP.NET のパッケージに含まれるDLL)が無い為に、エラーとなっているものと考えられます。

以下に、事象の説明が記載されていましたので参考まで。

■ Mark Williams :: Blog: ODP.NET: The provider is not compatible with the version of Oracle client

http://oradim.blogspot.com/2009/09/odpnet-provider-is-not-compatible-with.html

原因1:OraOpsXX.dll のバージョンの問題

配置先の Oracle Client + ODP.NET のバージョンが開発環境より古い場合。


原因2:OraOpsXX.dll が見つからない。

ファイルそのものが無い場合等。


原因3:トリッキーな問題

OraOpsXX.dll が参照しているCのランタイム(MSVCRxx.dll)が無い場合等。

参考情報

■ Oracle Data Provider for .NETバージョニング体系

http://download.oracle.com/docs/cd/E16338_01/win.112/b62267/InstallVersioningScheme.htm

◎質問者からの返答

色々調べていただいて、ありがとうございます。

おっしゃるとおり、「OraOps11w.dll」が必要のようですね。

ファイルがあるか等、調べて、無ければ配置して結果をお伝えします。

追記

配置して、実行に成功しました。

同じエラーで悩んでいる人がもっと多いと思ったんですが、意外と情報が少なかったので、有益でした。ちゃんとマニュアルにも記載がありますね。

ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ