使用LDAP通过Oracle Instant Client查找名称


14

完全由于Oracle客户端的完整安装版本冲突或版本不完整,部分原因是我的开发团队(我是其成员)一直在使用Oracle Instant Client,并避免在大多数情况下在我们的开发计算机上安装新项目。效果非常好,甚至达到我们通过此设置部署到生产的程度。由于我们主要是.NET商店,因此我们使用的是本机客户端(带有.NET包装器),而不是Java。

现在,客户要求我们在LDAP服务器上注册数据库服务,并使用LDAP服务器进行名称查找。他们提供的文件sqlnet.oraldap.ora文件(以及随附的加密配置文件)看起来是正确的。特别是,该sqlnet.ora文件确实将LDAP指定为查找网络服务名称的可能来源:

names.directory_path=(tnsnames,ldap)

我确信我正在使用的计算机可以使用LDAP访问服务,因为我可以使用SQL Developer(这使我可以直接输入LDAP信息)进行访问。假设它们是正确的,我如何才能使Instant Client识别此配置并使用LDAP进行名称查找?

到目前为止我尝试过的

我尝试将TNS_ADMIN环境变量设置为包含提供的文件的目录,尽管此方法对于使Instant Client识别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或Instant Client(甚至只是普通的Oracle Client)标签?我找不到任何东西。


它是正确的可执行文件吗?“ where sqlplus”
Bjarte Brandt 2014年

@BjarteBrandt是的,这是我期望在运行whereC:\TEMP\sqlplus.exe)时使用的那个。更具体地说,sqlplus未“安装”在计算机上。它只是坐在当前目录中,客户端二进制文件在旁边。它肯定是tnsnames.ora使用TNS_ADMIN环境变量在文件上拾取的,因为它在一个完全不同的目录中。
jpmc26 2014年

@BjarteBrandt为了确认它是否使用了正确的客户端二进制文件,我也继续运行where oci.dll了。它还提供了预期的结果:C:\TEMP\oci.dll
jpmc26 2014年

可能是一个域问题。您是否也尝试使用FQ名称?(dbname_or_whatever.domainname)
ik_zelf 2014年

2
@ ora-600抱歉,我忘记了这个问题。事实证明,配置文件本身存在问题,这是由我们的客户提供给我们的。(可能是Kerberos配置文件;我无法立即使用。)有趣的是,我在开发环境中尝试执行此操作,使其在登台阶段正常工作同样成问题,但仍然没有据我所知在产品中工作。(我们最终使用了本地TNS名称来使该应用程序正常工作。)绝对浪费了该项目的资金;即使/当它在产品中起作用时,与成本相比,投资回报也将是微不足道的。
jpmc26 2014年

Answers:


1

sqlnet.oraldap.ora文件放在$ORACLE_ADMIN目录中,并确保设置环境变量。我把我的TNS_ADMIN目录

(Linux)我的.bashrc

export TNS_ADMIN=/opt/oracle/instantclient_12_1/network/admin
export ORACLE_ADMIN=${TNS_ADMIN}

[ku14lts:/opt/oracle/instantclient_12_1/network/admin]
$ ls
ldap.ora  sqlnet.ora  tnsnames.ora

而且我能够连接到不在我的数据库中 tnsnames.ora

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.