ログスイッチのコマンド
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 を使用している。
シェルやバッチの中に組み込む時も同様。
パフォーマンスの違いは、あくまで制御が戻るまでの時間であり、
実際はアーカイブのタイミングが異なるだけ。
よって内部的なトータルコストは同じになるはず。