Как исправить: cx_Oracle.DatabaseError: DPI-1047: Не удается найти 64-битную клиентскую библиотеку Oracle - Python - PullRequest
0 голосов
/ 24 апреля 2019

Я устанавливаю соединение с oracle 11g, которое находится на удаленном сервере, используя cx_oracle 7 с python 3.6.7. моя ОС в Ubuntu 18.04

Я установил клиентскую библиотеку oracle Instant с библиотекой libclntsh.so, но не получил ожидаемый результат.

вот код, который я использую для подключения к Oracle db

connection = cx_Oracle.connect("username/password@host/port")
print (connection.version)
connection.close()

при запуске скрипта я ожидаю получить версию соединения, вместо этого я получаю следующее сообщение об ошибке

Файл "script.py", строка 13, в connection = cx_Oracle.connect ("имя пользователя / пароль @ хост / порт") cx_Oracle.DatabaseError: DPI-1047: невозможно найти 64-битный Oracle Клиентская библиотека: "libclntsh.so: не удается открыть общий объектный файл: нет такого файл или каталог ". Смотрите https://oracle.github.io/odpi/doc/installation.html#linux для помощи

1 Ответ

0 голосов
/ 24 апреля 2019

После дополнительных исследований я получил решение от ubunu community , после того как вы установили oracle instantclient, вам нужно будет интегрировать библиотеки oracle следующим образом:

экспорт LD_LIBRARY_PATH = / USR / Библиотека / оракул / <version> / клиент (64) / Библиотека / $ {LD_LIBRARY_PATH: +: $ LD_LIBRARY_PATH}

Например, версия 12.1 для Linux x86_64:

экспорт LD_LIBRARY_PATH = / USR / Lib / оракул / 12,1 / client64 / Библиотека / $ {LD_LIBRARY_PATH: +: $ LD_LIBRARY_PATH}

где <version> указывает версию вашего оракула, например, 11.2, 12.2
Параметр подключения должен быть следующим: connection = cx_Oracle.connect("username/password@host/service_name e.g orcl")

чтобы получить имя слушателя / service_name, введите следующее в оракуле sqlplus

SQL> show parameter local_listener

значение слушателя

...