ネットランダム改変

はてなダイアリーからはてなブログにインポート。

Oracleのエラー(特にORA-12154)について

ORA-12154:TNSサービス名を解決できませんでした

ORA-12154:TNSサービス名を解決できませんでした

データベースソフトOracleの情報があふれてきたのか、このブログに「ORA-12154」で検索し訪問してくる人が非常に多いようだ。

たどり着く先は上記の引用リンクで見ることができるが、なんの変哲もない自分用のメモリンクだ。

これではいけないと思い、きちんと納得のいく内容を補完しようと本エントリーを起こす。

ORA-12154とは

「ORA-12154: TNS: 指定された接続識別子を解決できませんでした 」
「ORA-12154:TNS:サービス名を解決できませんでした。」
「ORA-12154: TNS:could not resolve service name」

バージョンなどにより、添えられるメッセージに差異があるが、
私が直面したエラーケースは2つあった。

ひとつはクライアント端末に複数のOracle(同じバージョン)をインストールしたときに発生し、スタートメニューの「Oracle Installation Products」に格納されている「Home Selector」で切り替えると解決した。

「Home Selector」でカレントのOracleクライアントを選択するのである。
これはレジストリを切り替えるツールであり、同事象であればたいてい解決するものである。

もうひとつはサーバ側に複数のリスナーを定義した場合に、そのリスナー名がクライアントの設定と違うリスナー名(サービス名)であったため発生した。

これは設定をよく見直せばすぐに解決する。

そのほかにもTNS接続ができないケースでこのエラーが発生するようで、tnspingで探索し原因箇所を特定すると解決の早道となることが多いだろう。

疑う順番は以下のとおりだろうか。

物理接続 > クライアント > サーバ