ORA-01261 からの ORA-12514

朝っぱらからOracleに接続できない、という報告を受け、調査。

エラー内容を確認したところ、

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

であった。なぜ突然に!?

まずはlsnrctlで確認。

> lsnrctl status
・・・・
・・・・

リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。

なんと。

もしや、と思い tnsnames.ora の中身を確認するも、不審な点はなし。

その他の設定ファイル等も確認してみたが、問題は見当たらない。


次にローカルからDBに接続。

SQL> connect / as sysdba
アイドル・インスタンスに接続しました。

おお、見事に落ちてる。

とりあえず、起動してみれば何かわかるんじゃ、という話になり・・・。

SQL> startup
ORA-01261: Parameter db_create_online_log_dest_3 destination string cannot be tr
anslated
ORA-01263: Name given for file destination directory is invalid

むむー。
db_create_online_log_dest_3 にはEドライブを指定していたとのこと・・・・

Eドライブ、Eドライブ・・・・Eドライブがない。。。。


担当者の記憶違いかもしれん、慌てて初期化パラメータを確認。

SQL> show parameters db_create
ORA-01034: ORACLE not available
プロセスID: 0
セッションID: 0、シリアル番号: 0

あ、そう、起動してない。。。

SPFILEからPFILEを作成して確認

SQL> CREATE PFILE = 'C:\path\to\PFILEXXXXX.ORA' FROM SPFILE='C:\path\to\SPFILEXXXXX.ORA';

ファイルが作成されました。

たしかに、db_create_online_log_dest_3 にはEドライブが指定されていた。

ちょうどそのとき、お客様から「Eドライブ飛んじゃって復旧できぬ」という連絡が。。。
こちらも調査の結果をお伝えすると、
「復旧できぬなら、取り急ぎEドライブを指定している設定はずして仮復旧して」とのこと。

と、いうことで、PFILE変更し、SPFILE作成し、startupしたところ、、、無事起動。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1.4965E+10 bytes
Fixed Size                  2135016 bytes
Variable Size            1.1207E+10 bytes
Database Buffers         3690987520 bytes
Redo Buffers               64958464 bytes
データベースがマウントされました。
データベースがオープンされました。

lsnrctlの結果も正常に。

げふー。