Oracle
 sql >> база данни >  >> RDS >> Oracle

InterfaceError:Не може да се получи манипулатор на средата на Oracle; ORACLE_HOME е правилен и SQL*Plus ще се свърже

Каква версия на Windows използвате? 32 или 64 бита е?

Вашият Oracle Instant Client ли е 32 или 64 малко?

Вашата инсталация на Python 32 ли е или 64 малко?

Вашият cx_oracle правилната версия ли е? 32 или 64 малко?

MSVCR90.dll е част от пакета за повторно разпространение Microsoft Visual C++ 2008 SP1.

Налична е 32-битова версия тук , налична 64-битова версия тук .

IESHIMS.dll ще се намира в C:\Program Files\Internet Explorer\Ieshims.dll (32-битово местоположение на Windows или 64-битово местоположение на Windows) или C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (32-битово местоположение на Windows на 64-битов Windows) , ако вашата версия на Windows е Vista или по-нова.

GPSVC.dll трябва да се намира в C:\Windows\System32 .

Dependency Walker отчита тези последни 2 DLL файлове като липсващи, тъй като се използват от Windows Error Reporting, които използват IEFrame.DLL и се зареждат със закъснение, което означава, че може никога да не са необходими.

Открих, че за да накарате cx_oracle да импортира чисто, трябва да се уверите, че версиите на неговите зависимости съвпадат. Също така трябва да се уверите, че инсталацията на клиента на Oracle съответства на вашия ORACLE_HOME и вашата променлива PATH съдържа %ORACLE_HOME%/bin , който е зададен като променлива на средата или в системния регистър, и че вашият файл tnsnames.ora живее в стойността, на която е зададен TNS_ADMIN. Както е посочено вEmmanuel Отговорът на е, стойността по подразбиране за ненастроена настройка на TNS_ADMIN е %ORACLE_HOME%\network\admin .

Също така рядко използвах мигновената клиентска версия на инсталатора на oracle, освен ако не е абсолютно необходимо, тъй като за разлика от другите версии, тя не задава винаги, че са зададени или поддържани правилно Path, ORACLE_HOME или TNS_ADMIN, което води до това, че tnsnames.ora и OCI.dll не са намерени. Това става по-сложно, когато имате няколко версии на Python или Oracle на една и съща машина.

За да ги зададете изрично, можете да използвате променливи на средата (или потребителски, или системни), които се намират в контролния панел под иконата на системата, задача за разширени системни настройки, раздел Разширени, бутон за среда.

Относно InterfaceError: Unable to acquire Oracle environment handle , това се случва по-специално, когато за разлика от неразрешаването на OCI.dll, cx_Oracle не знае кой OCI.dll да използва, обикновено това е така поради променливата PATH, съдържаща две или повече директории за търсене, които съдържат OCI.dll.

По-специално гарантирането, че вашият PATH съдържа само един момент от OCI.dll или от незабавната инсталация на клиента, или от инсталацията на Oracle 11G XE, трябва да реши проблема ви.

Деинсталирахте ли незабавния клиент, преди да инсталирате Oracle 11G XE?

Поставете следното в команден ред.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

За да видите текущата стойност на тези променливи.

Допълнителни ресурси



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сравнението на дати връща необичаен резултат - SQL Oracle

  2. Конструиране на временна таблица в Oracle SQL

  3. Кога трябва да използвам Index Organized Table на Oracle? Или кога не трябва?

  4. Oracle SQL - Използване на съединения за намиране на стойности в една таблица, а не в друга

  5. Oracle Transparent Data Encryption недекриптиран достъп