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.ora
dan ldap.ora
file (dan file konfigurasi enkripsi yang menyertainya) yang tampaknya benar. Secara khusus, sqlnet.ora
file 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_ADMIN
variabel lingkungan ke direktori yang berisi file yang disediakan, dan sementara ini berfungsi dengan baik untuk membuat Klien Instan mengenali tnsnames.ora
file, 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 sqlplus
terlihat 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,sqlplus
tidak "diinstal" pada mesin. Itu hanya duduk di direktori saat ini, dengan binari klien di sebelahnya. Jelas mengambiltnsnames.ora
file menggunakanTNS_ADMIN
variabel lingkungan, karena itu tidak aktif di direktori yang sama sekali berbeda.where oci.dll
juga. Hal ini juga memberikan hasil yang diharapkan:C:\TEMP\oci.dll
.Jawaban:
Tempatkan
sqlnet.ora
danldap.ora
file dalam$ORACLE_ADMIN
direktori Anda dan pastikan untuk mengatur variabel lingkungan. Saya membuat saya menjadiTNS_ADMIN
direktori(Linux) .bashrc saya
Dan saya bisa terhubung ke DB tidak di saya
tnsnames.ora
sumber