#python #linux #oracle #ldap
#python #linux #Oracle #ldap
Вопрос:
Я подключаюсь к базе данных Oracle с использованием LDAP и библиотеки Python cx_Oracle. У меня есть соответствующие файлы sqlnet.ora, ldap.ora и tnsnames.ora. На моем компьютере с Windows все работает нормально, используя клиент Oracle 12.1 и следующий код Python:
import cx_Oracle
connection = cx_Oracle.connect(user/password@db, mode=cx_Oracle.SYSDBA)
Я установил Oracle instant client 12.1 на свой компьютер с Linux (Debian), следуя методу установки zip-файла, рекомендованному на веб-сайте Oracle (внизу страницы https://www.oracle.com/be/database/technologies/instant-client/linux-x86-64-downloads.html ).
ldconfig правильно перечисляет клиентские библиотеки oracle и их пути.
Я копирую точно такие же файлы sqlnet.ora, ldap.ora и tnsnames.ora с моего компьютера с Windows на мой компьютер с Linux в /opt/oracle/instantclient_12_1/network/admin, как указано в документации cx_Oracle .
Теперь, запустив приведенный выше код Python на моем компьютере с Linux, я получаю следующую ошибку:
cx_Oracle.DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified
Я также попытался установить переменную среды TNS_ADMIN=/opt/oracle/instantclient_12_1/network/admin
ORACLE_HOME=/opt/oracle/instantclient_12_1/
, но безуспешно
Может ли кто-нибудь из вас помочь мне отладить это и понять, почему конфигурация клиента на моем компьютере с Linux не работает?
Комментарии:
1. Никогда не устанавливайте ORACLE_HOME с помощью Instant Client. Нет необходимости устанавливать TNS_ADMIN, потому что вы уже переместили файлы в расположение по умолчанию. Ваша ошибка в другом месте: не удалось достичь любого имени хоста, которое у вас есть в файлах конфигурации.
2. Я могу успешно выполнить пинг хостов в файлах конфигурации. Есть ли какой-либо способ заставить библиотеку cx_Oracle распечатать загруженную конфигурацию?
Ответ №1:
Установил последнюю версию клиента 19, и все работает так, как ожидалось.
Комментарии:
1. Что вы подразумеваете под «последним клиентом 19»? Не могли бы вы поподробнее ?