ส่วนหนึ่งเป็นผลมาจากปัญหาเกี่ยวกับเวอร์ชันที่ขัดแย้งกันหรือเป็นพยานเกี่ยวกับการติดตั้งไคลเอนต์ Oracle แบบเต็มทีมพัฒนาของฉัน (ซึ่งฉันเป็นสมาชิก) กำลังก้าวไปสู่การใช้Oracle Instant Clientและหลีกเลี่ยงการติดตั้งบนเครื่องพัฒนาของเรา โครงการใหม่ สิ่งนี้ได้ผลค่อนข้างดีถึงจุดที่เราปรับใช้กับการผลิตด้วยการตั้งค่านี้ เนื่องจากเราเป็นร้านค้า NET ส่วนใหญ่เราจึงใช้ไคลเอ็นต์ดั้งเดิม (พร้อมด้วย. NET wrappers) แทนที่จะเป็นจาวา
ตอนนี้ไคลเอนต์ต้องการให้เราลงทะเบียนบริการฐานข้อมูลกับเซิร์ฟเวอร์ LDAP และใช้เซิร์ฟเวอร์ LDAP เพื่อค้นหาชื่อ พวกเขาได้จัดเตรียมsqlnet.ora
และldap.ora
ไฟล์ ( และไฟล์กำหนดค่าการเข้ารหัสประกอบ) ที่ดูเหมือนว่าถูกต้อง โดยเฉพาะอย่างยิ่งsqlnet.ora
ไฟล์จะระบุ LDAP เป็นแหล่งที่เป็นไปได้สำหรับการค้นหาชื่อบริการสุทธิ:
names.directory_path=(tnsnames,ldap)
ฉันมั่นใจว่าเครื่องที่ฉันทำงานด้วยสามารถใช้ LDAP เพื่อเข้าถึงบริการได้เนื่องจากฉันสามารถทำได้โดยใช้ SQL Developer (ซึ่งอนุญาตให้ฉันป้อนข้อมูล LDAP โดยตรง) สมมติว่าถูกต้องฉันจะให้ไคลเอ็นต์ทันใจจดจำการกำหนดค่านี้และใช้ LDAP เพื่อค้นหาชื่อได้อย่างไร
สิ่งที่ฉันได้ลองมาแล้ว
ฉันได้ลองตั้งค่าTNS_ADMIN
ตัวแปรสภาพแวดล้อมไปยังไดเรกทอรีที่มีไฟล์ที่ให้มาและในขณะที่วิธีนี้ใช้งานได้ดีในการทำให้ Instant Client รับรู้tnsnames.ora
ไฟล์ดูเหมือนว่าจะไม่เพียงพอที่จะเริ่มมองหา LDAP ต่อไปนี้เป็นผลลัพธ์ (โดยเปลี่ยนเส้นทางชื่อผู้ใช้และรหัสผ่าน):
(คำสั่งต่อไปนี้เกิดขึ้นเป็น Windows Command Prompt แต่ฉันคิดว่าบางสิ่งที่คล้ายกันนั้นสามารถทำได้บน Linux สิ่งที่sqlplus
เห็นที่นี่คือรุ่นทันทีเช่นกันพร้อมกับไบนารีไคลเอ็นต์ทันทีในไดเรกทอรีเดียวกัน)
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
นอกจากนี้ยังให้ผลที่คาดหวัง: