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コンテキスト内にネットワーク・サービス・オブジェクトが存在することを確認します。
-