ODP.NET是否需要安装Oracle客户端

lla*_*rov 35 .net oracle odp.net oracleclient

我必须从.NET代码连接Oracle 11g DB.为此,我在阅读了一些论坛帖子后安装了ODP.NET bur,我认识到我也需要安装Oracle客户端.

真的吗?我看到Oracle客户端的大小为ca. 2GB!我真的需要安装这么大的客户端才能连接Oracle DB吗?

Kiq*_*net 37

来自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版本

====

我们不打算在NuGet上放置托管的ODP.NET.我们相信使用ODAC管理的ODP.NET下载将在程序集隔离和下载大小方面提供与NuGet相同的优势.

有一个讨论Oracle是否应该提供托管ODP.NET NuGet支持的线程.一旦你使用ODAC 12c,我想知道你是否仍然需要NuGet支持. https://forums.oracle.com/thread/2559445

Nuget管理ODP.NET:

PM> Install-Package Oracle.ManagedDataAccess
Run Code Online (Sandbox Code Playgroud)

那么问题到底是什么?
基本上到目前为止,ODP.NET是一个与Oracle客户端.dll文件对话的.NET层,这个小事实有很多含义:

  • 安装占地面积大(几百Mb)
  • 对远程计算机进行严格部署 - 需要在客户端计算机上安装ODP.NET或部署大型文件
  • 使用多个版本,32位/ 64位操作系统和应用程序时具有挑战性

那是什么?

托管驱动程序基本上是一个单独的.dll文件,带有.Net本机实现的ODP.NET.
这意味着不需要Oracle客户端,现在本机代码就在幕后.XCopy安装可以轻松完成.

主要好处:

  • 占地面积小
  • 编译为任何CPU,因此它可以顺利地在32位/ 64位操作系统和应用程序上工作.易于在同一台机器上管理多个版本
  • 可以在应用程序bin目录中部署为简单引用.

那捕获的是什么?

  • 并非所有功能都受支持(尽管大多数功能都是......),您可以在文档中找到更多信息
  • 命名空间从Oracle.DataAccess.Client更改为Oracle.ManagedDataAccess.Client
  • 性能差异仍不明确.(旧)本机代码总是非常有效,但另一方面,100%托管代码具有性能优势.

请注意,Native-Code 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

  • @Luminous:对.使用"Managed ODP.NET",您只需一个6MB dll,称为"Oracle.ManagedDataAccess.dll",它允许您连接到Oracle数据库而无需安装任何其他软件.实际上,您甚至不需要"安装"Managed ODP.NET,只需要dll,就可以安全地将其部署到没有安装软件的服务器上. (4认同)
  • 备注:Oracle于2015年10月删除了odp.net.managed nuget.请使用官方nuget [Oracle.ManagedDataAccess](https://www.nuget.org/packages/Oracle.ManagedDataAccess/).另请查看[this post](http://stackoverflow.com/questions/33013689/why-has-the-odp-net-managed-package-on-nuget-dissapeared/). (3认同)

Bra*_*vic 11

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
Run Code Online (Sandbox Code Playgroud)

顺便说一下,无论您使用的是32位还是64位本机Oracle DLL,都需要注意 - 您必须将它们与托管代码的"位数"相匹配.如果你正在为"任何CPU"构建,那么这个特别棘手,因此比特率不固定.


Rij*_*iju 11

你也可以使用NuGet来管理ODP.NET https://www.nuget.org/packages/odp.net.managed/

PM> Install-Package odp.net.managed 
Run Code Online (Sandbox Code Playgroud)

观看使用ODP.NET托管驱动程序的快速入门视频!(复制自http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html)

http://www.youtube.com/watch?feature=player_embedded&v=I1q50HnUh_w


更新:

NuGet for Official Oracle ODP.NET,托管驱动程序 https://www.nuget.org/packages/Oracle.ManagedDataAccess/

或包管理器控制台

PM> Install-Package Oracle.ManagedDataAccess
Run Code Online (Sandbox Code Playgroud)


vc *_* 74 8

最新的ODAC版本附带Oracle即时客户端,因此您无需安装完整的客户端.

(32位发布)

(64位发布)


sam*_*ris 5

我正在离开这个答案,因为在发布ODP.net托管驱动程序时,旧的答案现在有点过时了.

ODP.net托管驱动程序现已发布.

当前可用的版本ODAC 12cR2向后兼容Oracle 10gR2或更高版本.请参阅ODAC 12cR2安装说明系统要求部分.ODAC 12cR2需要/支持版本4到4.5.1的.Net框架.

以前的版本ODAC 12cR1也可以根据其安装说明向后兼容Oracle 10gR2或更高版本.