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

BadImageFormatException. Cela se produira lors de l'exécution en mode 64 bits avec les composants client Oracle 32 bits installés

Une solution consiste à installer à la fois les clients Oracle x86 (32 bits) et x64 sur votre machine, peu importe l'architecture sur laquelle votre application s'exécute.

Voici une instruction pour installer le client Oracle x86 et x64 sur une machine :

Hypothèses :Oracle Home s'appelle OraClient11g_home1 , la version client est 11gR2

  • Supprimez éventuellement tout client Oracle installé (voir Comment désinstaller / supprimer complètement Oracle 11g (client) ? si vous rencontrez des problèmes)

  • Téléchargez et installez Oracle x86 Client, par exemple dans C:\Oracle\11.2\Client_x86

  • Téléchargez et installez Oracle x64 Client dans un dossier différent , par exemple à C:\Oracle\11.2\Client_x64

  • Ouvrez l'outil de ligne de commande, accédez au dossier %WINDIR%\System32 (généralement C:\Windows\System32 ) et créer un lien symbolique ora112 vers le dossier C:\Oracle\11.2\Client_x64 (voir la section commandes ci-dessous)

  • Passez au dossier %WINDIR%\SysWOW64 (généralement C:\Windows\SysWOW64 ) et créer un lien symbolique ora112 vers le dossier C:\Oracle\11.2\Client_x86 , (voir ci-dessous)

  • Modifier le PATH variable d'environnement, remplacez toutes les entrées comme C:\Oracle\11.2\Client_x86 et C:\Oracle\11.2\Client_x64 par C:\Windows\System32\ora112 , respectivement leur \bin sous-dossier. Remarque :C:\Windows\SysWOW64\ora112 ne doit pas être dans l'environnement PATH.

  • Si nécessaire, définissez votre ORACLE_HOME variable d'environnement à C:\Windows\System32\ora112

  • Ouvrez votre éditeur de registre. Définir la valeur de registre HKLM\Software\ORACLE\KEY_OraClient11g_home1\ORACLE_HOME vers C:\Windows\System32\ora112

  • Définir la valeur de registre HKLM\Software\Wow6432Node\ORACLE\KEY_OraClient11g_home1\ORACLE_HOME vers C:\Windows\System32\ora112 (pas C:\Windows\SysWOW64\ora112 )

  • Vous avez terminé! Vous pouvez maintenant utiliser les clients Oracle x86 et x64 de manière transparente, c'est-à-dire qu'une application x86 chargera les bibliothèques x86, une application x64 chargera les bibliothèques x64 sans aucune autre modification sur votre système.

  • Il est probablement judicieux de définir votre TNS_ADMIN variable d'environnement (resp. TNS_ADMIN entrées dans le Registre) à un emplacement commun, par exemple TNS_ADMIN=C:\Oracle\Common\network .

Commandes pour créer des liens symboliques :

cd C:\Windows\System32
mklink /d ora112 C:\Oracle\11.2\Client_x64
cd C:\Windows\SysWOW64
mklink /d ora112 C:\Oracle\11.2\Client_x86

Remarques :

Les deux liens symboliques doivent avoir le même nom, par ex. ora112 .

Malgré leurs noms dossier C:\Windows\System32 contient les bibliothèques x64, alors que C:\Windows\SysWOW64 contient les bibliothèques x86 (32 bits). Ne soyez pas confus.