OracleのREDOログについて。
この記事の内容はコチラです
- 「REDOログ」とは?
- 「REDOログ」はなぜ必要か?
今回は、OracleのREDOログについて紹介します!
OracleのREDOログとは
「OracleのREDOログとは?」を知るには、まずコミットの流れについておさらいしましょう!
Oracleはコミットしてもデータファイルへ書込みをしないのはなぜ?
Oracleは「コミット」することにより処理を確定します。しかしコミットしてもすぐにはデータファイル(.
ちなみに、データファイル(.
- コミット ・・・メモリからREDOログファイルへ更新履歴を書き込む
- チェックポイント ・・・メモリからデータファイルへ更新データを書き込む
コミットしても「更新データ」をすぐに「データファイル」に書き込まない・・・
違和感ありませんか?
「コミットした確定データ」は「データファイル」とイコールでは?もしコミットしたのにデータファイルに書き込まれる前に障害が発生したら「更新データ」が消えてしまうのでは?
という疑問がわきます。
OracleのREDOログファイル
Oracleにはデータを保障するためのもう一つのファイルがあります。
それがREDOログファイル(.
具体的にみていきます。
まず、コミットするとREDOログバッファからREROログファイルへ「更新履歴」を書き込みます。
この後、チェックポイントが発生すれば、データファイルに「更新データ」が書き込まれますが、その前に障害が発生して「更新データ」が書き込まれなかったとします。
「更新データ」が消えてしまいました。どうしましょう?
クラッシュリカバリでREDOログファイルを使う
このケースでは、Oracleはクラッシュリカバリという機能で復旧します。クラッシュリカバリとは何でしょうか?
まず、Oracleは起動時にREDOログファイルとデータファイルを比較します。先ほどの「更新データ」は「データファイル」にはありません。でもREDOログファイルには「更新履歴」があります。
Oracleは「データファイルに更新データがない」を検出し、自動的にREDOログファイルの「更新履歴」から「更新データ」をデータファイルに書き込んで整合性をとってから起動します。
このようにして自動的に失ったデータを復旧します。これをクラッシュリカバリといいます。
コミットした「更新データ」はデータファイルになくてもREDOログファイルに「更新履歴」があります。だからコミットしたデータがデータファイルになくても大丈夫なのです。
この「REDOログファイル(.
まとめ
OracleのREDOログファイルについてまとめます。
- REDOログはデータベースの「更新履歴ログ」
- クラッシュリカバリの際、REDOログからデータを復旧できる
参照:REDOログの管理 – Oracle Database管理者ガイド
Oracleには似たようなログにアーカイブログもあります。アーカイブログはこちらを参照してください。
以上、OracleのREDOログファイルの役割でした。
コメント