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

2023-12-25

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

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


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 https://forums.oracle.com/thread/2559445

Nuget 管理的 ODP.NET https://www.nuget.org/packages/Oracle.ManagedDataAccess/:

PM> Install-Package Oracle.ManagedDataAccess

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

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

那么它是什么?

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

主要优点:

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

那么有什么问题呢?

  • 并非所有功能都受支持(尽管大多数功能都是......) 可以找到更多关于文档 http://docs.oracle.com/cd/E38410_01/welcome.html
  • 命名空间更改自 Oracle.DataAccess.Client 到 Oracle.ManagedDataAccess.Client
  • 性能差异仍不清楚。 (旧)本机代码 始终执行非常高效,但另一方面 100% 得到管理 代码有其性能优势。

请注意,本机代码 ODP.NET 仍然非常可用。除了本机版本之外,还提供了托管版本(至少目前如此)。

参考:http://oracleatdotnet.blogspot.com.es/2013/07/odpnet-management-driver-beta-2.html http://oracleatdotnet.blogspot.com.es/2013/07/odpnet-managed-driver-beta-2.html

ODP.NET 托管驱动程序和非托管驱动程序之间的差异 http://docs.oracle.com/html/E41125_02/intro004.htm http://docs.oracle.com/html/E41125_02/intro004.htm

