system
阿久津 勇太

2017.12.27システム開発 

システムエンジニア

阿久津 勇太

オブジェクトブラウザで「ORA-12154」がでた時の対処法

こんにちは
エンジニアの阿久津です。

先日、Oracle12cのインストールを実施して
さあ、オブジェクトブラウザをで見てみると
下記のエラーコードが出ました。

「ORA-12154 TNS 指定された接続識別子を解決できませんでした」

対処するまでに、意外と時間がかかってしまったので
自分の備忘録的な意味も含めて対処法をご紹介。

①エラーメッセージの意味

対処するに当たり、エラーメッセージの意味を理解する必要があります。
そのため、ORCLEのサイトを見て意味を調べてみました。

===================================================
データ・ストアに接続しようとすると、
ORA-12154「TNS: 指定された接続識別子を解決できませんでした」が
表示されることがあります。

この問題は、Cache ConnectとOracleを同じマシン上で使用するときに、
TNS_ADMIN環境変数がOracleの正しいTNSNAMES.ORAファイルを指していない場合に
発生することがあります。

たとえば、ラップトップでOracleデータベースの複数のインスタンスが稼働している場合に、
この問題が発生することがあります。

本番環境では、TimesTenとOracleは、通常、異なるマシン上で稼働させます。
この場合、TimesTenが稼働しているマシン上のTNSNAMES.ORAファイルを指すようにTNS_ADMIN環境変数を
設定しなおさないようにしてください。

Oracleクライアントは、接続の解決にTNS_ADMIN設定を使用しますが、
TimesTenのメイン・デーモン、キャッシュ・エージェント、Webサーバーおよび
レプリケーション・エージェントは、TNS_ADMIN設定を認識しません。

Cache Connectは、OracleクライアントとTimesTenが異なるTNSNAMES.ORAファイルを
使用する場合、正常に動作しません。

参考:Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド
===================================================

ざっくり説明すると、こんな感じ。
「TNSNAMES.ORA」の設定が間違っている可能性があるため指定された名称で接続をすることができませんでした。

②【対処法その1】「TNSNAMES.ORA」の記述を見直す。

エラーメッセージの通り、「TNSNAMES.ORA」の設定が間違っている場合があります。

例)TESTNAMEで接続解決が出来ない。

「TNSNAMES.ORA」記述内容
   ESTNAME =
    (DESCRIPTION =
     (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = XXXXXXXXXXX)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVICE_NAME = XXXXXXXXXXXXXXXXXXXXXX)
    )
   )

原因としては、「ESTNAME」という名称で登録されていたため、
「TESTNAME」で接続ができていない。

解決方法としては、「ESTNAME」の部分を書き換えてあげることで
接続が可能となります。

③【対処法その2】「ORACLE_HOME」を見直す。

自分はこれが原因でした。
今回、既に11gをインストールしている状況で新たに12cをインストールしていたため
「ORACLE_HOME」の指定場所が違っていました。

「ORACLE_HOME」の確認方法は以下の手順です。(Windwosの手順です。)

1.「マイ コンピュータ」を右クリックし、「プロパティ」を選択します。

2.「詳細設定」タブで、「環境変数」を選択します。

3.「ORACLE_HOME」の設定内容を確認。

4.「TNSNAMES.ORA」が格納されているディレクトリが指定されているか確認してください。
 違っていたらこれが原因です。

5.違っていた場合、正しいパスを指定する。

以上、「ORA-12154」が出たときの対処法をご紹介しました。
それでも解決できない場合はサポートセンターに問合せてみるべきだとと思います。

現役ウェブ解析士が教えるWebサイトの読み解き方 イメージ
システム開発サービスはこちら
ページTOPへ