Частично из-за проблем с конфликтующими версиями или разрядностью при полной установке клиента Oracle моя команда разработчиков (членом которой я являюсь) перешла на использование Oracle Instant Client и в большинстве случаев избегала установки на наших машинах разработки. новые проекты. Это сработало довольно хорошо, даже до такой степени, что мы развернули в производство с этой настройкой. Поскольку мы в основном магазин .NET, мы используем собственный клиент (с оболочками .NET), а не Java.
Теперь клиент требует, чтобы мы зарегистрировали службу базы данных на сервере LDAP и использовали сервер LDAP для поиска имен. Они предоставили sqlnet.ora
и ldap.ora
файлы (и сопровождающий файл конфигурации шифрования), которые кажутся правильными. В частности, sqlnet.ora
файл определяет LDAP как возможный источник для поиска имен сетевых сервисов:
names.directory_path=(tnsnames,ldap)
Я уверен, что машина, с которой я работаю, может использовать LDAP для доступа к службе, поскольку я смог сделать это с помощью SQL Developer (что позволило мне напрямую вводить информацию LDAP). Предполагая, что они верны, как я могу заставить Instant Client распознавать эту конфигурацию и использовать LDAP для поиска имени?
Что я пробовал до сих пор
Я попытался установить TNS_ADMIN
переменную окружения в каталог, который содержит предоставленные файлы, и хотя это прекрасно работает для того, чтобы Instant Client распознал tnsnames.ora
файл, этого, похоже, недостаточно, чтобы он начал смотреть на LDAP. Вот результаты (с измененными путями, именами пользователей и паролями):
(Следующие команды являются командной строкой Windows, но я думаю, что нечто подобное выполнимо в Linux. Здесь также sqlplus
показана версия Instant, с сопровождающими двоичными файлами Instant Client в том же каталоге.)
C:\TEMP>SET TNS_ADMIN=C:\path\to\sqlnet\ldap\and\tnsnames\ora\files
C:\TEMP>echo %TNS_ADMIN%
C:\path\to\sqlnet\ldap\and\tnsnames\ora\files
C:\TEMP>sqlplus.exe USERNAME/PASSWORD@LOCALTNSNAME
SQL*Plus: Release 11.2.0.2.0 Production on Mon Jul 7 10:22:25 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Produ
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
C:\TEMP>sqlplus.exe USERNAME/PASSWORD@LDAPTNSNAME
SQL*Plus: Release 11.2.0.2.0 Production on Mon Jul 7 10:24:21 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Примечание
Есть ли в этом вопросе теги для TNS, LDAP или Instant Client (или даже просто для обычного клиента Oracle)? Я не мог найти ни одного.
where
(C:\TEMP\sqlplus.exe
). Чтобы быть более конкретным,sqlplus
не «установлен» на машине. Он просто сидит в текущем каталоге, рядом с ним находятся двоичные файлы клиента. Он определенно забираетtnsnames.ora
файл, используяTNS_ADMIN
переменную окружения, поскольку он находится в совершенно другом каталоге.where oci.dll
. Это также дает ожидаемый результат:C:\TEMP\oci.dll
.Ответы:
Поместите
sqlnet.ora
иldap.ora
файлы в$ORACLE_ADMIN
каталоге и убедитесь , чтобы установить переменные окружения. Я сделал мойTNS_ADMIN
каталог(Linux) мой .bashrc
И я смог подключиться к БД не по моему
tnsnames.ora
источник