Sebagian sebagai akibat dari memiliki masalah dengan versi yang bertentangan atau bitness dengan instalasi penuh klien Oracle, tim pengembangan saya (yang saya anggotanya) telah bergerak ke arah menggunakan Oracle Instant Client dan menghindari instalasi pada mesin pengembangan kami untuk sebagian besar proyek baru. Ini telah bekerja dengan cukup baik, bahkan pada titik yang kami gunakan untuk produksi dengan pengaturan ini. Karena kami sebagian besar toko .NET, kami menggunakan klien asli (dengan .NET wrappers), bukan yang Java.
Sekarang klien mengharuskan kami mendaftarkan layanan database dengan server LDAP dan menggunakan server LDAP untuk mencari nama. Mereka telah menyediakan sqlnet.oradan ldap.orafile (dan file konfigurasi enkripsi yang menyertainya) yang tampaknya benar. Secara khusus, sqlnet.orafile menentukan LDAP sebagai sumber yang mungkin untuk mencari nama layanan net:
names.directory_path=(tnsnames,ldap)
Saya yakin bahwa mesin tempat saya bekerja dapat menggunakan LDAP untuk mengakses layanan karena saya dapat melakukannya menggunakan SQL Developer (yang memungkinkan saya untuk memasukkan informasi LDAP secara langsung). Dengan asumsi mereka benar, bagaimana saya bisa mendapatkan Klien Instan untuk mengenali konfigurasi ini dan menggunakan LDAP untuk mencari nama?
Apa yang saya coba sejauh ini
Saya telah mencoba mengatur TNS_ADMINvariabel lingkungan ke direktori yang berisi file yang disediakan, dan sementara ini berfungsi dengan baik untuk membuat Klien Instan mengenali tnsnames.orafile, tampaknya tidak cukup untuk membuatnya mulai melihat LDAP. Inilah hasilnya (dengan jalur, nama pengguna, dan kata sandi diubah):
(Perintah berikut ini adalah Windows Command Prompt, tapi saya membayangkan sesuatu yang serupa bisa dilakukan di Linux. Yang sqlplusterlihat di sini adalah versi Instan juga, dengan menyertai binari Klien Instan dalam direktori yang sama.)
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
Catatan samping
Apakah ada tag untuk TNS, LDAP, atau Klien Instan (atau bahkan hanya Klien Oracle normal) yang dapat ditambahkan ke pertanyaan ini? Saya tidak dapat menemukannya.
where( C:\TEMP\sqlplus.exe). Untuk lebih spesifik, sqlplustidak "diinstal" pada mesin. Itu hanya duduk di direktori saat ini, dengan binari klien di sebelahnya. Jelas mengambil tnsnames.orafile menggunakan TNS_ADMINvariabel lingkungan, karena itu tidak aktif di direktori yang sama sekali berbeda.
where oci.dlljuga. Hal ini juga memberikan hasil yang diharapkan: C:\TEMP\oci.dll.