Oracle
 sql >> Datenbank >  >> RDS >> Oracle

InterfaceError:Oracle-Umgebungshandle konnte nicht abgerufen werden; ORACLE_HOME ist korrekt und SQL*Plus stellt eine Verbindung her

Welche Windows-Version verwendest du? Ist es 32 oder 64 Bit?

Ist Ihr Oracle Instant Client 32 oder 64 bisschen ?

Ist Ihre Python-Installation 32 oder 64 bisschen ?

Ist Ihr cx_oracle die richtige Version? 32 oder 64 bisschen ?

MSVCR90.dll ist Teil des Microsoft Visual C++ 2008 SP1 Redistributable-Pakets.

32-Bit-Version verfügbar hier , 64-Bit-Version verfügbar hier .

IESHIMS.dll befindet sich unter C:\Program Files\Internet Explorer\Ieshims.dll (32-Bit-Windows-Speicherort oder 64-Bit-Windows-Speicherort) oder C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (32-Bit-Windows-Speicherort auf 64-Bit-Windows) , wenn Ihre Windows-Version Vista oder neuer ist.

GPSVC.dll sollte sich in C:\Windows\System32 befinden .

Dependency Walker meldet diese letzten 2 DLLs als fehlend, da sie von der Windows-Fehlerberichterstattung verwendet werden, die IEFrame.DLL verwenden und verzögert geladen werden, was bedeutet, dass sie möglicherweise nie wirklich benötigt werden.

Ich habe festgestellt, dass Sie sicherstellen müssen, dass die Versionen seiner Abhängigkeiten übereinstimmen, um cx_oracle sauber zu importieren. Sie müssen außerdem sicherstellen, dass die Installation des Oracle-Clients mit Ihrem ORACLE_HOME übereinstimmt und Ihre PATH-Variable enthält %ORACLE_HOME%/bin , die als Umgebungsvariable oder in der Registrierung festgelegt ist, und dass sich Ihre Datei tnsnames.ora in dem Wert befindet, auf den TNS_ADMIN festgelegt ist. Wie in Emmanuel angegeben 's Antwort ist der Standardwert für eine nicht festgelegte TNS_ADMIN-Einstellung %ORACLE_HOME%\network\admin .

Ich habe auch selten die Instant-Client-Version des Oracle-Installationsprogramms verwendet, es sei denn, dies ist unbedingt erforderlich, da es im Gegensatz zu den anderen Versionen nicht immer sicherstellt, dass Pfad, ORACLE_HOME oder TNS_ADMIN korrekt festgelegt oder gepflegt werden, was dazu führt, dass tnsnames.ora und OCI.dll nicht vorhanden sind gefunden. Dies wird komplizierter, wenn Sie mehrere Python-Versionen oder Oracle-Versionen auf demselben Computer haben.

Um sie explizit festzulegen, können Sie Umgebungsvariablen (entweder Benutzer oder System) verwenden, die sich in der Systemsteuerung unter dem Systemsymbol, Aufgabe „Erweiterte Systemeinstellungen“, Registerkarte „Erweitert“, Schaltfläche „Umgebung“ befinden.

In Bezug auf InterfaceError: Unable to acquire Oracle environment handle , tritt dies speziell auf, wenn OCI.dll nicht aufgelöst wird, cx_Oracle weiß nicht, welche OCI.dll verwendet werden soll, normalerweise ist dies der Fall, weil die PATH-Variable zwei oder mehr Suchverzeichnisse enthält, die OCI.dll enthalten.

Stellen Sie insbesondere sicher, dass Ihr PATH nur einen Instant von OCI.dll enthält, entweder aus der Instant-Client-Installation oder der Oracle 11G XE-Installation, um Ihr Problem zu beheben.

Haben Sie den Instant Client vor der Installation von Oracle 11G XE deinstalliert?

Fügen Sie Folgendes in eine Eingabeaufforderung ein.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

Um den aktuellen Wert dieser Variablen zu sehen.

Weitere Ressourcen