sql >> Databasteknik >  >> RDS >> Oracle

InterfaceError:Kan inte förvärva Oracle-miljöhandtaget; ORACLE_HOME är korrekt och SQL*Plus kommer att ansluta

Vilken version av Windows kör du? Är det 32 ​​eller 64 bitar?

Är din Oracle Instant Client 32 eller 64 lite?

Är din Python-installation 32 eller 64 lite?

Är din cx_oracle rätt version? 32 eller 64 lite?

MSVCR90.dll är en del av Microsoft Visual C++ 2008 SP1 Redistributable-paketet.

32-bitarsversion tillgänglig här , 64-bitarsversion tillgänglig här .

IESHIMS.dll kommer att finnas i C:\Program Files\Internet Explorer\Ieshims.dll (32-bitars Windows-plats eller 64-bitars Windows-plats) eller C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (32-bitars Windows-plats på 64-bitars Windows) , om din version av Windows är Vista eller nyare.

GPSVC.dll bör finnas i C:\Windows\System32 .

Dependency Walker rapporterar de två sista DLL-filerna som saknade eftersom de används av Windows Error Reporting som använder IEFrame.DLL och laddas med fördröjning, vilket betyder att de kanske aldrig faktiskt behövs.

Jag upptäckte att för att få cx_oracle att importera rent måste du se till att versionerna av dess beroenden matchar. Du måste också se till att Oracle-klientinstallationen matchar din ORACLE_HOME och din PATH-variabel innehåller %ORACLE_HOME%/bin , som är inställd som en miljövariabel eller i registret, och att din tnsnames.ora-fil lever i värdet TNS_ADMIN är inställt på. Som det står i Emmanuel s svar är standardvärdet för en oinställd TNS_ADMIN-inställning %ORACLE_HOME%\network\admin .

Jag använde också sällan instant-klientversionen av Oracle-installationsprogrammet såvida det inte är absolut nödvändigt eftersom det till skillnad från de andra versionerna inte alltid ställer in eller underhålls Path, ORACLE_HOME eller TNS_ADMIN korrekt, vilket leder till att tnsnames.ora och OCI.dll inte blir inställda eller underhållna. hittades. Detta blir mer komplicerat när du har flera Python-versioner eller Oracle-versioner på samma maskin.

För att explicit ställa in dem kan du använda miljövariabler (antingen användare eller system) , som finns i kontrollpanelen under systemikonen, uppgiften Avancerade systeminställningar, fliken Avancerat, knappen Miljö.

Angående InterfaceError: Unable to acquire Oracle environment handle , detta inträffar specifikt i motsats till att inte lösa OCI.dll , cx_Oracle vet inte vilken OCI.dll som ska användas, normalt är detta fallet på grund av PATH-variabeln som innehåller två eller flera sökkataloger som innehåller OCI.dll.

Specifikt se till att din PATH bara innehåller ett ögonblick av OCI.dll antingen från direktklientinstallationen eller Oracle 11G XE-installationen bör lösa problemet.

Avinstallerade du instant-klienten innan du installerade Oracle 11G XE?

Klistra in följande i en kommandotolk.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

För att se det aktuella värdet för dessa variabler.

Ytterligare resurser



  1. Ordning efter värdens ordning i en SQL IN()-sats

  2. Microsoft SQL Server 2005/2008:XML vs text/varchar datatyp

  3. Introduktion till PL/SQL Bulk Collect i Oracle Database

  4. En djupgående titt på databasindexering