完全由于Oracle客户端的完整安装版本冲突或版本不完整,部分原因是我的开发团队(我是其成员)一直在使用Oracle Instant Client,并避免在大多数情况下在我们的开发计算机上安装新项目。效果非常好,甚至达到我们通过此设置部署到生产的程度。由于我们主要是.NET商店,因此我们使用的是本机客户端(带有.NET包装器),而不是Java。
现在,客户要求我们在LDAP服务器上注册数据库服务,并使用LDAP服务器进行名称查找。他们提供的文件sqlnet.ora
和ldap.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
(C:\TEMP\sqlplus.exe
)时使用的那个。更具体地说,sqlplus
未“安装”在计算机上。它只是坐在当前目录中,客户端二进制文件在旁边。它肯定是tnsnames.ora
使用TNS_ADMIN
环境变量在文件上拾取的,因为它在一个完全不同的目录中。
where oci.dll
了。它还提供了预期的结果:C:\TEMP\oci.dll
。