Oracle
 sql >> Database >  >> RDS >> Oracle

Come installare ODP.NET 2.111 e ODP.NET 4.112 nella stessa macchina affiancata mentre entrambi puntano allo stesso server di database

La risposta breve:

Nota:ho provato a installare il nuovo ODP.NET sul client precedente e sono riuscito a connettermi al database utilizzando la seguente stringa di connessione...

Ciò indica che la tua nuova installazione non ha tnsnames.ora e sqlnet.ora in /Network/Admin. Se sei d'accordo con il vecchio client che utilizza la nuova installazione di ODP.net, puoi copiarli dalla vecchia installazione oppure puoi specificare una posizione globale per tutte le istanze con la variabile di ambiente TNS_ADMIN, ad esempio TNS_ADMIN=C:\MyOracleFilesDir

La risposta lunga:

Quando hai installato il nuovo client, molto probabilmente ha installato anche i file dei criteri dell'editore nel GAC che reindirizzano i riferimenti al vecchio Oracle.DataAccess.dll alla nuova versione durante il processo di risoluzione dell'assembly. Oracle.DataAccess individua quindi il client tramite un parametro (DllPath) nel registro. Puoi sovrascrivere questa posizione impostando dllPath nel tuo file .config:

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

Questo è generalmente quello che faccio, ma man mano che lo capisco di più, mi rendo conto che sto forzando una dll più recente contro un client più vecchio. Se il tuo obiettivo è lasciare intatto il vecchio client, un'opzione migliore potrebbe essere quella di eliminare i criteri dell'editore dal GAC (non credo che siano installati nemmeno con l'installazione completa di ODAC, solo ODP.net):

Se è necessario reinstallarli, si trovano generalmente in oraclepath\odp.net\PublisherPolicy.

Un'altra, e forse una migliore opzione a lungo termine, è configurare i vecchi client per ignorare la politica dell'editore:http://msdn.microsoft.com/en-us/library/cf9025zt%28v=vs.80%29.aspx

Infine, sono abbastanza sicuro che i componenti .net per i framework 2.0 e 4.0 siano opzioni di installazione separate durante l'installazione di ODP.net. Penso che potresti essere in grado di evitare questo problema semplicemente non installando i componenti 2.0. Su quella nota potresti fare un lavoro simile sviluppando invece il tuo nuovo progetto contro odp.net a 64 bit. Come v2.0 e v4.0, anche 32 bit e 64 bit non hanno alcuna consapevolezza l'uno dell'altro.