cx_oracle не удалось получить дескриптор среды Oracle

При попытке получить соединение с Oracle Database Im получает следующую ошибку:

File "test.py", line 5, in <module>
    conn = cx_Oracle.Connection('dbuser/dbpass@fqdn')
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle

тестовый код:

import os
#os.environ['ORACLE_HOME']='/oracle/client/112_64/'
import cx_Oracle

conn = cx_Oracle.Connection('dbuser/dbpass@fqdn')

Мои пути установлены так:

ORACLE_BASE=/oracle/oracle-client
ORACLE_HOME=/oracle/oracle-client/112_64
LD_LIBRARY_PATH=/oracle/client/112_64/:/oracle/oracle-client/112_64/lib/
PATH=/oracle/oracle-client/112_64/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/my_user/bin

Установленная версия Oracle-11g, libocci.so.11.1а версия cx_Oracle-5.2.1

Я не знаю, в чем может быть проблема. Может ли кто-то дать мне подсказку?

1 ответ

  1. Эта ошибка (неспособность получить дескриптор среды Oracle) является способом Oracle сообщить вам, что что-то не так с вашей конфигурацией. В вашем случае у вас есть различные пути, которые могут быть источником проблемы. Один говорит «/ oracle / oracle-client», а другой — «/oracle/client». Вы должны выяснить, какой из них правильный и настроить вещи соответственно.

    Для подключения к базе данных можно использовать SQL*Plus. Если это работает, то cx_Oracle также должен работать.

    Вы также можете использовать команду ldd, чтобы узнать, находит ли система правильную библиотеку. Вроде этого:

    ldd /path/to/cx_Oracle.so
    

    Эта ошибка также может появиться, если у вас есть версия cx_Oracle, скомпилированная против 12c, но использующая клиент 11g (например). Или у вас есть кусочки двух разных клиентов, загружаемых одновременно. Но в вашем случае я сильно подозреваю противоречивые пути!

    Если вы находитесь в дистрибутиве Linux, который основан на RPM (Oracle Linux, Red Hat Linux, Fedora и т.д.) Я настоятельно рекомендую использовать мгновенные клиентские RPM, которые предоставляются. Они делают конфигурацию чрезвычайно простой, и никакие переменные среды не требуются для сборки и установки cx_Oracle (начиная с 5.2). Вы можете найти их здесь: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html