2013-03-19 12 views
0

的問題是如何在安裝ODP.NET 2.111和4.112 ODP.NET同時使用同一臺機器,同時指向使用tnsnames.ora的同一數據庫服務器如何在同一臺機器上安裝ODP.NET 2.111和ODP.NET 4.112並排一邊都指向同一個數據庫服務器

我需要支持基於Oracle 11.1.0的遺留系統。系統使用ODP.NET 2.111連接到oracle。有安裝在兩個客戶:

C:\ ORACLE \產品\ 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 - 它打破了傳統的系統,因爲它不再能夠連接到Oracle由於ODP.NET 2-連接字符串是很奇怪的升級尋找

我將不勝感激任何幫助,

感謝, Aidin

回答

0

簡短的回答:

注意:我曾嘗試過以前的客戶端 安裝新的ODP.NET,並能夠連接到使用下面的連接字符串 數據庫...

這表明新的安裝不具有的tnsnames.ora和/ Network/Admin中的sqlnet.ora。如果您在使用新的ODP.net安裝,比你既可以是OK的老客戶從舊的安裝複製它們,或者您可以指定與TNS_ADMIN環境變量的所有實例的全局位置,即TNS_ADMIN=C:\MyOracleFilesDir

的長回答:

當您安裝新客戶端時,它很可能還會將發佈者策略文件安裝到GAC中,以便在assembly resolution process期間將對舊Oracle.DataAccess.dll的引用重定向到新版本。然後,Oracle.DataAccess通過註冊表中的參數(DllPath)查找客戶端。您可以通過在你的config文件設置的DLLPath覆蓋此位置:

<configuration> 
    <oracle.dataaccess.client> 
    <add key="DllPath"   value="C:\yourotherpath"/> 
    </oracle.dataaccess.client> 
</configuration> 

這通常是我做的,但我明白這一點多了,我意識到,我強迫一個較新的DLL針對舊版客戶端。 。如果您的目標是保持舊客戶端不變,那麼更好的選擇可能是從GAC中刪除發佈者策略(我認爲他們甚至沒有安裝完整的ODAC安裝,只有ODP.net):

GAC Screenshot

如果您需要重新安裝它們,通常會在oraclepath \ odp.net \ PublisherPolicy中找到它們。

另外,還可能有更好的長期選擇,是配置老客戶忽略出版商策略: http://msdn.microsoft.com/en-us/library/cf9025zt%28v=vs.80%29.aspx

最後,我敢肯定,在2.0與4.0框架的.NET組件在ODP.net安裝期間是單獨的安裝選項。我想你可以通過不安裝2.0組件來避免這個問題。在那個筆記上,你可以用64位odp.net來開發你的新項目來做類似的工作。像v2​​.0和v4.0一樣,32位和64位也沒有任何意識。

+0

非常感謝。你給出了非常好的和詳細的迴應。我可以在你的幫助下處理這種情況。 – Aidin 2013-03-21 14:47:50

相關問題