libclntsh.so: невозможно открыть файл общих объектов: нет такого файла или каталога Centos 8 и python

Я пытаюсь подключить python cx_Oracle к клиентской библиотеке oracle в Centos 8, я выполнил шаги, указанные в https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html, пакеты rpm не работают, поэтому я использовал zip-пакет и настроил LD_LIBRARY_PATH в каталог, в который я распаковываю файлы Oracle, в данном случае: / opt / oracle / lib.

Когда я запускаю скрипт, я получаю:

cx_Oracle.DatabaseError: DPI-1047: не удается найти 64-разрядную клиентскую библиотеку Oracle: /opt/oracle/lib/libclntsh.so: невозможно открыть файл общих объектов: нет такого файла или каталога. См. https://cx-oracle.readthedocs.io/en/latest/. user_guide / installation.html для справки

но если я запускаю: найдите /opt/oracle/lib/libclntsh. так что он работает, и файл там, переменная env правильная в соответствии с сообщением об ошибке, но скрипт все еще не работает, если у кого-то есть предложения по исправлению этого Я был бы очень признателен.

Обновление: когда я устанавливаю DPI_DEBUG_LEVEL = 64, я получаю следующий вывод:

ODPI [04293] 2021-04-10 15:51:06.109: ODPI-C 4.1.0
ODPI [04293] 2021-04-10 15:51:06.109: debugging messages initialized at level 64
ODPI [04293] 2021-04-10 15:51:06.110: Context Parameters:
ODPI [04293] 2021-04-10 15:51:06.110: Environment Variables:
ODPI [04293] 2021-04-10 15:51:06.110:     ORACLE_HOME => "/opt/oracle"
ODPI [04293] 2021-04-10 15:51:06.110:     LD_LIBRARY_PATH => "/opt/oracle/lib"
ODPI [04293] 2021-04-10 15:51:06.110: check module directory
ODPI [04293] 2021-04-10 15:51:06.110: module name is /usr/local/lib64/python3.6/site-packages/cx_Oracle.cpython-36m-aarch64-linux-gnu.so
ODPI [04293] 2021-04-10 15:51:06.110: load in dir /usr/local/lib64/python3.6/site-packages
ODPI [04293] 2021-04-10 15:51:06.110: load with name /usr/local/lib64/python3.6/site-packages/libclntsh.so
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: /usr/local/lib64/python3.6/site-packages/libclntsh.so: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with OS search heuristics
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.19.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.19.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.18.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.18.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.12.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.12.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.11.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.11.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.20.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.20.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.21.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.21.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: check ORACLE_HOME
ODPI [04293] 2021-04-10 15:51:06.110: load in dir /opt/oracle/lib
ODPI [04293] 2021-04-10 15:51:06.110: load with name /opt/oracle/lib/libclntsh.so
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: /opt/oracle/lib/libclntsh.so: cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "cdr_parser.py", line 387, in <module>
    main()

И сценарий все еще не работает.

Обновление 2: когда я запускаю: file /opt/oracle/lib/libclntsh.so, я получаю:

/opt/oracle/lib/libclntsh.so: symbolic link to libclntsh.so.21.1

и запустив ldd /opt/oracle/lib/libclntsh. поэтому вывод:

not a dynamic executable

Кроме того, я проверил установку libaio и liabio-devel, и это правильно, моя версия Os - 64-битная, а instanclient - тоже 64-битная.


person Oscar Gallo    schedule 10.04.2021    source источник


Ответы (1)


Взгляните на документацию, указанную в сообщении об ошибке, в частности на устранение неполадок. В частности, установите для переменной среды DPI_DEBUG_LEVEL значение 64 и снова запустите сценарий. Это расскажет вам обо всех местах, в которых ведется поиск, и о том, каков был результат этой попытки. Если это не помогло, обновите свой вопрос, указав зарегистрированные результаты. Этого может быть достаточно, чтобы помочь в дальнейшем.

РЕДАКТИРОВАТЬ: как упоминал Крис, не устанавливайте переменную среды ORACLE_HOME при использовании мгновенного клиента. Кроме того, покажите результаты file /opt/oracle/lib/libclntsh.so и ldd /opt/oracle/lib/libclntsh.so и дополните свой вопрос этой информацией.

person Anthony Tuininga    schedule 10.04.2021
comment
Привет, я установил DPI_DEBUG_LEVEL на 64, вывод показывает, что переменные env верны, но библиотека все еще не загружается, я редактирую вопрос с новым выводом. - person Oscar Gallo; 10.04.2021
comment
Если вы внимательно следовали инструкциям, у вас не установлен ORACLE_HOME. Мы не рекомендуем устанавливать это для Instant Client. Что нужно сделать: проверьте, что у вас установлен libaio. Проверьте, работает ли SQL * Plus. Убедитесь, что процесс Python имеет доступ к /opt/oracle/lib и к файлам в нем. - person Christopher Jones; 12.04.2021
comment
Я добавил еще несколько вещей, чтобы обновить ваш вопрос. Подробнее см. В моем ответе. - person Anthony Tuininga; 12.04.2021
comment
Я учел ваши предложения и обновил свой вопрос результатами - person Oscar Gallo; 12.04.2021
comment
Я вижу это. Вам необходимо выяснить, почему вы получаете ошибку, а не динамический исполняемый файл. - person Anthony Tuininga; 13.04.2021
comment
Ну, я наконец знаю, в чем ошибка, потому что мой сервер основан на архитектуре aarch64, @AnthonyTuininga, скажите, пожалуйста, есть ли альтернатива для подключения к базе данных Oracle в этом случае? - person Oscar Gallo; 16.04.2021
comment
Вам нужно будет найти поддерживаемого клиента. Вы можете добавить запрос на улучшение на странице проблем cx_Oracle - просто чтобы убедиться, что руководство осведомлено о желании использовать альтернативные платформы. - person Anthony Tuininga; 16.04.2021