LoginSignup
4
6

More than 5 years have passed since last update.

DBが起動しているが接続できないときの対処法(ORA-12514対策)

Posted at

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のパスのみ指定して実行しました。

spfile_to_pfile.sql

--コマンドプロンプトでインスタンスを指定
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のパスのみ指定しました。

pfile_to_spfile.sql
SQL> create spfile[='(SPFILEのフルパス)'] from pfile[='(PFILEのフルパス)'];

④インスタンスの起動

作成したPFILEでインスタンスを起動します。

startup.sql
SQL> startup pfile='(PFILEのフルパス)';

既に起動している場合はシャットダウン後に起動すると修正後のSPFILEが読み込まれます。

shutdown.sql
SQL> shutdown immediate;

これで復旧完了!

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6