「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

Oracleデータベースに接続しようとしたとき、「ORA-12154: TNS: 指定された接続識別子を解決できませんでした」 というエラーが出て焦ったことはありませんか?

ORA-12154

これはOracle初心者はもちろん、ベテランでも環境構築時によく遭遇する「あるある」エラーです。しかし、原因は非常にシンプルであることがほとんどです。

この記事では、ORA-12154が発生する主な原因と、誰でもできる確認ポイントを優先度順に解説します。


ORA-12154 とは?

簡単に言うと、「接続しようとした名前(エイリアス)が、どこにあるのか、どの設定を見ればいいのか分からない」 という状態です。

クライアント(あなたのPCやアプリ)が、「データベースに繋ぎたいけど、指定された宛先が見つからないよ!」と叫んでいる状態と考えてください。


原因と対処法:チェックリスト

原因の9割は以下の5つのパターンのいずれかです。上から順に確認してみてください。

1. 接続文字列(エイリアス名)のタイプミス

最も単純ですが、最も多い原因です。

  • 症状: アプリケーションやコマンドで指定した接続名が tnsnames.ora に記述されていない。

  • 対処法: tnsnames.ora ファイルを開き、記述されている接続識別子(=の左側の名前)と、実際に指定している名前が**一言一句(大文字小文字含め)**合っているか確認してください。

2. tnsnames.ora ファイルの場所が認識されていない

Oracleクライアントは所定の場所にある tnsnames.ora を見に行きますが、ファイルがそこにない、あるいは別の場所を見に行っている場合があります。

  • 基本の場所:

    • Windows: %ORACLE_HOME%\network\admin

    • Linux: $ORACLE_HOME/network/admin

  • 対処法:

    1. ファイルが上記の場所に存在するか確認する。

    2. 環境変数 TNS_ADMIN が設定されていないか確認する。もし設定されている場合、Oracleはデフォルトの場所ではなく、TNS_ADMIN で指定されたフォルダを優先して見に行きます。

ポイント: 複数のOracleクライアント(32bit版と64bit版など)がインストールされている場合、意図しない方の network\admin を参照していることがよくあります。

3. tnsnames.ora の記述ミス(構文エラー)

ファイルがあっても、中身の書き方が間違っていると正しく読み込まれません。

  • よくあるミス:

    • カッコ ( ) の数が合っていない(閉じ忘れ)。

    • 行の先頭に余計なスペースが入っている(エイリアス名の前にはスペースを入れないのが鉄則です)。

  • 対処法:テキストエディタで慎重にカッコの対応を確認するか、GUIツール(Net Managerなど)を使って再生成してください。

4. 環境変数の設定ミス

特にWindows環境でよく発生します。

  • PATH: Oracleのbinフォルダへのパスが通っていない、または順序が逆(古いバージョンのパスが先に書かれている)。

  • ORACLE_HOME: 正しいインストールディレクトリを指していない。

  • 対処法: コマンドプロンプトで set コマンド(Linuxなら env)を打ち、現在の環境変数が正しいか確認しましょう。

5. 権限の問題(Linux/Unixの場合)

tnsnames.ora ファイル自体はあっても、実行ユーザーにそのファイルを「読む権限(Read)」がない場合があります。

  • 対処法: ls -l tnsnames.ora で権限を確認し、必要であれば chmod で読み取り権限を付与してください(例: chmod 644 tnsnames.ora)。


最強の切り分けツール「tnsping」

設定が正しいかどうかを確認するには、コマンドプロンプト(ターミナル)で tnsping コマンドを使うのが一番早いです。

Bash

実行結果の例:

  1. 成功(OK)の場合:Used parameter files: … sqlnet.oraOK (20 msec)→ tnsnames.ora は正しく認識されています。これで繋がらない場合は、パスワード間違いやDBサーバ側の問題(リスナー停止など)です。
  2. 失敗(NG)の場合:TNS-03505: Failed to resolve name→ 今回解説した「ORA-12154」と同じ状態です。クライアント側の設定(上記1〜5)を再度見直してください。

まとめ:トラブルシューティングフロー

最後に、対応手順をまとめます。

手順確認箇所チェック内容
1名称アプリでの指定名と tnsnames.ora 内の名前は一致しているか?
2場所tnsnames.ora は %ORACLE_HOME%\network\admin (または TNS_ADMIN) にあるか?
3中身カッコの閉じ忘れや、不自然なスペースはないか?
4環境複数のOracleホームがある場合、正しい方を参照しているか?
5テストtnsping <識別子> は通るか?

ORA-12154は、一度原因がわかれば怖くありません。まずは落ち着いて tnsping を叩き、ファイルパスを確認することから始めましょう!

Ads by Google