问题是如何在同一台机器上并排安装ODP.NET 2.111和ODP.NET 4.112,同时使用tnsnames.ora指向同一个数据库服务器
我需要支持基于Oracle 11.1.0的遗留系统。系统使用ODP.NET 2.111连接到oracle。安装了两个客户端:
C:\ oracle \ product \ 11.1.0 \ client_1
C:\ ORACLE \产品\ 11.1.0 \ client_2的
两者的tnsnames.ora是这样的:
xxxx1_SERVICE=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxxx2)(PORT = xxx3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = xxx4)
)
)
yyyy1_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yyyy2 )(PORT = yyyy3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = yyyy4)
)
)
kkkk1_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = kkkkk2 )(PORT = kkkk3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = kkk4)
)
)
pppp1_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ppppp2 )(PORT = pppp3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = pppp4)
)
)
oooo1_SERVICE = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ooooo2 )(PORT = oooo3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oooo4)
)
)
使用上述设置启动并运行系统。我需要开发一个基于EntityFramework的新系统,它要求我使用更新版本的Oracle.DataAccess.Dll(4.112)。
我想知道如何在不损害遗留系统功能的情况下安装新客户端,以便两者可以并行工作:
注意:我确实尝试在以前的客户端上安装新的ODP.NET,并且能够使用以下连接字符串连接到数据库:
DATA SOURCE =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = zzzzz1)(PORT = zzzzz2)))(CONNECT_DATA =(SERVICE_NAME = zzz3_SERVICE)));用户 ID = \ “zzzz4 \”;密码= \ “zzzz5 \”;
这是不可取的,因为1-它打破了遗留系统,因为由于ODP.NET升级而无法再连接到Oracle 2-连接字符串看起来很奇怪
我将不胜感激,
谢谢, Aidin
答案 0 :(得分:0)
答案简短:
注意:我确实尝试在以前的客户端上安装新的ODP.NET 并能够使用以下连接连接到数据库 串...
这表示您的新安装在/ Network / Admin中没有tnsnames.ora和sqlnet.ora。如果您对旧客户端使用新的ODP.net安装没有问题,那么您可以从旧安装中复制它们,也可以使用TNS_ADMIN环境变量为所有实例指定全局位置,即{{ 1}}
答案很长:
安装新客户端时,很可能还会将发布者策略文件安装到GAC中,以便在assembly resolution process期间将对旧Oracle.DataAccess.dll的引用重定向到新版本。然后,Oracle.DataAccess通过注册表中的参数(DllPath)定位客户端。您可以通过在.config文件中设置dllPath来覆盖此位置:
TNS_ADMIN=C:\MyOracleFilesDir
这通常就是我所做的,但正如我对此的理解更多,我意识到我正在强迫对较旧的客户端进行更新的dll。如果您的目标是保持旧客户端不变,那么更好的选择可能是从GAC中删除发布者策略(我认为它们甚至不会安装完整的ODAC,只有ODP.net):
如果您需要重新安装它们,通常可以在oraclepath \ odp.net \ PublisherPolicy找到它们。
另一个,也许是更好的长期选项,是将旧客户端配置为忽略发布者策略: http://msdn.microsoft.com/en-us/library/cf9025zt%28v=vs.80%29.aspx
最后,我非常确定在ODP.net安装期间,2.0和4.0框架的.net组件是单独的安装选项。我认为你可以通过不安装2.0组件来避免这个问题。在那个注释中,您可以通过针对64位odp.net开发新项目来做类似的工作。与v2.0和v4.0一样,32位和64位也没有彼此的认识。