ログスイッチのコマンド

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 を使用している。
シェルやバッチの中に組み込む時も同様。

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