Oracle Instant Clientでの名前検索にLDAPを使用


14

一部は、Oracleクライアントの完全なインストールと競合するバージョンまたはビットの問題があるため、私の開発チーム(メンバー)は、Oracle Instant Clientを使用し、ほとんどの場合、開発マシンへのインストールを避けようとしています。新しいプロジェクト。これは、このセットアップを使用して実稼働環境に展開するまで、非常にうまく機能しています。私たちはほとんどが.NETショップであるため、Javaクライアントではなく、ネイティブクライアント(.NETラッパーを使用)を使用しています。

クライアントは、データベースサービスをLDAPサーバーに登録し、名前の検索にLDAPサーバーを使用することを要求しています。それらは、正しいと思われるファイル(および付随する暗号化構成ファイル)を提供sqlnet.oraしていldap.oraます。特に、sqlnet.oraファイルは、ネットサービス名を検索するための可能なソースとしてLDAPを指定します。

names.directory_path=(tnsnames,ldap)

SQL Developerを使用してアクセスできたため(LDAP情報を直接入力できるようになったため)、作業しているマシンがLDAPを使用してサービスにアクセスできると確信しています。それらが正しいと仮定すると、Instant Clientにこの構成を認識させ、名前検索にLDAPを使用するにはどうすればよいですか?

今まで試したこと

TNS_ADMIN提供されたファイルを含むディレクトリに環境変数を設定しようとしましたが、これはInstant Clientにtnsnames.oraファイルを認識させるのには問題なく動作しますが、LDAPを調べ始めるには十分ではないようです。結果は次のとおりです(パス、ユーザー名、パスワードが変更されました):

(次のコマンドはたまたまWindowsコマンドプロンプトですが、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、またはInstant Client(または通常のOracleクライアント)のタグはありますか?見つけることができませんでした。


正しい実行可能ファイルですか?「どこSQLPLUS」
Bjarteブラント

@BjarteBrandtはい、それは私が実行するときに期待するものですwhereC:\TEMP\sqlplus.exe)。具体的にsqlplusは、マシンに「インストール」されていません。現在のディレクトリにあり、クライアントバイナリが横にあります。それは完全に別のディレクトリでオフになっているためtnsnames.oraTNS_ADMIN環境変数を使用してファイルを確実に取得しています。
jpmc26 14

@BjarteBrandt適切なクライアントバイナリを使用していることを確認するために、先に進んで実行where oci.dllしました。また、期待される結果も得られますC:\TEMP\oci.dll
jpmc26 14

ドメインの問題である可能性があります。FQ名でも試しましたか?(dbname_or_whatever.domainname)
ik_zelf 14

2
@ ora-600申し訳ありませんが、この質問を忘れました。クライアントから提供された設定ファイル自体に問題があることが判明しました。(おそらくKerberos構成ファイル。私はすぐに思い出せません。)おもしろいのは、これをしようとする開発環境で作業していたことです。私の知る限り、prodで働いています。(結局、アプリを機能させるためにローカルTNS名を使用することになりました。)プロジェクトのために間違いなくお金を無駄にしました。prodで動作する場合でも、投資収益率はコストに比べてわずかです。
jpmc26 14

回答:


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

そして、私は私のではないDBに接続することができました tnsnames.ora

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.