sql >> Database teknologi >  >> RDS >> Oracle

InterfaceError:Kan ikke erhverve Oracle-miljøhåndtaget; ORACLE_HOME er korrekt, og SQL*Plus vil oprette forbindelse

Hvilken version af Windows kører du? Er det 32 ​​eller 64 bit?

Er din Oracle Instant Client 32 eller 64 lidt?

Er din Python-installation 32 eller 64 lidt?

Er din cx_oracle den rigtige version? 32 eller 64 lidt?

MSVCR90.dll er en del af Microsoft Visual C++ 2008 SP1 Redistributable-pakken.

32 bit version tilgængelig her , 64 bit version tilgængelig her .

IESHIMS.dll vil være placeret i C:\Program Files\Internet Explorer\Ieshims.dll (32 bit Windows-placering eller 64-bit Windows-placering) eller C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (32-bit Windows-placering på 64-bit Windows) , hvis din version af Windows er Vista eller nyere.

GPSVC.dll bør leve i C:\Windows\System32 .

Dependency Walker rapporterer disse sidste 2 DLL'er som manglende, fordi der bruges af Windows Error Reporting, som bruger IEFrame.DLL og er forsinket indlæst, hvilket betyder, at de faktisk aldrig bliver nødvendige.

Jeg fandt ud af, at for at få cx_oracle til at importere rent, skal du sikre, at versionerne af dets afhængigheder matcher. Du skal også sikre dig, at Oracle-klientinstallationen matcher din ORACLE_HOME og din PATH-variabel indeholder %ORACLE_HOME%/bin , som er indstillet som en Environment-variabel eller i registreringsdatabasen, og at din tnsnames.ora-fil lever i værdien TNS_ADMIN er sat til. Som anført i Emmanuel s svar, er standardværdien for en deaktiveret TNS_ADMIN-indstilling %ORACLE_HOME%\network\admin .

Jeg brugte også sjældent instant-klientversionen af ​​oracle-installationsprogrammet, medmindre det er absolut nødvendigt, fordi i modsætning til de andre versioner, det ikke indstiller altid sikre er indstillet eller vedligeholdt Sti, ORACLE_HOME eller TNS_ADMIN korrekt, hvilket fører til, at tnsnames.ora og OCI.dll ikke bliver sat eller vedligeholdt. fundet. Dette bliver mere kompliceret, når du har flere Python-versioner eller Oracle-versioner på den samme maskine.

For at indstille dem eksplicit kan du bruge miljøvariabler (enten bruger eller system) , som findes i kontrolpanelet under systemikonet, opgaven Avancerede systemindstillinger, fanen Avanceret, knappen Miljø.

Angående InterfaceError: Unable to acquire Oracle environment handle , dette sker specifikt i modsætning til ikke at løse OCI.dll , cx_Oracle ved ikke hvilken OCI.dll der skal bruges, normalt er dette tilfældet på grund af PATH-variablen, der indeholder to eller flere søgemapper, der indeholder OCI.dll.

Specifikt at sikre, at din PATH kun indeholder ét øjeblik af OCI.dll enten fra den øjeblikkelige klientinstallation eller Oracle 11G XE-installationen burde løse dit problem.

Afinstallerede du instant-klienten, før du installerede Oracle 11G XE?

Indsæt følgende i en kommandoprompt.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

For at se den aktuelle værdi af disse variable.

Yderligere ressourcer



  1. SQLException:Ingen passende driver fundet til jdbc:oracle:thin:@//localhost:1521/orcl

  2. UTF-8 output med CakePHP

  3. MySQL:Oprettelse af nyt unikt felt i allerede udfyldt tabel

  4. Fejlkode:1064 i mysql