ちょっと情報不十分すぎてかなりだめなので後で気が向いたら清書
oracle をマウント状態にしたかった
マウントしたかったが、シャットダウン後リスナーが存在しないエラー。
OS認証でログインができないし、1つのDBサーバに複数のインスタンスをたてていた。
これ系↓
https://stackoverflow.com/questions/32467587/oracle-throws-ora-12514-after-shutdown-immediate
環境
Windows Server 2019
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.18.0.0.0
1つのDBサーバに複数のインスタンスをたてていて、
リスナーが1つ OracleOraDB19HomeTNSListener
インスタンス名は orcl1, orcl2, orcl3
現象
シャットダウンをする
> sqlplus id/pwd@orcl1
sql> shutdown immediate
データベースがクローズされました
データベースがディスマウントされました。
ORACLEインスタンスガシャとダウンされました。
ERROR:
ORA-12514: TNS: リスナーは接続記述子でリクエストされたサービスを現在認識していません
警告: Oracleにはもう接続されていません
このあとに
> sqlplus /nolog
sql> conn id/pwd@instance
ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました
も
> sqlplus /nolog
sql> startup mount;
SP2-0640: 接続されていません。
も
できない。
実行しようとするとリスナーが起動していないというメッセージが出る
リスナーそのものは上がっているのに・・・
原因
lsnrctlで状態を見ると
> lsnrctl status orcl1
LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 25-1月 -2024 18:00:00
Copyright (c) 1991, 2022, Oracle. All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= hostname.hoge.hoge)(PORT+1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl1)))に接続中
リスナーのステータス
-------------------------
別名 LISTENER
バージョン XXX
開始日 XXX
稼働時間
トレースレベル
セキュリティ
・・・・・ 省略
インスタンス"orcl2"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"orcl2"には、一件のインスタンスがあります。
インスタンス"orcl3"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"orcl3"には、一件のインスタンスがあります。
コマンドは正常に終了しました。
再起動しようとしている orcl1について記述がないではないか。。
シャットダウンしたときに、閉じてしまったみたい。
対処
Windowsのサービスマネージャーから
リスナーサービスを再起動
OracleOraDB19HomeTNSListener
注意事項として、他のインスタンスも一瞬繋がらなくなる。
リスナーサービス再起動後、リスナーがインスタンスに対して起動しているか確認
> lsnrctl status orcl1
LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 25-1月 -2024 18:00:00
Copyright (c) 1991, 2022, Oracle. All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= hostname.hoge.hoge)(PORT+1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl1)))に接続中
リスナーのステータス
-------------------------
別名 LISTENER
バージョン XXX
開始日 XXX
稼働時間
トレースレベル
セキュリティ
・・・・・ 省略
インスタンス"orcl1"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"orcl1"には、一件のインスタンスがあります。
インスタンス"orcl2"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"orcl2"には、一件のインスタンスがあります。
通じていることがわかる。
このあと
> sqlplus /nolog
sql> conn id/pwd@instance
sql> startup mount;
できた