sql >> Databáze >  >> RDS >> Oracle

InterfaceError:Nelze získat popisovač prostředí Oracle; ORACLE_HOME je správně a SQL*Plus se připojí

Jakou verzi systému Windows používáte? Je to 32 nebo 64 bit?

Je váš okamžitý klient Oracle 32 nebo 64 bit?

Je vaše instalace Pythonu 32 nebo 64 bit?

Je vaše cx_oracle správná verze? 32 nebo 64 bit?

MSVCR90.dll je součástí redistribuovatelného balíčku Microsoft Visual C++ 2008 SP1.

32bitová verze je k dispozici zde , 64bitová verze je k dispozici zde .

IESHIMS.dll bude umístěn v C:\Program Files\Internet Explorer\Ieshims.dll (umístění 32bitového systému Windows nebo umístění 64bitového systému Windows) nebo C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (32bitové umístění systému Windows v 64bitovém systému Windows), pokud je vaše verze systému Windows Vista nebo novější.

GPSVC.dll by měl žít v C:\Windows\System32 .

Dependency Walker hlásí tyto poslední 2 DLL jako chybějící, protože je používá Windows Error Reporting, které používají IEFrame.DLL a jsou načteny se zpožděním, což znamená, že ve skutečnosti nemusí být nikdy potřeba.

Zjistil jsem, že k čistému importu cx_oracle musíte zajistit, aby se verze jeho závislostí shodovaly. Musíte také zajistit, aby instalace klienta Oracle odpovídala vašemu ORACLE_HOME a vaše proměnná PATH obsahuje %ORACLE_HOME%/bin , která je nastavena jako proměnná prostředí nebo v registru a že váš soubor tnsnames.ora žije s hodnotou TNS_ADMIN nastavenou na. Jak je uvedeno v Emanuel Odpověď uživatele, výchozí hodnota pro nenastavené nastavení TNS_ADMIN je %ORACLE_HOME%\network\admin .

Zřídka jsem také používal verzi okamžitého klienta instalátoru Oracle, pokud to nebylo nezbytně nutné, protože na rozdíl od ostatních verzí není vždy zajištěno správné nastavení nebo udržování cesty, ORACLE_HOME nebo TNS_ADMIN, což vede k tomu, že tnsnames.ora a OCI.dll nejsou nalezeno. To se komplikuje, když máte více verzí Pythonu nebo verzí Oracle na stejném počítači.

Chcete-li je explicitně nastavit, můžete použít proměnné prostředí (buď Uživatel nebo Systém), které se nacházejí v Ovládacích panelech pod ikonou systému, úlohou Pokročilá nastavení systému, záložkou Upřesnit, tlačítkem Prostředí.

Ohledně InterfaceError: Unable to acquire Oracle environment handle , k tomu dochází konkrétně, když není vyřešeno OCI.dll, cx_Oracle neví, který OCI.dll použít, obvykle je tomu tak kvůli proměnné PATH obsahující dva nebo více vyhledávacích adresářů obsahujících OCI.dll.

Váš problém by měl vyřešit konkrétně zajištění toho, že vaše PATH obsahuje pouze jeden okamžik OCI.dll buď z okamžité klientské instalace, nebo z instalace Oracle 11G XE.

Odinstalovali jste okamžitého klienta před instalací Oracle 11G XE?

Vložte následující do příkazového řádku.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

Chcete-li zobrazit aktuální hodnotu těchto proměnných.

Další zdroje



  1. Laravel Schema Builder mění modul úložiště

  2. Volání členské funkce find() na jiném než objektu při vkládání dat pomocí PHP mySQL simpleHTMLDOM

  3. Chyba hodnoty <br typu java.lang.String nelze převést na JSONObject

  4. PostgreSQL Connection Pooling s PgBouncer