【问题标题】:Does ODP.NET require Oracle Client installationODP.NET 是否需要安装 Oracle 客户端
【发布时间】:2011-12-10 19:34:59
【问题描述】:

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

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

【问题讨论】:

标签: .net oracle odp.net oracleclient


【解决方案1】:

来自 Oracle 的 Alex Keh 在 2013 年 8 月说:

托管 ODP.NET 已发布。它目前是 Oracle DB 12c 的一部分 客户。要使用托管 ODP.NET,您必须下载并安装 数据库客户端。从那里,您可以只提取托管的 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

Nuget managed ODP.NET:

PM> Install-Package Oracle.ManagedDataAccess

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

  • 安装空间大(数百 Mb)
  • 难以部署到远程机器 - 需要在客户端安装 ODP.NET 机器或部署大文件
  • 在使用多个版本、32 位/64 位操作系统和应用程序时面临挑战

那是什么?

托管驱动程序基本上是单个 .dll 文件,具有 ODP.NET 的 .Net 本机实现。
这意味着不需要 Oracle 客户端,现在本地代码在幕后。 XCopy 安装很容易。

主要好处:

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

那么问题是什么?

  • 并非所有功能都受支持(尽管其中大部分是...) 可以通过documentation 了解更多信息
  • 命名空间从 Oracle.DataAccess.Client 到 Oracle.ManagedDataAccess.Client
  • 性能差异仍不清楚。 (旧)本机代码 总是非常高效地执行,但另一方面 100% 管理 代码有它的性能优势。

请注意,本机代码 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

【讨论】:

  • 顺便说一句,客户端不再是测试版...在这里下载32位和64位:oracle.com/technetwork/database/windows/downloads/…ODP.NET_Managed121012.zip
  • 所以让我说清楚。托管版本允许您在应用程序中引用程序集,并允许您不让客户端计算机像非托管版本那样下载任何内容?正确的?这里还有一个链接,说明您可能希望在答案中包含的托管版本不支持哪些类和方法:docs.oracle.com/html/E41125_02/intro004.htm)
  • @Luminous:对。使用“托管 ODP.NET”,您有一个 6MB 的 dll,称为Oracle.ManagedDataAccess.dll,它允许您连接到 Oracle 数据库而无需安装任何其他软件。实际上,您甚至不需要“安装”Managed ODP.NET,只需要 dll,您就可以安全地将其部署到没有安装软件的服务器上。
  • 备注:Oracle 从 2015 年 10 月起删除了 odp.net.managed nuget。请改用官方的 nuget Oracle.ManagedDataAccess。还要检查this post
  • 在 FIPS 模式下运行时,托管驱动程序不适用于 Oracle 11 及更低版本。
【解决方案2】:

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

【讨论】:

  • Alex Keh 说:如果您可以等待几天,ODAC 12c 将在 OTN 上发布,您可以下载该版本。这将是我们最新最好的托管 ODP.NET 版本。
  • Alex Keh 说:“我们不打算将托管 ODP.NET 放在 NuGet 上。我们相信使用 ODAC 下载托管 ODP.NET 将在程序集隔离和下载大小。有一个线程讨论 Oracle 是否应该提供托管 ODP.NET NuGet 支持。一旦您使用 ODAC 12c,我想知道您对 NuGet 支持是否仍然需要的想法。forums.oracle.com/thread/2559445"
【解决方案3】:

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”构建,那么这尤其棘手,因此位数不固定。

【讨论】:

  • 这是对“真实”问题的最佳答案,即“如何在没有膨胀软件的情况下在 .Net 中获得 Oracle connectvitiy”。仅供参考,我已将此版本安装到 SSIS Azure 运行时中,并且可以运行 Oracle SSIS 包。
  • 当我使用 Process Monitor 跟踪 ODP.NET 应用程序时,它会从 Oracle bin 文件夹中加载 39 个不同的 DLL(不仅仅是您列出的这四个)-我认为这不是一个聪明的方法手动复制DLL。最好安装 InstantClient 或 ODP.NET 托管驱动程序。
  • @WernfriedDomscheit 托管 ODP.NET 绝对是一个更好的选择,但这个答案是在它的时代之前写的。至于您注意到的这些“额外”DLL——同样可能在此期间发生了一些变化,或者您只是看到了“不必要的”本地化 DLL。不管是什么,答案描述了一个经过测试并且在实践中运行良好的解决方案,当时
【解决方案4】:

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

(32 bit release)

(64 bit release)

【讨论】:

    【解决方案5】:

    我留下这个答案是因为随着 ODP.net 托管驱动程序的发布,旧答案现在有点过时了。

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

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        它对我有用(没有 Oracle 客户端的 PC):

        已编辑:

        虽然这个解决方案效果很好; 今天,我认为最好的方法是使用 Oracle Managed Data Access 驱动程序。当我们需要避免桌面和服务器环境中的一个不使用相同(32 位或 64 位)架构时出现问题时会更好吗?

        感谢 Iron Automation:

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

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

        按照步骤:

        • 第一步

          我们需要一组由 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):

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

        【讨论】:

          猜你喜欢
          • 2010-11-12
          • 2020-08-16
          • 2019-10-19
          • 1970-01-01
          • 2019-06-24
          • 1970-01-01
          • 1970-01-01
          • 2016-03-12
          • 1970-01-01
          相关资源
          最近更新 更多