ログスイッチのコマンド

REDO ログの切替やアーカイブの出力を確認したい時など、
手動で強制的にログスイッチを行うことがある。

SQL> alter system switch logfile;

または、

SQL> alter system archive log current;

となるが、認知度が高いのは前者のコマンド。
それぞれ動作の違いを良く聞かれるのでまとめておく。

両コマンドの違い

強制的にログスイッチする点は共通しているが、 alter system switch logfile は
アーカイブ完了までは見届けてくれないのだ。ログスイッチが終わったら、
後はアーカイバー(ARCH)に任せてお役放免というわけ。

一方、 alter system archive log current はログスイッチだけでなく、
アーカイブが済んでいないカレント以外の REDO ログまで全てアーカイブする。

状況によって使い分ければ良いと思うが、私の場合(ノーアーカイブ時は当然として)、
アーカイブの終了を待つ必要がない時は alter system switch logfile を使用している。

ログが切り替わったらすぐに制御が戻るので、こちらの方が軽い。
(アーカイブログサイズが小さい環境では、違いが感じられないかも知れない。)

で、オンラインバックアップやリカバリ系の作業時には、
必ず alter system archive log current を使用している。
シェルやバッチの中に組み込む時も同様。

パフォーマンスの違いは、あくまで制御が戻るまでの時間であり、
実際はアーカイブのタイミングが異なるだけ。
よって内部的なトータルコストは同じになるはず。

関連記事