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

InterfaceError:impossibile acquisire l'handle dell'ambiente Oracle; ORACLE_HOME è corretto e SQL*Plus si connetterà

Che versione di Windows stai utilizzando? È a 32 o 64 bit?

Il tuo Oracle Instant Client è 32 o 64 po ?

La tua installazione di Python è 32 o 64 po ?

Il tuo cx_oracle è la versione corretta? 32 o 64 po ?

MSVCR90.dll fa parte del pacchetto ridistribuibile di Microsoft Visual C++ 2008 SP1.

Versione a 32 bit disponibile qui , versione a 64 bit disponibile qui .

IESHIMS.dll si troverà in C:\Program Files\Internet Explorer\Ieshims.dll (Posizione Windows a 32 bit o Posizione Windows a 64 bit) o ​​C:\Programmi\Internet Explorer (x86)\Ieshims.dll` (Posizione Windows a 32 bit su Windows a 64 bit), se la versione di Windows in uso è Vista o successiva.

GPSVC.dll dovrebbe risiedere in C:\Windows\System32 .

Dependency Walker segnala queste ultime 2 DLL come mancanti perché sono utilizzate da Segnalazione errori di Windows che utilizzano IEFrame.DLL e vengono caricate in ritardo, il che significa che potrebbero non essere mai effettivamente necessarie.

Ho scoperto che per ottenere cx_oracle da importare in modo pulito, è necessario assicurarsi che le versioni delle sue dipendenze corrispondano. Devi anche assicurarti che l'installazione del client Oracle corrisponda al tuo ORACLE_HOME e la tua variabile PATH contiene %ORACLE_HOME%/bin , che è impostato come variabile di ambiente o nel registro e che il tuo file tnsnames.ora risiede nel valore su cui è impostato TNS_ADMIN. Come affermato in Emmanuel risposta, il valore predefinito per un'impostazione TNS_ADMIN non impostata è %ORACLE_HOME%\network\admin .

Ho anche usato raramente la versione client istantanea del programma di installazione di Oracle a meno che non sia assolutamente necessario perché, a differenza delle altre versioni, non è sempre impostato assicurarsi che Path, ORACLE_HOME o TNS_ADMIN non siano corretti, il che porta a tnsnames.ora e OCI.dll non essere fondare. Questo diventa più complicato quando hai più versioni di Python o versioni di Oracle sulla stessa macchina.

Per impostarli in modo esplicito puoi utilizzare le variabili d'ambiente (utente o sistema), che risiedono nel pannello di controllo sotto l'icona del sistema, l'attività Impostazioni di sistema avanzate, la scheda Avanzate, il pulsante Ambiente.

Riguardo a InterfaceError: Unable to acquire Oracle environment handle , questo si verifica in particolare quando si oppone alla mancata risoluzione di OCI.dll , cx_Oracle non sa quale OCI.dll usare, normalmente questo è il caso a causa della variabile PATH contenente due o più directory di ricerca che contengono OCI.dll.

In particolare, assicurati che il tuo PATH contenga solo un istante di OCI.dll dall'installazione del client istantaneo o dall'installazione di Oracle 11G XE dovrebbe risolvere il tuo problema.

Hai disinstallato il client istantaneo prima di installare Oracle 11G XE?

Incolla quanto segue in un prompt dei comandi.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

Per vedere il valore corrente di queste variabili.

Ulteriori risorse