Oracle Databaseには、データ整合性と障害復旧の要となる「REDOログ(リドゥログ)」という非常に重要な仕組みがあります。
「なぜ必要なのか」「何を記録しているのか」「障害復旧にどう使われるのか」までしっかり理解しておくことが、DBAとしての第一歩です。
本記事では、REDOログの仕組み・構成・復旧時の役割について、図を交えて詳しく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
REDOログとは?
REDOログは、トランザクションで行われたデータ変更の内容を記録するログファイルです。
この情報をもとに、障害発生時でもコミット済みのトランザクションを確実に復元できるようになっています。
REDOログの3つの主な役割(詳細解説)
① トランザクション処理内容を記録
トランザクションとは、複数のSQL文を1つのまとまりとして扱う処理単位です。
Oracleは、各トランザクションが実行されるたびに、その変更内容をREDOログに記録します。
具体的には何を記録しているのか?
- どの表のどの行が変更されたか
- どんな内容に変更されたか
- 変更前後のブロック情報
- SCN(System Change Number)
これらはログバッファに一時的に保持され、LGWR(Log Writer)プロセスによって物理ファイル(REDOログ)に書き出されます。
図:変更内容の記録フロー
[SQL実行]
↓
[バッファキャッシュ変更]
↓
[ログバッファにREDOエントリ作成]
↓
[LGWRがREDOログに書き出し]
この記録があることで、実際のデータブロックに書き込まれる前でも、復旧処理が可能になります。
② データベース障害時の復旧に使用
Oracle Databaseは、障害が発生しても、REDOログを使って整合性のある状態に戻すことができます。これが「リカバリ」です。
たとえば、インスタンス障害が起きたとき…
インスタンス障害とは、Oracleプロセスが異常終了するような事象です。このとき、まだディスクに書き込まれていないデータが存在する可能性があります。
→ Oracleは次の起動時に、自動的にREDOログを使って復旧を開始します。
図:インスタンスリカバリの流れ(起動時)
[前回のトランザクション]
↓
[途中でOracle異常終了]
↓
[REDOログから変更内容を再適用]
↓
[コミット済みトランザクションだけを復元]
メディア障害でも使用される
RMANやデータファイルリストア後のREDOログによるロールフォワードも、まさにこの役割の活用例です。
③ コミット済みトランザクションを再現可能にする
トランザクションの「COMMIT」が発行された時点で、OracleはそのトランザクションのREDO情報を永続化します。
この情報がある限り、万が一の障害が起きても、コミットされた内容は確実に再現可能です。
COMMITとREDOの関係
- COMMIT文は、ログバッファのREDO情報がREDOログに書き込まれた後に成功として応答されます。
- そのため、COMMIT済みであればREDOログ上に確実に記録済みという保証があるのです。
図:COMMIT成功までの流れ
[トランザクション処理中]
↓
[ログバッファにREDO書き込み]
↓
[LGWRがREDOログに書き出す]
↓
[書き込み完了 → COMMIT成功]
Oracleは、トランザクションの確実な永続性(Durability)を保証するために、REDOログを中心としたこの一連の仕組みを設けています。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
REDOログの構成と動作の仕組み
REDOログは「ロググループ」と「ログメンバー」で構成されます。
図:REDOログの構成(ミラーあり)
ロググループ1:
├─ redo01.log
└─ redo01b.log(ミラー)
ロググループ2:
├─ redo02.log
└─ redo02b.log
ロググループ3:
├─ redo03.log
└─ redo03b.log
- ロググループ:1つの書き込み単位。順にローテーション(ログスイッチ)される
- ログメンバー:実際のファイル。1グループに2つ以上のメンバーで冗長化可能
REDOログに関連する用語と仕組み
| 用語 | 説明 |
|---|---|
| ログバッファ | SGA内でREDO情報を一時的に保持する領域。LGWRがここから書き出す |
| LGWR(ログライター) | REDOログへの書き出し専用のバックグラウンドプロセス |
| ログスイッチ | 現在のロググループの書き込みが終わり、次のグループへ切り替わる動作 |
| ロールフォワード | バックアップ後の変更(REDO)を再適用して最新状態に戻す処理 |
REDOログの管理上のポイント
- グループ数は最低3つ以上を推奨
- 各ログファイルのサイズは適切に設定
- ログメンバーの冗長構成で障害耐性を高める
- アーカイブログモードとの併用が望ましい(完全リカバリに対応)
まとめ
| 項目 | 内容 |
|---|---|
| REDOログの主な役割 | トランザクションの記録/障害時の復旧/コミットの保証 |
| 構成と仕組み | ロググループ+ログメンバー、ログバッファとLGWRで管理 |
| 障害復旧での重要性 | REDOログがあるからこそ、障害後に整合性ある状態へ復元可能 |
| 実装上の推奨事項 | 3グループ以上、各グループに2メンバー以上、アーカイブ必須 |
[参考]
データベース管理者ガイド – 11 REDOログの管理
データベース管理者ガイド – 12 アーカイブREDOログ・ファイルの管理
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント