ORA-12154
エラーメッセージ
ORA-12154: TNS: サービス名を解決できませんでした。 ORA-12154: TNS: 指定された接続識別子を解決できませんでした ORA-12154: TNS:could not resolve service name ORA-12154: TNS:could not resolve the connect identifier specified
基本的なエラーの内容
接続のために指定したネット・サービス名が解決できない場合に出力されます。
確認事項および対応
- tnsnames.ora、sqlnet.oraファイルが %ORACLE_HOME%\network\admin ディレクトリに1つずつ存在、または tnsnames.ora ファイルのみが存在することを確認。
- tnsnames.oraを開き、指定したネット・サービス名に関する接続情報が定義されており、同じネット・サービス名が2つ以上存在しないことを確認。
- (sqlnet.oraファイルが存在する場合)tnsnames.oraファイルに記述されているネット・サービス名のドメイン(.worldなど)がsqlnet.oraファイルのNAMES.DEFAULT_DOMAINパラメータに設定されているドメイン名と等しい(またはどちらにもドメイン名が指定されていない)ことを確認。
- (sqlnet.oraファイルが存在する場合)sqlnet.oraファイルのNAMES_DIRECTORY_PATHパラメータに正しい値(tnsnames.oraファイルを使用する場合はTNSNAMES)が設定されている。
- 同一端末に異なるバージョンなど複数のOracleがインストールされている場合、意図しているtnsnames.oraを参照していない可能性がある。(各インストール先ディレクトリ毎にtnsnames.oraが存在する為)
解決するために、正しいPATHが設定されているかを確認する。(ORACLE_HOMEのPATHの順番を確認する) - TNS_ADMIN環境変数が設定されていない、もしくは正しく設定されている。通常TNS_ADMIN環境変数は設定されていませんが、設定されている場合は参照すべきtnsnames.oraファイルのディレクトリが指定されていることを確認。
詳細
指定された接続文字列がtnsnames.oraファイル内に無い場合だけでなく、参照すべき tnsnames.ora ファイル自体が無い場合にもこのエラーが発生します。Windowsの場合は拡張子が表示されない状態になっているために、ファイルをコピーした場合などに「tnsnames.ora.ora」になっているケースもあります。
Windowsで同一端末内に複数バージョンのOracleを使用している場合は、各バージョンの%ORACLE_HOME%\\network\admin\tnsnames.oraファイルを同じ状態にする(コピー)ことで解決する場合があります。(上述のPATHの設定が原因の場合)
また、sqlplus ではなく、ODBC接続などを使用する場合にこのエラーが発生する時には、まず sqlplus をコマンドラインで実行して同じエラーになるかを確認することをお勧めします。(ODBC接続でのみ発生する場合はODBCの設定内容が間違っている可能性が高いです)
関連エラー
ORA-12514: TNS: リスナーは接続記述子にあるSERVICE_NAMEを解決できませんでした。
ORA-12541: TNS: リスナーがありません。