Oracle客户端和ODAC之间的区别

时间:2015-03-25 23:15:51

标签: oracle odac

安装完整的Oracle客户端和Oracle Odac安装有什么区别?我需要在我的开发工作站上进行.NET开发,在需要与另一台服务器上的Oracle数据库连接的Web应用程序服务器上需要哪些?

2 个答案:

答案 0 :(得分:8)

这很令人困惑,再次写下来帮助了我。

我的总结:

  • Oracle Instant Client仅公开直接OCI(Oracle调用接口)API,因此仅与支持Oracle的应用程序相关(例如,请参阅http://www.oracle.com/technetwork/topics/winx64soft-089540.html
  • ODAC 包括 Instant Client,以及一堆面向Microsoft的API(.net提供程序,ASP.Net成员资格提供程序,OLEDB驱动程序,ODBC驱动程序,MTS事务协调程序)它涵盖了大多数Windows应用程序场景中您需要的内容。例如http://www.oracle.com/technetwork/topics/dotnet/downloads/install112021-200037.html。 ODAC有两种版本:'xcopy'版本和OUI(Oracle Universal Installer)版本(以及仅OUI版本包括SQL * Plus [#1])
  • ODT(Oracle Developer Tools for .Net)提供Visual Studio集成,通常与ODAC捆绑在一起(下载名为ODTwithODACxxxx.zip),例如http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
  • Oracle.DataAccess nuget包是ODAC .net驱动程序的一个版本,因此需要现有的Instant Client安装(即使用OCI)。令人困惑的是,有一次它被标记为托管驱动程序(因为它只是有一些重要的非托管本地依赖项)。
  • Oracle.ManagedDataAccess nuget包是一个完全托管的.net驱动程序,可以“直接”模式运行,不需要本地即时客户端

因此,对于大多数.net人来说,'Oracle客户端'意味着OUI安装的ODAC Instant Client + .Net驱动程序,也可能是ODT。

对于nugets来说,值得指出的是,即使是现在(2017年1月),Oracle.ManagedDataAccess驱动程序仍然无法做大量的事情[#2],因此Oracle.DataAccess + InstantClient并不是一个完全过时的选项。如果你只是用SELECT / INSERT或者香草ADO.Net阅读和写作,你会没事的。我被告知EF支持比过去好得多。 DevArt的dotConnect驱动程序是另一个(非常好的)选项。

还有一个针对Oracle即时客户端的nuget包,但我不知道它是什么。据推测,Win32 / .Net native-OCI应用程序需要通过nuget零安装Instant Client。他们两个。

[#1] SQL * Plus可能在运行时很少使用,但如果您想将它添加到现有的ODAC安装中,Instant Client下载页面上会列出separate installer

[#2]例如:使用表值UDT调用oracle存储过程

答案 1 :(得分:2)

  

ODAC包括Oracle Data Provider for .NET,Oracle Developer Tools   用于Visual Studio(ODT),用于ASP.NET的Oracle提供程序,.NET存储   程序支持,以及其他Oracle数据访问软件   对于Windows。

-Oracle' s site

完整的Oracle客户端包含许多额外的软件,例如SQLPlus,SQL Developer等。

无论如何,这大部分都是无关紧要的。在.NET中获取数据库驱动程序的标准方法是使用NuGet,而Oracle有一个没有外部依赖关系的official managed driver,这是最简单的入门方式。您可以通过NuGet将该软件包添加到您的应用程序中,并在您发布它时将所需的DLL包含在您的应用程序中,而无需专门配置服务器。