Oracle > ORA-12514(リスナー接続エラー)

2012-02-28 17:15:05 (Tue);

ORA-12514: TNS: リスナーは接続記述子で要求されたサービスを現在認識していません。


データベースに繋がらないよー、
リスナーに繋がらないよーのエラー。

そもそもデータベースが起動していないのか、
それともリスナーの構成がおかしいのかを確認する。


まずリスナーを利用しないでDB接続してみます。

DBサーバーに、Oracleをインストールしたユーザ
Windowsならora_ndbグループに属しているユーザでもよい)で接続し、
コマンドプロンプトから以下を実行
SET ORACLE_SID=<SID>
sqlplus /nolog
conn / as sysdba
select instance_name from v$instance;

上記で目的のインスタンスに正しく接続できる場合は、
データベースは正しく動いています。


続いてリスナーの状態を確認してみます。

コマンドプロンプトから実行
lsnrctl status

(略) 

サービス"****"には、1件のインスタンスがあります。
インスタンス"****"、状態Readyには、このサービスに対する1件のハンドラがあります...

接続したいデータベースの状態がReadyになっているか確認。
もしくはそもそも表示されるかどうか。


リスナーの構成を確認してみます。


lsnrctl statusで
接続したいデータベースがそもそも表示されない場合は、
リスナーの構成によって以下を確認してください。

リスナーが動的登録(自動登録)である場合は、
データベースを一度shutdown immediate ⇒ startup してみます。
そして lsnrctl status を再実行

リスナーが静的登録である場合は、
listener.ora の内容を確認し、記述ミスが無いか確認します。

動的か静的を見分けるのはgoogleしてください。
ざっくりと言うと、listener.ora にSIDで設定がされていれば静的。
されていなければ動的(インスタンス起動時に自動読み込み)。



tnsnames.oraの設定を確認してみます。


lsnrctl statusで
接続したいデータベースがReadyになっている場合は、
リスナーは正しく起動している、、っぽいです。

tnsnames.oraの設定を見直してみます。
net_service_name =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.21.0.1)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVICE_NAME = service_name)
   )
 )

HOST、PORT(リスナー待ち受けポート)、SERVICE_NAMEが
本当に、本当に正しいかを確認します。

特にSERVICE_NAMEは間違えやすいので注意。
グローバル・データベース名(インスタンス名.ドメイン名)です。

SERVICE_NAMEの調べ方はgoogleしてみてください。






最終更新:2012年02月28日 17:15