我必须从 .NET 代码连接 Oracle 11g DB。为此,我在阅读了一些论坛帖子后安装了 ODP.NET bur,我意识到我也需要安装 Oracle 客户端。
真的吗?我看到 Oracle 客户端的大小为 ca。2GB!!!我真的需要安装这么大的客户端才能连接 Oracle 数据库吗?
我必须从 .NET 代码连接 Oracle 11g DB。为此,我在阅读了一些论坛帖子后安装了 ODP.NET bur,我意识到我也需要安装 Oracle 客户端。
真的吗?我看到 Oracle 客户端的大小为 ca。2GB!!!我真的需要安装这么大的客户端才能连接 Oracle 数据库吗?
来自 Oracle 的 Alex Keh 在 2013 年 8 月说:
托管 ODP.NET 已发布。它目前是 Oracle DB 12c 客户端的一部分。要使用托管 ODP.NET,您必须下载并安装 DB 客户端。从那里,您可以只提取托管的 ODP.NET 程序集和设置文件。这些文件小于 10 MB,可以部署到任何目标机器。
目前,我们正在打包一个独立的托管 ODP.NET 版本和 ODAC 12 版本,它们会更小。这将很快在 OTN 上发布。
如果您可以等待几天,ODAC 12c 将在 OTN 上发布,您可以下载该版本。这将是我们最新最好的托管 ODP.NET 版本
====
我们不打算将托管 ODP.NET 放在 NuGet 上。我们相信,使用 ODAC 进行托管 ODP.NET 下载将在程序集隔离和下载大小方面提供与 NuGet 相同的优势。
有一个线程讨论 Oracle 是否应该提供托管 ODP.NET NuGet 支持。一旦你使用了 ODAC 12c,我想知道你对 NuGet 支持是否仍然需要的想法。 https://forums.oracle.com/thread/2559445
PM> Install-Package Oracle.ManagedDataAccess
那么到底有什么问题呢?
到目前为止,基本上,ODP.NET 是一个与 Oracle 客户端 .dll 文件对话的 .NET 层,这是一个具有很多含义的小事实:
那是什么?
托管驱动程序基本上是一个带有 .Net 本机 ODP.NET 实现的 .dll 文件。
这意味着不需要 Oracle 客户端,现在本地代码在幕后。XCopy 安装可以轻松完成。
主要好处:
那么有什么问题呢?
请注意,本机代码 ODP.NET 仍然非常可用。托管版本(至少目前是这样)是本机版本的补充。
参考资料: http: //oracleatdotnet.blogspot.com.es/2013/07/odpnet-managed-driver-beta-2.html
ODP.NET 托管驱动程序和非托管驱动程序之间的差异 http://docs.oracle.com/html/E41125_02/intro004.htm
Oracle Data Provider for .NET 的特性 http://docs.oracle.com/database/121/ODPNT/features.htm#ODPNT0007
您也可以使用 NuGet 获得托管 ODP.NET https://www.nuget.org/packages/odp.net.managed/
PM> Install-Package odp.net.managed
观看有关使用 ODP.NET 托管驱动程序的快速入门视频!(从http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html复制)
http://www.youtube.com/watch?feature=player_embedded&v=I1q50HnUh_w
更新:
用于官方 Oracle ODP.NET 的 NuGet,托管驱动程序 https://www.nuget.org/packages/Oracle.ManagedDataAccess/
或包管理器控制台
PM> Install-Package Oracle.ManagedDataAccess
ODP.NET 确实需要本机 OCI DLL (~130 MB)。
获取所有必要文件的最简单方法可能是从 oracle.com 下载“具有 XCopy 部署的 Oracle 数据访问组件”。
供您参考,ODP.NET 在运行时使用以下 DLL:
oci.dll
Oracle.DataAccess.dll (the managed ODP.NET assembly itself)
orannzsbb11.dll
oraociei11.dll
OraOps11w.dll
顺便说一句,无论您使用的是 32 位还是 64 位本机 Oracle DLL,您都需要小心——您必须将它们与托管代码的“位数”相匹配。如果您正在为“任何 CPU”构建,这尤其棘手,因此位数不固定。
我留下这个答案是因为随着 ODP.net 托管驱动程序的发布,旧答案现在有点过时了。
重要提示:实体框架设计时功能需要 32 位 Oracle Developer Tools for Visual Studio 下载。下面支持实体框架部署的下载不包含设计时工具,仅包含运行时支持。
带有 Oracle Developer Tools for Visual Studio 的 32 位 Oracle 数据访问组件 (ODAC)
当前可用的版本 ODAC 12cR2 向后兼容 Oracle 10gR2 或更高版本。请参阅ODAC 12cR2 安装说明的系统要求部分。ODAC 12cR2 需要/支持从版本 4 到 4.5.1 的 .Net 框架。
根据其安装说明,先前版本的 ODAC 12cR1 也向后兼容 Oracle 10gR2 或更高版本。
使用现在可用的托管 oracle-client 。一个托管的 AnyCPU 6MB dll。
它对我有用(没有 Oracle 客户端的 PC):
编辑:
虽然这个解决方案效果很好;今天,我认为最好的方法是使用 Oracle Managed Data Access 驱动程序。当我们需要避免桌面和服务器环境中的一个不使用相同(32 位或 64 位)架构时出现问题时会更好吗?
感谢 Iron Automation:
下面的解决方案将适用于 11g 和 12c 数据库。
按照步骤:
步骤1
我们需要一组由 Oracle 提供的 dll 来在我们的项目中使用。因此,在第一步中,为您的 Windows 版本下载 Oracle 数据访问组件 (ODAC)。截至本文发布之日,有效下载网址为:http ://www.oracle.com/technetwork/topics/dotnet/downloads/odacdeploy-4242173.html
注意:ODAC 32 位版本适用于 32 位和 64 位。我在使用 64 位版本时遇到了几个问题。所以我可以建议直接下载32位版本。
打开下载的 zip 文件并将下面的 dll 放在一起。我列出了 dll 以及您可以在其中找到它们的文件夹。我们稍后会将它们复制到我们的调试文件夹中。
\instantclient_12_2\
oci.dll
orannzsbb12.dll
oraocci12.dll
oraocci12d.dll
oraociei12.dll
oraons.dll
\oramts\bin\
oramts.dll
oramts12.dll
oramtsus.dll
\odp.net4\odp.net\bin\4\
Oracle.DataAccess.dll
\odp.net4\bin\
OraOps12.dll
第2步
使用 Visual Studio 创建控制台应用程序并将步骤 1 中列出的 dll 复制到与项目可执行文件相同的文件夹中,即 Debug 文件夹。通过浏览到您刚刚将此 dll 复制到的 Debug 文件夹,添加对“Oracle.DataAccess.dll”的引用。
它对我有用(安装了 Oracle 客户端的 PC):
下载驱动程序 XCOPY 版本:
https://www.oracle.com/database/technologies/dotnet-odacdeploy-downloads.html
32 位 ODAC 12.2.0.1.0
ODAC122010Xcopy_32bit.zip
只需在项目引用中添加对 Oracle.DataAccess.dll 的引用:
------------------------------- ------------------- ----------- ----------------- --------------------------- -----------------------
Name Date modify Size Version Folder Type
------------------------------- ------------------- ----------- ----------------- --------------------------- -----------------------
Oracle.DataAccess.dll 24/05/2017 16:46 2.100 KB 4.122.1.0
浏览到 odp.net4 文件夹(支持批量插入)
将此文件复制到 ouptut bin 文件夹:
------------------------------- ------------------- ----------- ----------------- --------------------------- -----------------------
Name Date modify Size Version Folder Type
------------------------------- ------------------- ----------- ----------------- --------------------------- -----------------------
oci.dll 13/02/2017 23:31 1.270 KB 12.2.0.0 InstantClient_12_2 Extensão de aplicativo
ociw32.dll 13/02/2017 22:20 346 KB 11.1.0.1 InstantClient_12_2 Extensão de aplicativo
orannzsbb12.dll 05/12/2016 18:38 4.329 KB 12.2.0.1 InstantClient_12_2 Extensão de aplicativo
oraocci12.dll 13/02/2017 21:29 1.006 KB 12.2.0.1 InstantClient_12_2 Extensão de aplicativo
OraOps12.dll 24/05/2017 16:45 433 KB 2.122.1.0 InstantClient_12_2 Extensão de aplicativo
------------------------------- ------------------- ----------- ----------------- --------------------------- -----------------------
Name Date modify Size Version Folder Type
------------------------------- ------------------- ----------- ----------------- --------------------------- -----------------------
Oracle.ManagedDataAccess.dll 24/05/2017 16:07 4.763 KB 4.122.1.0