sql >> Base de Datos >  >> RDS >> Oracle

InterfaceError:no se puede adquirir el identificador del entorno de Oracle; ORACLE_HOME es correcto y SQL*Plus se conectará

Qué versión de Windows tienes ? ¿Es de 32 o de 64 bits?

¿Su Oracle Instant Client es 32 ? o 64 poco?

¿Es su instalación de Python 32 o 64 poco?

¿Es su cx_oracle la versión correcta? 32 o 64 poco?

MSVCR90.dll es parte del paquete redistribuible de Microsoft Visual C++ 2008 SP1.

Versión de 32 bits disponible aquí , versión de 64 bits disponible aquí .

IESHIMS.dll se ubicará en C:\Program Files\Internet Explorer\Ieshims.dll (Ubicación de Windows de 32 bits o Ubicación de Windows de 64 bits) o C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (Ubicación de Windows de 32 bits en Windows de 64 bits), si su versión de Windows es Vista o posterior.

GPSVC.dll debe vivir en C:\Windows\System32 .

Dependency Walker informa que estos 2 últimos archivos DLL faltan porque los usa el Informe de errores de Windows, que usa IEFrame.DLL y se cargan con retraso, lo que significa que es posible que nunca se necesiten.

Descubrí que para que cx_oracle se importe sin problemas, debe asegurarse de que las versiones de sus dependencias coincidan. También debe asegurarse de que la instalación del cliente de Oracle coincida con su ORACLE_HOME y su variable PATH contiene %ORACLE_HOME%/bin , que se establece como una variable de entorno o en el registro, y que su archivo tnsnames.ora vive en el valor en el que se establece TNS_ADMIN. Como se indica en Emmanuel La respuesta de , el valor predeterminado para una configuración TNS_ADMIN no configurada es %ORACLE_HOME%\network\admin .

Rara vez utilicé la versión de cliente instantáneo del instalador de Oracle a menos que sea absolutamente necesario porque, a diferencia de las otras versiones, no se configura siempre para asegurarse de que se configuren o mantengan Path, ORACLE_HOME o TNS_ADMIN correctamente, lo que lleva a que tnsnames.ora y OCI.dll no se fundar. Esto se vuelve más complicado cuando tiene varias versiones de Python o versiones de Oracle en la misma máquina.

Para configurarlos explícitamente, puede usar Variables de entorno (ya sea de usuario o de sistema), que se encuentran en el Panel de control bajo el icono del sistema, la tarea Configuración avanzada del sistema, la pestaña Avanzado, el botón Entorno.

Con respecto a InterfaceError: Unable to acquire Oracle environment handle , esto ocurre específicamente cuando se opone a no resolver OCI.dll , cx_Oracle no sabe qué OCI.dll usar, normalmente este es el caso debido a que la variable PATH contiene dos o más directorios de búsqueda que contienen OCI.dll.

Específicamente, asegurarse de que su PATH solo contenga un instante de OCI.dll, ya sea de la instalación instantánea del cliente o de la instalación de Oracle 11G XE, debería solucionar su problema.

¿Desinstaló el cliente instantáneo antes de instalar Oracle 11G XE?

Pegue lo siguiente en un símbolo del sistema.

echo The current ORACLE_HOME is %ORACLE_HOME%

echo The current TNS_ADMIN is %TNS_ADMIN%

echo The current PATH is %PATH%

Para ver el valor actual de estas variables.

Más recursos