zukucode
主にWEB関連の情報を技術メモとして発信しています。

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を実行するとエラーになってしまったため、上記の方法で実行しました。


関連記事