はじめに
OracleのUNDOログとREDOログの違いが分からないのでまとめてみました。
ソフトリサーチセンター
売り上げランキング: 565,114
UNDOログ
UNDOとは「実行した操作を取り消す」ことです。WindowsでいうところのCtrl + Zですね。
トランザクションにおいて、更新済みレコードをロールバックさせる際は、UNDOログが使われます。
トランザクションロールバックの仕組み
あるレコードにUPDATEが行われた場合、UNDOログにはレコードの「更新前の状態」が保存されます。
トランザクションのロールバックが指示された場合には、UNDOログに保存された「更新前の状態」を戻す事で、トランザクションの取り消し(ロールバック)を行います。
ちなみに、このUNDOログはトランザクションがコミットされる前のデータを、他のプロセスが要求してきた場合も見せたりします。
REDOログ
REDOログは、データベースに障害が発生した場合に、データを復旧するために使われます。
具体的には、障害が発生したらバックアップ時点まで戻し、そこから障害直前まで処理をやり直す(ロールフォワード)際に用いられます。
REDOログは、あるレコードにUPDATEが行われた場合に、そのUPDATEの命令が保存されます。UNDOログとの違いは、UNDOログは変更前のデータが格納されているのに対して、REDOログにはデータではなく、変更命令が格納されている点です。
REDOログの用途
データベースの運用では、障害発生に備えて定期的にデータバックアップを取ります。
1日の営業終了後、夜間にバックアップを取る運用の場合、翌営業日の午後に障害が発生すると、午前中のデータがすべてロストします。
そこで、REDOログを使って前日にバックアップした時点からの差分部分を復旧させ、障害直前までの状態に復旧させます。