Một phần là do có vấn đề với các phiên bản xung đột hoặc bitness với cài đặt đầy đủ của máy khách Oracle, nhóm phát triển của tôi (trong đó tôi là thành viên) đã chuyển sang sử dụng Oracle Instant Client và tránh cài đặt trên các máy phát triển của chúng tôi dự án mới. Điều này đã làm việc khá tốt, thậm chí đến mức chúng tôi triển khai để sản xuất với thiết lập này. Vì chúng tôi chủ yếu là một cửa hàng .NET, nên chúng tôi đang sử dụng máy khách gốc (với các trình bao bọc .NET), thay vì Java.
Bây giờ một khách hàng đang yêu cầu chúng tôi đăng ký dịch vụ cơ sở dữ liệu với máy chủ LDAP và sử dụng máy chủ LDAP để tra cứu tên. Họ đã cung cấp sqlnet.ora
và ldap.ora
các tệp (và một tệp cấu hình mã hóa đi kèm) có vẻ đúng. Cụ thể, sqlnet.ora
tệp chỉ định LDAP là nguồn có thể để tra cứu tên dịch vụ mạng:
names.directory_path=(tnsnames,ldap)
Tôi tự tin rằng máy tôi đang làm việc có thể sử dụng LDAP để truy cập dịch vụ vì tôi có thể làm như vậy bằng SQL Developer (cho phép tôi nhập trực tiếp thông tin LDAP). Giả sử chúng là chính xác, làm thế nào tôi có thể khiến Instant Client nhận ra cấu hình này và sử dụng LDAP cho tên tra cứu?
Những gì tôi đã cố gắng cho đến nay
Tôi đã thử đặt TNS_ADMIN
biến môi trường cho thư mục chứa các tệp được cung cấp và trong khi điều này hoạt động tốt để khiến Instant Client nhận ra một tnsnames.ora
tệp, thì dường như không đủ để bắt đầu xem LDAP. Dưới đây là kết quả (với đường dẫn, tên người dùng và mật khẩu đã thay đổi):
(Các lệnh sau đây xảy ra là Windows Command Prompt, nhưng tôi tưởng tượng điều gì đó tương tự có thể thực hiện được trên Linux. Cái sqlplus
được thấy ở đây là phiên bản Instant, với các nhị phân Instant Client đi kèm trong cùng thư mục.)
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
Lưu ý bên
Có thẻ nào cho TNS, LDAP hoặc Máy khách tức thời (hoặc thậm chí chỉ là Máy khách Oracle bình thường) có thể được thêm vào câu hỏi này không? Tôi không thể xác định vị trí nào.
where
( C:\TEMP\sqlplus.exe
). Để cụ thể hơn, sqlplus
không được "cài đặt" trên máy. Nó chỉ ngồi trong thư mục hiện tại, với các nhị phân máy khách bên cạnh nó. Nó chắc chắn chọn tnsnames.ora
tệp bằng TNS_ADMIN
biến môi trường, vì nó bị tắt trong một thư mục hoàn toàn khác.
where oci.dll
. Nó cũng cho kết quả mong đợi : C:\TEMP\oci.dll
.