Oracle.DataAccess.Client 依赖项
Oracle.DataAccess.Client Dependencies
首先,我想用Oracle.DataAccess.dll
来使用OracleBulkCopy
。
我想知道我需要能够从数据库中读取的所有 dll,然后在 Oracle 中执行批量复制。目前,我们只使用一个 dll 来执行所有从数据库中读取的操作,我们使用 Oracle.ManagedDataAccess.Client
。但是我不能用它来执行批量复制。
我不想为用户安装ODP.NET,我想直接在程序中包含dll。所以我想知道能够在 32 位和 64 位中使用 Oracle.DataAccess.dll
所需的最低 dll。
我知道有一些关于此的旧 post,但它很旧并且列出的 dll 已过时。我找不到其中一些。
我为 ODAC12 安装了 ODP.net 并且我检索了这个 post. I also tried with with this post 中列出的所有 dll。列出的 dll 指出版本 11。
我做了一个虚拟项目,它打开一个连接,读取一个 table 并将其批量放入另一个 table。我从项目根目录中的 post 复制了列出的 dll,并将 Oracle.DataAccess.dll
包含在项目中。
当我 运行 我的 64 位程序时,出现以下错误:
Could not load file or assembly 'Oracle.DataAccess, Version=4.121.2.0,
Culture=neutral, PublicKeyToken=89b483f429c47342'
当我在 32 位中 运行 时,我得到这个错误:
Unable to load DLL 'OraOps12.dll': The specified module could not be
found. (Exception from HRESULT: 0x8007007E)"
我包含的 dll 是:
- oci.dll
- ociw32.dll
- Oracle.DataAccess.dll
- orannzsbb12.dll
- oraocci12.dll
- oraociei12.dll
- OraOps12.dll
您似乎没有安装 Oracle Instant 客户端(或任何其他版本的 Oracle 客户端)。这是非托管 ODP.NET 提供程序的先决条件。
安装 Oracle Instant 客户端就可以了。否则只会惹麻烦。
我成功了。
- 下载适合您的项目的 ODAC 版本。
对于 32bit 项目,您需要下载 ODAC12..._x32.zip (ODAC121021Xcopy_32bit.zip).
对于 64bit 项目,您需要下载 ODAC12..._x64.zip
根据您想要的版本(32 位与 64 位)将其解压缩到一个空文件夹中。
通过在 windows 搜索栏中搜索 *.dll,在 instantclient_12_1
文件夹中找到所有 dll。你需要抓住:
oci.dll
ociw32.dll
orannzsbb12.dll
oraociei12.dll
oraons.dll
- 根据您的 .NET 版本,在
odp.net4
或 odp.net20
文件夹中找到这两个 dll:
OraOps12.dll
Oracle.DataAccess.dll
复制那些 32 位 dll 或 64 位 dll,并将它们直接放在项目的输出路径中。例如在 C:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug
.
通过指向输出路径在您的项目中浏览 Oracle.DataAccess.dll。
UPD:最新版本的 ODP.NET 提供程序(从 here 下载)的文件名中有“19”后缀而不是“12”:
oci.dll
ociw32.dll
orannzsbb19.dll
oraociei19.dll
oraons.dll
OraOps19.dll
Oracle.DataAccess.dll
我遇到过类似的问题;安装oracle数据访问组件(odac ODTwithODAC122010.zip)解决。
首先,我想用Oracle.DataAccess.dll
来使用OracleBulkCopy
。
我想知道我需要能够从数据库中读取的所有 dll,然后在 Oracle 中执行批量复制。目前,我们只使用一个 dll 来执行所有从数据库中读取的操作,我们使用 Oracle.ManagedDataAccess.Client
。但是我不能用它来执行批量复制。
我不想为用户安装ODP.NET,我想直接在程序中包含dll。所以我想知道能够在 32 位和 64 位中使用 Oracle.DataAccess.dll
所需的最低 dll。
我知道有一些关于此的旧 post,但它很旧并且列出的 dll 已过时。我找不到其中一些。
我为 ODAC12 安装了 ODP.net 并且我检索了这个 post. I also tried with with this post 中列出的所有 dll。列出的 dll 指出版本 11。
我做了一个虚拟项目,它打开一个连接,读取一个 table 并将其批量放入另一个 table。我从项目根目录中的 post 复制了列出的 dll,并将 Oracle.DataAccess.dll
包含在项目中。
当我 运行 我的 64 位程序时,出现以下错误:
Could not load file or assembly 'Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342'
当我在 32 位中 运行 时,我得到这个错误:
Unable to load DLL 'OraOps12.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"
我包含的 dll 是:
- oci.dll
- ociw32.dll
- Oracle.DataAccess.dll
- orannzsbb12.dll
- oraocci12.dll
- oraociei12.dll
- OraOps12.dll
您似乎没有安装 Oracle Instant 客户端(或任何其他版本的 Oracle 客户端)。这是非托管 ODP.NET 提供程序的先决条件。
安装 Oracle Instant 客户端就可以了。否则只会惹麻烦。
我成功了。
- 下载适合您的项目的 ODAC 版本。
对于 32bit 项目,您需要下载 ODAC12..._x32.zip (ODAC121021Xcopy_32bit.zip).
对于 64bit 项目,您需要下载 ODAC12..._x64.zip
根据您想要的版本(32 位与 64 位)将其解压缩到一个空文件夹中。
通过在 windows 搜索栏中搜索 *.dll,在
instantclient_12_1
文件夹中找到所有 dll。你需要抓住:
oci.dll
ociw32.dll
orannzsbb12.dll
oraociei12.dll
oraons.dll
- 根据您的 .NET 版本,在
odp.net4
或odp.net20
文件夹中找到这两个 dll:
OraOps12.dll
Oracle.DataAccess.dll
复制那些 32 位 dll 或 64 位 dll,并将它们直接放在项目的输出路径中。例如在
C:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug
.通过指向输出路径在您的项目中浏览 Oracle.DataAccess.dll。
UPD:最新版本的 ODP.NET 提供程序(从 here 下载)的文件名中有“19”后缀而不是“12”:
oci.dll
ociw32.dll
orannzsbb19.dll
oraociei19.dll
oraons.dll
OraOps19.dll
Oracle.DataAccess.dll
我遇到过类似的问题;安装oracle数据访问组件(odac ODTwithODAC122010.zip)解决。