ある業務の担当者から「Oracleで昨日の晩からジョブを流しているですが、まだ終わらないんです...」とヘルプを求められました。
早速、Oracleにログインしセッション情報を確認すると、確かにACTIVEなセッションがあり、ジョブが実行されています。
でもどうも処理が進行している雰囲気ではありません。
アラートログファイルなどを確認してみてもエラーは出ていないようですし...
うーん、謎だなぁ...
と思いながら、いろいろ見ていると、セッションの統計情報で"redo log space wait time"の値がどんどん増えていることに気がつきました。
システムの統計情報を見ても同じです。
しかもその数値は1万を超えてコンディションレッドになっています!
1万はどう考えても多すぎだろ...とここで気がつきました。
まさか、自動アーカイブモードにしてないんじゃないのか?
アーカイブログの設定を調べてみたら、案の定自動アーカイブモードになっていませんでした...
それでオンラインREDOログファイルが一杯になってもアーカイブされず、手動でアーカイブされるのをOracleが一晩中健気に待っていたというわけです。
担当者曰く、
「そういえば、だいぶ前にアーカイブログモードにしてみたんですけど...」
どうやらその時に自動アーカイブモードにしていなかったようです。
よほど特殊な環境でもない限り、アーカイブログモードといえば自動アーカイブモードなんですが、それはオラクラー的な感覚であって、普通は気づかないのかもしれません。
といいながら、私もよもやそんな設定になっているとは思いもしなかったので、アラートログファイルにさり気なく出力されていた
Thread 1 cannot allocate new log, sequence 5665 All online logs needed archiving
って、メッセージを見逃してしまっていました。
気づけよ...(笑)