Частково внаслідок виникнення проблем із конфліктними версіями або розрядності при повному встановленні клієнта 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 безпосередньо). Якщо припустити, що вони правильні, як я можу змусити миттєвого клієнта розпізнавати цю конфігурацію та використовувати LDAP для пошуку імені?
Що я спробував поки що
Я спробував встановити TNS_ADMIN
змінну середовища в каталог, який містить надані файли, і хоча це працює чудово для того, щоб миттєвий клієнт розпізнавав 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 або миттєвого клієнта (або навіть просто звичайного клієнта Oracle), які можна додати до цього питання? Я не міг знайти жодного.
where
( C:\TEMP\sqlplus.exe
). Якщо бути більш конкретним, sqlplus
це не "встановлено" на машині. Він просто сидить у поточному каталозі, біля нього - бінарні файли клієнта. Це безперечно збирання tnsnames.ora
файлу за допомогою TNS_ADMIN
змінної середовища, оскільки це вимкнено у зовсім іншій каталозі.
where oci.dll
. Це також дає очікуваний результат: C:\TEMP\oci.dll
.