ORA-12514: TNS: リスナーは接続記述子でリクエストされたサービスを現在認識していません
Windowsのサービス一覧から見るとサービスは起動しているのに、上記のエラーが出て
接続できないときの対処方法をまとめておきます。
エラー発生の原因
今回はサーバーの予期せぬシャットダウンが原因でインスタンスが正常に終了できなかったことが
原因のようでした。
(パラメーターファイルがおかしくなった模様)
対応方法
対応手順は下記の通り。
①まず、SPFILEからPFILEを作成
SPFILEとPFILEはだいたいこのパスにあることが多いです。
※10gDBの場合、dbsではなくdatabaseにありました。
PFILE
[ORACLE_HOME]/dbs/init[SID].ora
SPFILE
[ORACLE_HOME]/dbs/spfile[SID].ora
パスを調べたら、下記SQLでSPFILEからPFILEを作成します。
※それぞれのパスは省略可能です。省略した場合は上記のデフォルトのパスに作成されます。
自分はSPFILEのパスのみ指定して実行しました。
--コマンドプロンプトでインスタンスを指定
C:\USERS\USER> SET ORACLE_SID=HOGEDB
--SQL*PLUSでログイン(sysdba権限でログインすること)
C:\USERS\USER> sqlplus / as sysdba
--SPFILEからPFILEを作成
SQL> create pfile[='(PFILEのフルパス)'] from spfile[='(SPFILEのフルパス)'];
②作成したPFILEを修正
テキストエディタ等でPFILEを開いてパラメーターを確認します。
今回はLOCAL_LISTENERのパラメータが邪魔していたので削除しました。
③修正したPFILEからSPFILEを作成
PFILEと同様にSPFILEを作成します。
※壊れているSPFILEはファイル名を変更して念のため保存しておきました。
自分はPFILEのパスのみ指定しました。
SQL> create spfile[='(SPFILEのフルパス)'] from pfile[='(PFILEのフルパス)'];
④インスタンスの起動
作成したPFILEでインスタンスを起動します。
SQL> startup pfile='(PFILEのフルパス)';
既に起動している場合はシャットダウン後に起動すると修正後のSPFILEが読み込まれます。
SQL> shutdown immediate;
これで復旧完了!