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

InterfaceError :impossible d'acquérir le descripteur d'environnement Oracle ; ORACLE_HOME est correct et SQL*Plus se connectera

Quelle version de Windows utilisez-vous ? C'est 32 ou 64 bits ?

Votre Oracle Instant Client est-il 32 ou 64 un peu ?

Votre installation Python est-elle 32 ou 64 un peu ?

Votre cx_oracle est-il la bonne version ? 32 ou 64 un peu ?

MSVCR90.dll fait partie du package redistribuable Microsoft Visual C++ 2008 SP1.

Version 32 bits disponible ici , version 64 bits disponible ici .

IESHIMS.dll sera situé dans C:\Program Files\Internet Explorer\Ieshims.dll (emplacement Windows 32 bits ou emplacement Windows 64 bits) ou C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (emplacement Windows 32 bits sur Windows 64 bits), si votre version de Windows est Vista ou plus récente.

GPSVC.dll doit résider dans C:\Windows\System32 .

Dependency Walker signale que ces 2 dernières DLL sont manquantes car elles sont utilisées par le rapport d'erreurs Windows qui utilise IEFrame.DLL et sont chargées en retard, ce qui signifie qu'elles ne seront peut-être jamais nécessaires.

J'ai trouvé que pour que cx_oracle importe proprement, vous devez vous assurer que les versions de ses dépendances correspondent. Vous devez également vous assurer que l'installation du client Oracle correspond à votre ORACLE_HOME et votre variable PATH contient %ORACLE_HOME%/bin , qui est définie en tant que variable d'environnement ou dans le registre, et que votre fichier tnsnames.ora réside dans la valeur sur laquelle TNS_ADMIN est défini. Comme indiqué dans Emmanuel , la valeur par défaut pour un paramètre TNS_ADMIN non défini est %ORACLE_HOME%\network\admin .

J'ai aussi rarement utilisé la version client instantanée du programme d'installation d'Oracle, sauf en cas d'absolue nécessité, car contrairement aux autres versions, elle ne définit pas toujours que Path, ORACLE_HOME ou TNS_ADMIN sont définis ou maintenus correctement, ce qui conduit à tnsnames.ora et OCI.dll n'étant pas trouvé. Cela devient plus compliqué lorsque vous avez plusieurs versions de Python ou des versions d'Oracle sur la même machine.

Pour les définir explicitement, vous pouvez utiliser les variables d'environnement (utilisateur ou système) , qui se trouvent dans le Panneau de configuration sous l'icône Système, la tâche Paramètres système avancés, l'onglet Avancé, le bouton Environnement.

Concernant InterfaceError: Unable to acquire Oracle environment handle , cela se produit spécifiquement lorsqu'il est opposé à la non-résolution de OCI.dll , cx_Oracle ne sait pas quel OCI.dll utiliser, normalement c'est le cas en raison de la variable PATH contenant deux ou plusieurs répertoires de recherche contenant OCI.dll.

Assurez-vous spécifiquement que votre PATH ne contient qu'un seul instant d'OCI.dll provenant de l'installation du client instantané ou de l'installation Oracle 11G XE devrait résoudre votre problème.

Avez-vous désinstallé le client instantané avant d'installer Oracle 11G XE ?

Collez ce qui suit dans une invite de commande.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

Pour voir la valeur actuelle de ces variables.

Autres ressources