我们已经为 Oracle 安装了 32 位 odp.net 驱动程序。我们的服务器当前托管使用已弃用的 Microsoft Oracle 驱动程序的应用程序。
要在服务器上使用新的 odp.net 驱动程序,是否会与 Microsoft 的旧版已弃用驱动程序发生冲突?
服务器上需要安装什么?(如何避免与现有 Web 应用程序发生冲突?)
System.Data.OracleClient 以与 odp.net 相同的方式依赖于非托管 Oracle 客户端软件:
http://msdn.microsoft.com/en-us/library/2d7h4ycx.aspx
.NET Framework Data Provider for Oracle 使用Oracle 客户端软件提供的 Oracle 调用接口 (OCI) 提供对 Oracle 数据库的访问。数据提供者的功能被设计为类似于用于 SQL Server、OLE DB 和 ODBC 的 .NET Framework 数据提供者的功能。
安装 Oracle 客户端时,它会建立一个“oracle_home”(允许多个 oracle 主目录)并使用各种方法查找相关依赖项,包括注册表(HKLM/Software/Oracle)、.config 选项和路径语句。我不确定 System.Data.OracleClient 使用哪种方法,但我猜它依赖于路径环境变量,就像旧版本的客户端一样。
安装新客户端可能会将其自身放在路径语句的首位。例如,考虑安装了我的 4 个客户端的命令行“set”命令中的以下片段:
OS=Windows_NT 路径=C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live; C:\Oracle\product\11.2.0\client_ODT;C:\Oracle\product\11.2.0\client_ODT\bin;C:\Oracle\product\11.2.0\client_ODACx64;C:\Oracle\product\11.2。 0\client_O DACx64\bin;C:\Oracle\product\11.2.0\client_1\bin ;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\ WindowsPowerShell\v1.0\; C:\ORA6i\bin;C:\ORANT\bin ;C:\Windows\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ORA6i\jdk\bin;C:\Windows\system32 ;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ORA6i\jdk\bin;C:\ORA6i\bin;C:\ORANT\bin;C:\Windows\system32;C:\WINDOWS; C:\WINDOWS\System32\Wbem;C:\ORA6i\jdk\bin;
届时,现有的客户端用户可能会开始使用您新安装的客户端。因此,您可能需要在安装前后检查您的系统是否有此类更改。
在新客户端下运行可能会很好,但如果您希望避免接触现有系统。考虑改用xcopy 安装。以下是有关安装它的信息的一些链接: http://www.oracle.com/technetwork/issue-archive/2008/08-nov/o68odpnet-101744.html http://www.brothersincode.com/post/Oracle -ODPnet-xcopy-deployment-for-aspnet.aspx
xcopy 安装不会将自身添加到路径语句中,因此它不应该影响您的其他安装。新版本的 odp.net 应该通过注册表解决非托管二进制文件,因此您的新应用程序可能会毫无问题地找到它。但是,我发现 dllPath 配置更可靠 - 您的配置文件中会包含以下内容:
<configuration>
<oracle.dataaccess.client>
<add key="DllPath" value="c:\oracle\product\1.1.0-xcopy-dep\BIN"/>
</oracle.dataaccess.client>
</configuration>
据我所知,没有冲突。这对 Oracle 来说会更好——开发进度比 MS 解决方案要大。您可以在此处阅读有关安装过程和要求的所有信息 -> Oracle® Data Provider for .NET