Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment installer ODP.NET 2.111 et ODP.NET 4.112 sur la même machine côte à côte alors que les deux pointent vers le même serveur de base de données

La réponse courte :

Remarque :J'ai essayé d'installer le nouveau ODP.NET sur le client précédent et j'ai pu me connecter à la base de données à l'aide de la chaîne de connexion suivante...

Cela indique que votre nouvelle installation n'a pas de tnsnames.ora et sqlnet.ora dans /Network/Admin. Si vous êtes d'accord avec l'ancien client utilisant la nouvelle installation ODP.net, vous pouvez soit les copier à partir de l'ancienne installation, soit spécifier un emplacement global pour toutes les instances avec la variable d'environnement TNS_ADMIN, c'est-à-dire TNS_ADMIN=C:\MyOracleFilesDir

La réponse longue :

Lorsque vous avez installé le nouveau client, il a probablement également installé des fichiers de stratégie d'éditeur dans le GAC qui redirigent les références à l'ancien Oracle.DataAccess.dll vers la nouvelle version pendant le processus de résolution d'assemblage. Oracle.DataAccess localise ensuite le client via un paramètre (DllPath) dans le registre. Vous pouvez remplacer cet emplacement en définissant dllPath dans votre fichier .config :

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

C'est généralement ce que je fais, mais à mesure que je comprends mieux cela, je me rends compte que je force une DLL plus récente contre un client plus ancien. Si votre objectif est de laisser l'ancien client intact, une meilleure option peut être de supprimer les règles de l'éditeur du GAC (je ne pense pas qu'elles soient même installées avec l'installation complète d'ODAC, uniquement ODP.net) :

Si vous avez besoin de les réinstaller, ils se trouvent généralement sur oraclepath\odp.net\PublisherPolicy.

Une autre option, et peut-être une meilleure option à long terme, consiste à configurer les anciens clients pour qu'ils ignorent la politique de l'éditeur :http://msdn.microsoft.com/en-us/library/cf9025zt%28v=vs.80%29.aspx

Enfin, je suis à peu près sûr que les composants .net pour les frameworks 2.0 et 4.0 sont des options d'installation distinctes lors de l'installation d'ODP.net. Je pense que vous pourrez peut-être éviter ce problème simplement en n'installant pas les composants 2.0. Sur cette note, vous pouvez faire un travail similaire en développant votre nouveau projet sur odp.net 64 bits à la place. Comme v2.0 et v4.0, 32 bits et 64 bits ne se connaissent pas non plus.