sql >> Database >  >> RDS >> Oracle

InterfaceError:kan Oracle-omgevingshandle niet verkrijgen; ORACLE_HOME is correct en SQL*Plus zal verbinding maken

Welke versie van Windows draai je? Is het 32 ​​of 64 bit?

Is uw Oracle Instant Client 32 of 64 beetje ?

Is uw Python-installatie 32 of 64 beetje ?

Is uw cx_oracle de juiste versie? 32 of 64 beetje ?

MSVCR90.dll maakt deel uit van het Microsoft Visual C++ 2008 SP1 Redistributable-pakket.

32-bits versie beschikbaar hier , 64-bits versie beschikbaar hier .

IESHIMS.dll bevindt zich in C:\Program Files\Internet Explorer\Ieshims.dll (32-bits Windows-locatie of 64-bits Windows-locatie) of C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (32-bits Windows-locatie op 64-bits Windows), als uw versie van Windows Vista of nieuwer is.

GPSVC.dll zou moeten leven in C:\Windows\System32 .

Dependency Walker meldt dat deze laatste 2 DLL's ontbreken omdat ze door Windows Error Reporting worden gebruikt die IEFrame.DLL gebruiken en vertraagd worden geladen, wat betekent dat ze misschien nooit echt nodig zijn.

Ik ontdekte dat om cx_oracle schoon te laten importeren, je ervoor moet zorgen dat de versies van de afhankelijkheden overeenkomen. U moet er ook voor zorgen dat de Oracle-clientinstallatie overeenkomt met uw ORACLE_HOME en uw PATH-variabele bevat %ORACLE_HOME%/bin , die is ingesteld als een omgevingsvariabele of in het register, en dat uw tnsnames.ora-bestand leeft in de waarde waar TNS_ADMIN op is ingesteld. Zoals vermeld in Emmanuel 's antwoord, de standaardwaarde voor een uitgeschakelde TNS_ADMIN-instelling is %ORACLE_HOME%\network\admin .

Ik heb ook zelden de instant-clientversie van het oracle-installatieprogramma gebruikt, tenzij dit absoluut noodzakelijk is, omdat het, in tegenstelling tot de andere versies, niet altijd zorgt dat Pad, ORACLE_HOME of TNS_ADMIN correct worden ingesteld of onderhouden, wat ertoe leidt dat tnsnames.ora en OCI.dll niet zijn gevonden. Dit wordt ingewikkelder als je meerdere Python-versies of Oracle-versies op dezelfde machine hebt staan.

Om ze expliciet in te stellen, kunt u Omgevingsvariabelen (Gebruiker of Systeem) gebruiken, die in het Configuratiescherm staan ​​onder het Systeempictogram, de taak Geavanceerde systeeminstellingen, het tabblad Geavanceerd, de knop Omgeving.

Betreffende InterfaceError: Unable to acquire Oracle environment handle , dit gebeurt met name wanneer cx_Oracle, in tegenstelling tot het niet oplossen van OCI.dll , niet weet welke OCI.dll moet worden gebruikt, normaal gesproken is dit het geval vanwege de PATH-variabele die twee of meer zoekmappen bevat die OCI.dll bevatten.

Door ervoor te zorgen dat uw PATH slechts één moment van OCI.dll bevat, ofwel van de instant-clientinstallatie of de Oracle 11G XE-installatie, zou uw probleem moeten worden opgelost.

Heeft u de instant-client verwijderd voordat u Oracle 11G XE installeerde?

Plak het volgende in een opdrachtprompt.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

Om de huidige waarde van deze variabelen te zien.

Verdere bronnen



  1. Integratie met een ander systeem

  2. Importeren van 8GB mysql dump duurt lang

  3. IF-voorwaarde in mysql-script

  4. JDBC versus webservice voor Android