Oracle 急に接続ができなくなった場合の対処法
Oracle
に急に接続ができなくなったことがあり、復旧したときの手順を作業メモとして残します。
現象
接続しようとすると、エラーメッセージなどが表示されるわけではなく、ずっと接続中(応答なし)の状態になります。
5分ほど経過すると接続ができる場合があり、接続後はSQL
などを普通に実行できますが、接続処理にとても時間がかかるようになってしまいました。
原因
いろいろ調査した結果、リスナー・ログのファイルが肥大化し4GB
を超えていたのが原因でした。
4GB
の上限はOS
などの環境に依存すると思いますが、これ以上ログが書き込めないため、接続時に時間がかかってしまっていたようです。
対処法
リスナー・ログのファイルをリネームすることによって、解決しました。(リネームの代わりに削除でも問題ないと思います)
リスナー・ログのファイルの場所はバージョンによって異なりますが、11g
の場合は$ORACLE_BASE/diag/tnslsnr/<ホスト名>/<リスナー名>/trace
でした。
ファイル名はデフォルトではlistener.log
となっていますので、listener2.log
にリネームしました。
単純にリネームしようとすると、別プロセスで使用しているため削除できない場合があります。
OracleOraDb11g_home1TNSListener
のサービスを停止すると削除できるようになります。
ネットで調べていると、コマンドプロンプトでlsnrctl stop
でリスナーを停止し、リスナー・ログのファイルを削除後にlsnrctl start
でリスナーを起動する方法がありましたが、lsnrctl stop
を実行するとエラーになってしまったため、上記の方法で実行しました。