Oracle Data Provider for .NET 的功能 http://docs.oracle.com/database/121/ODPNT/features.htm#ODPNT0007 http://docs.oracle.com/database/121/ODPNT/features.htm#ODPNT0007

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ODP.NET是否需要安装Oracle客户端 的相关文章

  • 重写某些 .Net Framework 控件的绘制以更改其边框颜色?

    SCENARIO 我正在使用第三方 Windows 视觉主题 当我看到我的应用程序时 它看起来像这样 但是当我使用正常的Aero主题 它看起来到处都有可怕的白色边框 QUESTION 我知道应用程序中使用的配色方案取决于视觉风格 但是 我可
  • WCF 服务调用包装器

    为 WCF 服务调用创建包装器的最佳实践是什么 我认为有必要 为了在同一个地方监视所有呼叫 我正在考虑使用这种代码 这是正确的想法吗 RetType t ServiceExecutionContext
  • Android 手机作为 GSM 调制解调器在 PC 上发送/接收短信?

    是否可以将 Android 移动设备用作 PC 上的 GSM 调制解调器 我正在 net下开发应用程序来发送 接收短信等 现在我想通过 USB 将我的 Android 设备连接到我的 PC 并将其用作 GSM 调制解调器来与其通信 这里是参
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 服务 AddJsonOptions .net core 2.1

    以前使用 net 2 0 您可以通过这种方式添加 json 内容 services AddJsonOptions options gt options SerializerSettings ContractResolver new Came
  • 函数的变量存储在哪里?在堆栈或堆上?

    当程序调用函数时 为该函数中的变量分配哪种类型的数据结构内存 堆还是栈 为什么 在我看来 它应该存储在堆栈上 因为它们不一定是引用类型 但在我读到答案的地方 据说它们存储在堆上 并在函数返回值后释放 它比这更复杂一点 事实上使用堆栈和堆实际
  • 如何使用 Entity Framework 4.1 Fluent API 映射 Enum?

    我在 EF 的工作表之间有些迷失了 就像自由世界的其他部分一样 我确实需要在我的 POCO 中使用枚举 像我交谈过的许多人一样 我非常喜欢使用代码映射枚举 只是因为 我只是不太喜欢图片 我的困境是 我在几乎每一篇文章中都得到了相互矛盾的信息
  • 空 catch 与 try-catch 语句中的“catch Exception”相同吗?

    try catch Exception 我可以写吗 try catch 这在 C NET 3 5 中可以吗 代码看起来更好 但我不知道是否相同 他们是not一样的 catch Exception 将仅捕获托管异常 catch 也会捕获非 C
  • 如何使用命令行压缩指定文件夹

    你们能告诉我如何将指定的文件压缩到同一个 Zip 文件中吗 让我告诉我我的文件夹是如何填充的 任务调度程序有我的数据库的备份 并每天将它们保存到文件中 它每天创建 4 个数据库备份 这意味着每天会多出 4 个文件 因此 我需要将新创建的备份
  • 在业务逻辑中使用反射是一种好的做法吗?

    我需要开发一个由两个主要部分组成的应用程序 具有特定业务类别的业务逻辑部分 例如书籍 图书馆 作者 一个通用部分 可以在数据网格中显示书籍 图书馆 将它们映射到数据库 通用部分使用反射从业务类中获取数据 而不需要在业务类中编写特定的数据网格
  • 如何通过代码确定Oracle数据类型的字符串值?

    I use DBMS SQL DESCRIBE COLUMNS过程来确定 SELECT 查询的结果集中的列使用什么数据类型 但不幸的是这样我只能得到Oracle数据类型的代码 record col type 1 8 12 等 所以我想知道
  • 为什么“扔”和“扔前”在这种情况下有相同的行为?

    我惊呆了 我一直以为throw单独在 catch 块中会抛出手头的异常而不改变堆栈跟踪 但是throw ex在 catch 块中将更改堆栈跟踪以显示源自语句位置的异常 采取以下两个代码块 我希望输出会略有不同 因为使用throw和其他用途t
  • Windows 每秒进行一次线程切换的频率是多少? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Windows 通常 每秒进行一次线
  • IIS / .Net 只允许对给定用户会话进行单个并发响应

    这是我的问题 我们有一个 Net 4 5 Web 表单应用程序 由于服务器端的大量数据访问和操作 应用程序中的某些页面需要很长时间才能加载 如果用户在页面完成加载之前关闭浏览器选项卡 然后打开新选项卡 则新选项卡中对应用程序的任何请求都将挂
  • 如何从 vbScript 调用 .NET 代码 (C#/vb.net)?

    我想我可以编译一个 C DLL 然后将其公开为 COM 对象 以便可以从 VBscript 中 CreateObject 我只是不确定执行此操作所涉及的步骤 做到这一点非常简单 但还有很多地方并不那么简单 这在很大程度上取决于您的类需要做什
  • .NET 中的跟踪中的“开关”和“过滤器”有什么区别?

    NET 中的跟踪中的 开关 和 过滤器 有什么区别 他们似乎以相似的方式工作
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • Web 和 winforms 的 .Net 身份验证

    我有一个为客户端构建的 ASP NET Web 应用程序 它使用默认的 ASP NET 表单身份验证 他们现在请求一个能够 与 Web 应用程序一起工作的桌面 WinForms 应用程序 我已经创建了 Web 服务来访问他们想要从 Web

随机推荐

  • 在本地 xampp/apache 服务器上设置 SSL

    我正在尝试从本地网络服务器访问 Active Directory 为此 我使用最新版本的 xampp 和一个名为的 PHP 脚本adLDAP http adldap sourceforge net 如果我理解正确的话 我需要启用 SSL 来
  • beanWrapperImpl 仅与 websphere 相关

    我们开发中的 WAS 和我们本地的 WAS 之间存在差异 我们的应用程序使用 Spring Security 和 Spring 版本 3 1 0 release 它从 JSP 文件开始 我们试图显示连接的用户名 在 DEV 中的 WAS 上
  • Azure 服务总线队列 PeekBatch 锁定?

    我正在使用PeekBatch
  • ReactJS 中的非阻塞渲染

    我正在学习 ReactJS 并尝试在其上构建一些应用程序 当我尝试修改状态和渲染时 我的页面会冻结 并且在组件变得巨大时渲染完成之前无法执行任何操作 我发现我可以使用shouldComponentUpdate优化我的代码 但我的问题是 我可
  • 如何在 Chrome 中使用 Node 8 检查器?

    我熟悉使用 inspect从节点 7 或其他版本开始的选项 现在在节点 8 上 它不起作用 今天我像往常一样要求节点使用检查器 node inspect debug brk node modules mocha bin mocha o te
  • 有没有办法用Java代码获得一个只有数字(没有小数、空格)的Android软键盘?

    我有一个使用不同键盘布局的 iPhone 应用程序 有些是自定义的 有些是内置的 仅数字 小数点 ISBN 编号的自定义 X 按钮 我想在 Android 上做同样的事情 但即使是普通的InputType TYPE CLASS NUMBER
  • REST API 真的是 RESTful 吗?

    我是这个游戏的新手 所以我可能会误解一些事情 事实上 如果有人告诉我我误解了事情 那将是一种恩惠 也许这个人会足够体贴 为我指明正确的道路 但 中的一个 指导方针 or 最佳实践 REST 适用于 Web 服务 http en wikipe
  • 从静态工厂类访问 ASP.NET Core DI 容器

    我创建了一个 ASP NET Core MVC WebApi 站点 该站点具有基于 James Still 博客文章的 RabbitMQ 订阅者使用 RabbitMQ 进行真实世界的 PubSub 消息传递 http www squarew
  • ASP.NET Core 2.0 Razor 与 Angular/React/等

    我开始开发企业级 Web 应用程序 该应用程序将有许多单独的网页 但其中两个页面更集中且非常繁重 繁重 如大量用户交互 显示大量数据的模式 Websocket 连接 聊天等 我被任命为该项目的首席架构师 因此我正在对最新的 Web 框架进行
  • 使用 RabbitMQ 的工作池和多租户队列

    我开发的 Web 应用程序是一个基于多租户云的应用程序 很多客户端 每个客户端都有自己独立的 环境 但都在共享的硬件集上 我们正在引入用户批量处理的功能为后期处理工作 批处理工作的类型实际上并不重要 只是数量足够 没有工作队列就不太实际 我
  • Eclipse Neon - 禁用欢迎屏幕

    如何禁用 Eclipse Neon 中的欢迎屏幕 虽然有一个Eclipse Juno 的类似问题 https stackoverflow com questions 14637755 eclipse juno how to disable
  • Gridview 中的 DropDownList SelectedIndexChanged 未触发!

    虽然我一直在寻找解决方案 但看到很多帖子向我展示了如何做到这一点 但当 DropDownList 更改时 我无法触发我的 SelectedIndexChanged 事件 DropDownList AutoPostBack 设置为 True
  • 用户权限更改后强制重新验证

    在我的应用程序中 我可以更改后端的用户权限和角色 当用户登录并且我删除用户的角色时 该用户仍然可以访问他实际上不再被允许访问的内容 因为他缺少该角色 仅当用户通过注销 登录重新验证自己时 更改才会生效 所以我的问题是 我可以访问登录用户 不
  • 在 contentEditable

    我正在寻找一个明确的跨浏览器解决方案 当 contentEditable on 重新获得焦点时 将光标 插入符号位置设置为最后一个已知位置 内容可编辑 div 的默认功能似乎是每次单击时将插入符号 光标移动到 div 中文本的开头 这是不可
  • Sparklyr:validate_java_version_line(主版本)中的错误

    R version 3 5 2 2018 12 20 Eggshell Igloo Copyright C 2018 The R Foundation for Statistical Computing Platform x86 64 ap
  • 从 Android 中的原始文件夹设置铃声

    我正在尝试读取 访问 Raw 文件夹中的 mp3 文件 然后将其设置为默认铃声 但它无法找到它 我的代码是 Uri path Uri parse android resource com applenty LearnToCount raw
  • SwiftUI CoreData 异步获取

    我在 macOS 应用程序中使用 CoreData 和 SwiftUI 我主要利用的是 FetchRequest在 SwiftUI 中 向数据库发出我的请求 我注意到当数据库中有多个对象时 FetchRequest 需要更多时间 此外 我正
  • 从 Image.open 获得的数组,其中 np.asarray 是不可变的 - “赋值目标是只读的”

    我的目标是读取一组 PNG 文件 使用以下命令创建图像Image open filename 并将它们转换为只有 1 和 0 的简单二维数组 PNG 的格式为 RGBA 值大多只有 255 和 0 在图像中 边缘通常是灰度值 我想在二维数组
  • 事件处理程序中的图像调整器 User.Identity

    添加了一个 AuthorizeImage 事件处理程序来限制图像访问 当我尝试检查用户名和身份验证状态时注意到以下内容 下面不会导致异常 但似乎会破坏它 无论是否通过身份验证 都会显示未找到图像的默认图标 测试了 this User 相同的
  • ODP.NET是否需要安装Oracle客户端

    我必须从 NET 代码连接 Oracle 11g DB 为此 我安装了 ODP NET 但在阅读了一些论坛帖子后 我意识到我也需要安装 Oracle 客户端 真的吗 我看到 Oracle 客户端的大小为 ca 2GB 我真的需要安装这么大的