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

时间:2011-10-19 10:26:23

标签: .net oracle odp.net oracleclient

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

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

7 个答案:

答案 0 :(得分:37)

来自甲骨文的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 managed ODP.NET

PM> Install-Package Oracle.ManagedDataAccess

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

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

那是什么?

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

主要好处:

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

那捕获的是什么?

  • 并非所有功能都受支持(尽管大多数功能都是......) 可以在documentation
  • 上找到更多信息
  • 命名空间已更改 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

答案 1 :(得分: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
顺便说一下,无论您使用的是32位还是64位本机Oracle DLL,都需要注意 - 您必须将它们与托管代码的“位数”相匹配。如果您正在为“任何CPU”构建,那么这一点尤其棘手,因此位数不固定。

答案 2 :(得分:11)

你也可以使用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


<强>更新

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

或包管理器控制台

PM> Install-Package Oracle.ManagedDataAccess

答案 3 :(得分:8)

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

32 bit release

64 bit release

答案 4 :(得分:5)

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

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

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

以前的版本ODAC 12cR1也可以根据它installation instructions向后兼容Oracle 10gR2或更高版本。

答案 5 :(得分:2)

使用现在可用的the managed oracle-client。管理AnyCPU 6MB dll。

答案 6 :(得分:0)

它对我有用(没有Oracle Client的PC):

已编辑:

尽管此解决方案效果很好; 今天,我认为最好的方法是使用Oracle托管数据访问驱动程序。当我们需要避免台式机和服务器环境之一不使用相同(32位或64位)体系结构时发生问题时,这会更好吗?

感谢钢铁自动化:

链接:http://www.iron-automation.com/2018/02/connecting-to-oracle-database-without-installing-oracle-client/

以下解决方案将同时应用于11g和12c数据库。

执行以下步骤:

  • 第1步

    我们将需要Oracle提供的一组dll在我们的项目中使用。因此,在第一步中,下载适用于您的Windows版本的Oracle数据访问组件(ODAC)。截至本文发布之日,有效下载URL为: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 Client的PC):

    ------------------------------- ------------------- ----------- ----------------- --------------------------- ----------------------- 
    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    

  • OBS:就我而言,没有必要:
    ------------------------------- ------------------- ----------- ----------------- --------------------------- ----------------------- 
    Name                            Date modify         Size        Version           Folder                      Type                  
    ------------------------------- ------------------- ----------- ----------------- --------------------------- ----------------------- 
    Oracle.ManagedDataAccess.dll    24/05/2017 16:07    4.763 KB    4.122.1.0