【问题标题】:Oracle.DataAccess.Client DependenciesOracle.DataAccess.Client 依赖项
【发布时间】:2016-02-04 04:59:56
【问题描述】:

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

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

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

我知道有一些关于这个的旧帖子,但它很老,而且列出的 dll 已经过时了。我找不到其中一些。

我为 ODAC12 安装了 ODP.net,并检索了此 post 中列出的所有 dll。我也试过这个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

【问题讨论】:

  • 您愿意为第三方连接器付费吗?换句话说,如果你需要的话,你的雇主愿意花几百美元购买一些软件,这项工作是否适合?
  • 第三方连接器的名称是什么?
  • 不要尝试通过 dll 来执行这个 dll 充满问题,而是查看“XCOPY”安装。它更小,您可以将其嵌入到您自己的安装中。 oracle.com/technetwork/topics/dotnet/downloads/index.html
  • 自 2009 年左右以来,我一直在使用 DevArt 的 dotConnect for Oracle。它确实需要花钱,但它消除了对本地 Oracle 客户端(如托管 ODP)的依赖,并且仍然支持批量等高级 OCI 功能插入和更新。当然,所有托管 DLL 都可以进行 GAC 化或本地化。

标签: c# .net oracle dll odp.net


【解决方案1】:

我设法让它工作。

  • 下载适合您项目的 ODAC 的良好版本。
  1. 对于32bit 项目,您需要下载 ODAC12..._x32.zip (ODAC121021Xcopy_32bit.zip)。

  2. 对于64bit 项目,您需要下载 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 版本,在 odp.net4odp.net20 文件夹中找到这两个 dll:
  1. OraOps12.dll

  2. Oracle.DataAccess.dll

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

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

UPD:最新版本的 ODP.NET 提供程序(从 here 下载)的文件名中包含“19”后缀而不是“12”:

  1. oci.dll

  2. ociw32.dll

  3. orannzsbb19.dll

  4. oraociei19.dll

  5. oraons.dll

  6. OraOps19.dll

  7. Oracle.DataAccess.dll

【讨论】:

  • 我认为最好从文件夹instantclient_12_1复制所有文件(相当于安装Oracle实例客户端)。我可能会在你的环境中工作,但在稍微不同的条件下它可能会失败。
  • 注意不要从错误版本的 Oracle 中复制 DLL。在我从同一版本的 Oracle Instant Client 获得所有 DLL 之前,我确实遇到了这个错误:stackoverflow.com/questions/38589549/…
【解决方案2】:

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

【讨论】:

  • 你能添加一个链接到那个文件吗?
  • link您可以在页面上选择版本
【解决方案3】:

您似乎没有安装 Oracle Instant 客户端(或任何其他版本的 Oracle 客户端)。这是非托管 ODP.NET 提供程序的先决条件。

安装 Oracle Instant 客户端就可以了。否则你只会遇到麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2014-08-20
    • 2016-02-18
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多