web-dev-qa-db-ja.com

Oracle.DataAccess.Clientの依存関係

まず、OracleBulkCopyを使用するためにOracle.DataAccess.dllを使用したいと思います。

データベースから読み取り、Oracleで一括コピーを実行するために必要なすべてのdllを知りたい。現在、データベースからのすべての読み取りを実行するために1つのDLLのみを使用しており、Oracle.ManagedDataAccess.Clientを使用しています。しかし、それを使用して一括コピーを実行することはできません。

ユーザーのためにODP.NETをインストールしたくありません。プログラムに直接dllを含めたいです。したがって、32ビットおよび64ビットでOracle.DataAccess.dllを使用できるようにするために最低限必要なdllを知りたいです。

これに関する古い投稿があることは知っていますが、静かで古く、リストされているdllは古くなっています。イベントの一部が見つかりません。

ODAC12のODP.netをインストールし、リストされているすべてのdllをこの post で取得しました。 post でも試してみました。リストされたDLLはバージョン11を示しています。

接続を開き、テーブルを読み取り、別のテーブルにまとめるダミープロジェクトを作成しました。リストにあるDLLをプロジェクトのルートの投稿からコピーし、Oracle.DataAccess.dllをプロジェクトに含めました。

プログラムを64ビットで実行すると、次のエラーが発生します。

ファイルまたはアセンブリをロードできませんでした 'Oracle.DataAccess、バージョン= 4.121.2.0、カルチャ=ニュートラル、PublicKeyToken = 89b483f429c47342'

32ビットで実行すると、次のエラーが発生します。

ロードできませんDLL 'OraOps12.dll':指定されたモジュールが見つかりませんでした。(HRESULTからの例外:0x8007007E) "

私が含めたdllは次のとおりです。

  • oci.dll
  • ociw32.dll
  • Oracle.DataAccess.dll
  • orannzsbb12.dll
  • oraocci12.dll
  • oraociei12.dll
  • OraOps12.dll
9
billybob

私はなんとかそれを働かせました。

  • プロジェクトを対象とするODACの適切なバージョンをダウンロードします。

    1. 2bit プロジェクトの場合、ODAC12 ..._ x32.Zip(ODAC121021Xcopy_32bit.Zip)をダウンロードする必要があります。

    2. 64bit プロジェクトの場合、ODAC12 ..._ x64.Zipをダウンロードする必要があります

  • 必要なバージョン(32ビットと64ビット)に応じて、空のフォルダーに解凍します。

  • instantclient_12_1 Windowsの検索バーで* .dllを検索して、すべてのdllをフォルダー化します。つかむ必要があります:

  1. oci.dll

  2. ociw32.dll

  3. orannzsbb12.dll

  4. oraociei12.dll

  5. oraons.dll

  • odp.net4またはodp.net20フォルダは、.NETバージョンに応じて、この2つのdllです。
  1. OraOps12.dll

  2. Oracle.DataAccess.dll

  • これらの32ビットDLLまたは64ビットDLLをコピーして、プロジェクトの出力パスに直接配置します。たとえばC:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug

  • 出力パスをポイントして、プロジェクトのOracle.DataAccess.dllを参照します。

enter image description here

12
billybob

同様の問題が発生しました。ソリューションとして、Oracleデータアクセスコンポーネント(odac ODTwithODAC122010.Zip)をインストールします。

1
engntsn

Oracle Instant Client(または他のバージョンのOracle Client)をインストールしていないようです。これは、アンマネージODP.NETプロバイダーの前提条件です。

Oracle Instant Clientをインストールすれば大丈夫です。さもなければあなたはトラブルを起こすだけです。

0