38

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

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

4

7 回答 7

38

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

Nuget 托管 ODP.NET

PM> Install-Package Oracle.ManagedDataAccess

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

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

那是什么?

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

主要好处:

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

那么有什么问题呢?

  • 并非所有功能都受支持(尽管其中大多数是...),您可以在文档中找到更多信息
  • 命名空间从 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

于 2013-08-13T08:43:08.790 回答
12

您也可以使用 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
于 2013-08-06T13:42:47.033 回答
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”构建,这尤其棘手,因此位数不固定。

于 2011-10-19T11:04:01.713 回答
8

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

32 位版本

64 位版本

于 2011-10-19T10:35:40.797 回答
5

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

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

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

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

于 2014-07-19T18:27:32.357 回答
2

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

于 2013-10-31T08:59:19.203 回答
1

它对我有用(没有 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 数据库。

按照步骤:

  • 步骤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):

    ------------------------------- ------------------- ----------- ----------------- --------------------------- ----------------------- 
    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         
于 2020-01-13T12:58:27.467 回答