16.3.2 ORA-12154
指定した接続別名を解決できないことを示します。
メッセージ
ORA-12154: Cannot connect to database.
Could not find alias string in string.
たとえば:
ORA-12154: Cannot connect to database.
Could not find alias sales in LDAP.
-
1つの(システムまたはローカル)
tnsnames.ora
ファイルのみを使用する場合:ORA-12154: Cannot connect to database. Could not find alias sales in /u01/app/oracle/product/21.3.0/dbhome_1/network/admin/tnsnames.ora.
-
システムとローカル両方の
tnsnames.ora
ファイルを使用する場合:ORA-12154: Cannot connect to database. Could not find alias sales in path_to_file_1, path_to_file_2.
-
1つの(システムまたはローカル)
tnsnames.ora
ファイルのみを使用する場合:ORA-12154: Cannot connect to database. Could not find alias sales in /u01/app/oracle/product/21.3.0/dbhome_1/network/admin/tnsnames.ora and LDAP.
-
システムとローカル両方の
tnsnames.ora
ファイルを使用する場合:ORA-12154: Cannot connect to database. Could not find alias sales in path_to_file_1, path_to_file_2 and LDAP.
原因
データベースまたは他のサービスへの接続が接続記述子を使用してリクエストされていますが、指定された別名は、構成されているどのネーミング・メソッドを使用しても接続記述子に解決できません。たとえば、接続識別子としてネットワーク・サービス名を使用していた場合、そのネットワーク・サービス名がネーミング・メソッド・リポジトリで見つからないか、リポジトリが見つかっていません。
デフォルトでは、ローカル(TNSNAMES)から開始して、LDAP、簡易接続プラスの順ですべてのネーミング・メソッドがクライアントで試行されます。これらすべてのネーミング・メソッドで別名の解決に失敗すると、エラーが返されます。
処置
-
指定した接続文字列に誤りがないかを確認します。
-
sqlnet.ora
ファイルにNAMES.DIRECTORY_PATH
パラメータが含まれている場合は、そのパラメータに有効な値が含まれていることを確認してください。 -
tnsnames.ora
ファイルの別名を使用している場合は、次のステップを実行します:-
tnsnames.ora
ファイルが正しいディレクトリに存在していて、アクセスできることを確認します。tnsnames.ora
ファイルは次のいずれかの場所にあります:-
環境変数
TNS_ADMIN
で指定したディレクトリ(設定されている場合)。 -
ORACLE_BASE_HOME/network/admin
ディレクトリ。ファイルがORACLE_BASE_HOME/network/admin
ディレクトリにない場合は、ORACLE_HOME/network/admin
ディレクトリでファイルを探します。
-
-
接続文字列に指定された別名が、いずれかの
tnsnames.ora
ファイルに存在することを確認します。名前が単純で
sqlnet.ora
ファイルにNAMES_DEFAULT_DOMAIN
がない場合、またはネットワーク・サービス名が完全修飾名である場合は、このネットワーク・サービス名がtnsnames.ora
ファイルの名前と厳密に一致している必要があります。接続文字列のネットワーク・サービス名が単純な場合は、sqlnet.ora
ファイルのNAMES_DEFAULT_DOMAIN
パラメータを調べます。その値が、接続文字列で指定されているネットワーク・サービス名に追加されます。この完全修飾名が、tnsnames.ora
ファイル内のエントリである必要があります。 -
tnsnames.ora
ファイルのどこにも構文エラーがないことを確認します。一致しないカッコまたは文字を検索してください。マジック・クォートが使用されていないことを確認します。 -
「ログイン」ダイアログ・ボックスから接続する場合は、接続するネットワーク・サービス名の前にアット・マーク(
@
)を付けていないことを確認します。クライアントのトレースをアクティブにして、操作を繰返します。
-
-
LDAPディレクトリ・ネーミングを使用している場合は、次のステップを実行します:
-
接続識別子として使用したネット・サービス名またはデータベース名が、ディレクトリ内で構成されていることを確認します。
-
LDAPディレクトリ・サーバーが稼働しており、アクセスできることを確認してください。
-
接続識別子として完全修飾ネット・サービス名または完全なLDAP DNを指定して、使用するデフォルト・コンテキストが正しいことを確認してください。
-
ldap.ora
ファイルが正しい場所に存在することを確認します。ldap.ora
ファイルが、次のディレクトリで次の順に検索されます:-
環境変数
TNS_ADMIN
で指定されたディレクトリ。 -
ORACLE_BASE_HOME/network/admin
ディレクトリ。ファイルがORACLE_BASE_HOME/network/admin
ディレクトリにない場合は、ORACLE_HOME/network/admin
ディレクトリでファイルが検索されます。 -
環境変数
LDAP_ADMIN
で指定されているディレクトリ。 -
読取り専用Oracleホームの場合は
ORACLE_BASE_HOME/network/admin
ディレクトリ。 -
読取り/書込みOracleホームの場合は
ORACLE_HOME/network/admin
ディレクトリ。
-
-
次のように、
ldap.ora
ファイルで定義されているパラメータが正しいことを確認します。-
DIRECTORY_SERVERS
パラメータで、1つ以上の有効なLDAPサーバーの正しいホストとポートが定義されていること。 -
DEFAULT_ADMIN_CONTEXT
パラメータに、このディレクトリのOracleコンテキストの場所が定義されていること。ここにネットワーク・サービスのエントリが含まれている必要があります。
ldap.ora
ファイルが存在しない場合、これらのパラメータは自動検出を使用して解決されます。 -
-
LDAPサーバーのホストとポートがDNSで定義されていることを確認します。
-
ディレクトリでデフォルトのOracleコンテキストが定義されていることを確認します。
-
ldapsearch
ユーティリティまたはディレクトリ管理ツールを使用して、DEFAULT_ADMIN_CONTEXT
パラメータの値で指定されている場所のOracleコンテキスト内にネットワーク・サービス・オブジェクトが存在することを確認します。
-