Oracle.DataAccess.Client依赖项

首先,我想使用Oracle.DataAccess.dll来使用OracleBulkCopy

我想知道我需要能够从数据库中读取的所有dll,然后在Oracle中执行批量复制。 目前,我们只使用一个dll来执行数据库的所有读取,我们使用的是Oracle.ManagedDataAccess.Client 。 但我不能用它来执行bulkCopy。

我不想为用户安装ODP.NET,我想直接在程序中包含dll。 所以我想知道能够在32位和64位中使用Oracle.DataAccess.dll所需的最低dll。

我知道有一些关于这个的老post,但它很安静,列出的dll已经过时了。 我无法找到其中一些事件。

我为ODAC12安装了ODP.net,我在这篇文章中检索了所有列出的dll。 我也尝试过这篇文章 。 列出的dll指出版本11。

我做了一个虚拟项目,打开一个连接,读取一个表并在另一个表中进行批量处理。 我从项目根目录中的post中复制了列出的dll,并在项目中包含了Oracle.DataAccess.dll

当我以64位运行我的程序时,我收到以下错误:

无法加载文件或程序集’Oracle.DataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342′

当我以32位运行它时,我收到此错误:

无法加载DLL’OraOps12.dll’:找不到指定的模块。 (HRESULTexception:0x8007007E)“

我包括的dll是:

  • OCI.DLL
  • OCIW32.DLL
  • Oracle.DataAccess.dll
  • orannzsbb12.dll
  • oraocci12.dll
  • oraociei12.dll
  • OraOps12.dll

我设法让它发挥作用。

  • 下载适用于您的项目的优秀版ODAC。

    1. 对于32位项目,您需要下载ODAC12 …_ x32.zip(ODAC121021Xcopy_32bit.zip)。

    2. 对于64位项目,您需要下载ODAC12 … _ x64.zip

  • 根据您想要的版本(32位对64位)将其解压缩到空文件夹中。

  • 通过在Windows搜索栏中搜索* .dll,在instantclient_12_1文件夹中找到所有dll。 你需要抓住:

  1. OCI.DLL

  2. OCIW32.DLL

  3. orannzsbb12.dll

  4. oraociei12.dll

  5. oraons.dll

  • 根据你的.NET版本这两个dll找到odp.net4odp.net20文件夹:
  1. OraOps12.dll

  2. Oracle.DataAccess.dll

  • 复制那些32位dll或64bit dll并将它们直接放在项目的Output路径中。 例如,在C:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug

  • 通过指向输出路径浏览项目中的Oracle.DataAccess.dll。

在此处输入图像描述

看起来您没有安装Oracle Instant Client(或任何其他版本的Oracle Client)。 这是非托管ODP.NET提供程序的先决条件。

安装Oracle Instant Client,你没事。 否则你只会遇到麻烦。

我遇到过类似的问题; 安装oracle数据访问组件(odac ODTwithODAC122010.zip )以获得解决方案。