データベースは,障害が起きてもコミットしたトランザクションの結果は失わず,途中のトランザクションの結果は残さないように戻す必要があります。 そのために使うのが,更新の記録(ログ)を使ったロールバックとロールフォワードです。 午前Ⅰによく出る,考え方さえ押さえれば確実に取れる分野です。
ひとことで
DBMS は,データを更新するたびに,ログファイルに次の2つを書き残します。
| ログ | 中身 | 使い道 |
|---|---|---|
| 更新前ログ(更新前情報) | 書き換える前の値 | ロールバック:更新を取り消し,トランザクション開始前の状態に戻す |
| 更新後ログ(更新後情報) | 書き換えた後の値 | ロールフォワード:古い状態から更新をやり直し,新しい状態まで進める |
トランザクションのコミットが完了するのは,データベース本体に書き込んだときではなく,ログファイルにコミットの情報を書き込んだときです。 ログさえ残っていれば,本体への書込みが間に合わずに障害が起きても,ロールフォワードで復元できるからです。 ログを先に書く,というこの決まりを WAL(Write Ahead Log)と呼びます。
障害の種類ごとの戻し方
| 障害 | 戻し方 |
|---|---|
| トランザクション障害(途中で異常終了) | そのトランザクションを更新前ログでロールバックする |
| システム障害(電源断や OS の停止。ディスクは無事) | 最後のチェックポイントから考える。障害までにコミット済みのものはロールフォワード,コミットしていないものはロールバックする |
| 媒体障害(ディスクが壊れた) | バックアップコピーで復元してから,バックアップ取得以降にコミットした全てのトランザクションを更新後ログでロールフォワードする |
チェックポイントは,メモリ上の更新をまとめてディスクに書き出した時点です。 システム障害のときは,チェックポイントより前に終わったトランザクションは回復作業が要りません(もうディスクに書かれているため)。 チェックポイントをまたいで動いていたものと,チェックポイントの後に始まったものだけを,コミットしたかどうかで振り分けます。
図で問われたときは,障害の時点でコミットが済んでいるかだけを見ます。済んでいればロールフォワード,済んでいなければロールバックです。
試験での問われ方
当サイトが収録している午前の問題のうち,ロールバック・ロールフォワード・チェックポイント・更新前/更新後ログなどの語が出てくるのは33問です (システム監査の「チェックポイント」の問題は除いています)。午前Ⅰと ITサービスマネージャの午前Ⅱがそれぞれ3分の1ほどです。型ごとに数えると次のとおりです。
- ロールバックとロールフォワードの使い分け(13問)。図のトランザクションのうちどれをロールフォワード/ロールバックするか, 障害回復処理の記述(「システムが媒体障害以外の原因によって停止した場合,チェックポイントの取得以前に終了したトランザクションについての回復作業は不要である」), 異常終了したトランザクションの扱い(「ロールバックすることによって,データをトランザクション開始前の状態に回復する」)などです。
- コミットとログ(7問)。コミット処理を完了するタイミング(「ログファイルへのコミット情報書込み完了時点」,4問),WAL の目的,2相コミットです。
- 媒体障害の回復(7問)。「バックアップコピーでデータベースを復元し,バックアップ取得以降にコミットした全てのトランザクションをロールフォワードする」が定番の正解です。
- システムの再開の方法(5問)。初期状態に戻して再開するコールドスタート(3問)と, 処理中だったジョブのうち続けられるものは再開させるウォームスタート(2問)です。
- このほか,同時実行制御がうまくいかないときに起きる変更消失(lost update)の問題が1問あります。
出題された過去問(33問)
リンク先の年度ページで,問題と解説を読めます。
午前Ⅰ(高度試験 共通)(12問)
- 令和5年度 秋期 問9DBMS をシステム障害発生後に再立上げするとき,ロールフォワードすべきトランザクションとロール…
- 令和4年度 秋期 問9チェックポイントを取得する DBMS において,図のような時間経過でシステム障害が発生した。前進…
- 令和3年度 秋期 問9データベースの障害回復処理に関する記述として,適切なものはどれか。
- 令和元年度 秋期 問9データベースに媒体障害が発生したときのデータベースの回復法はどれか。
- 平成28年度 秋期 問10DBMS をシステム障害発生後に再立上げするとき,ロールフォワードすべきトランザクションとロール…
- 平成28年度 春期 問10媒体障害の回復において,最新のデータベースのバックアップをリストアした後に,トランザクションログ…
- 平成27年度 秋期 問10チェックポイントを取得する DBMS において,図のような時間経過でシステム障害が発生した。前進…
- 平成24年度 春期 問11DBMS の媒体障害時の回復法はどれか。
- 平成22年度 春期 問12DBMS のロールフォワードを説明したものはどれか。
- 平成22年度 春期 問21データの追加・変更・削除が,少ないながらも一定の頻度で行われるデータベースがある。このデータベー…
- 平成21年度 秋期 問11分散トランザクション処理で利用される2相コミットプロトコルでは,コミット処理を開始する調停者(c…
- 平成21年度 秋期 問12データベースの障害回復処理に関する記述のうち,適切なものはどれか。
ITサービスマネージャ 午前Ⅱ(11問)
- 令和3年度 春期 問23媒体障害により停止したデータベースを回復するときに使用するデータとして,適切なものはどれか。
- 令和元年度 秋期 問21トランザクション T1,T2 の同時実行制御が適切に行われない場合に起こり得る,レコード X,Y…
- 平成29年度 秋期 問21WAL(Write Ahead Log)プロトコルの目的に関する記述のうち,適切なものはどれか。
- 平成28年度 秋期 問13データベースのロールバック処理の説明はどれか。
- 平成28年度 秋期 問21システム障害発生時には,データベースの整合性を保ち,かつ,最新のデータベース状態に復旧する必要が…
- 平成27年度 秋期 問13システム障害が発生したときにシステムを初期状態に戻して再開する方法であり,更新前コピー又は更新後…
- 平成26年度 秋期 問12データベースのロールバック処理の説明はどれか。
- 平成25年度 秋期 問6システムが障害によって停止したときに行う,システム再開の方法の一つであるウォームスタートの説明は…
- 平成24年度 秋期 問5システム障害が発生したときにシステムを初期状態に戻して再開する方法であり,イニシャルプログラムロ…
- 平成23年度 秋期 問7システムが障害によって停止したときに行う,システム再開の方法の一つであるウォームスタートの説明は…
- 平成22年度 秋期 問7システム障害が発生したときにシステムを初期状態に戻して再開する方法で,イニシャルプログラムロード…
情報処理安全確保支援士 午前Ⅱ(7問)
- 令和7年度 秋期 問21DBMS がトランザクションのコミット処理を完了するタイミングはどれか。
- 令和3年度 春期 問24ディスク障害時に,フルバックアップを取得してあるテープからディスクにデータを復元した後,フルバッ…
- 令和2年度 10月 問21DBMS がトランザクションのコミット処理を完了するタイミングはどれか。
- 平成30年度 春期 問21DBMS がトランザクションのコミット処理を完了とするタイミングはどれか。
- 平成28年度 秋期 問21システム障害発生時には,データベースの整合性を保ち,かつ,最新のデータベース状態に復旧する必要が…
- 平成27年度 春期 問21分散トランザクション処理で利用される 2 相コミットプロトコルでは,コミット処理を開始する調停者…
- 平成24年度 秋期 問21データベースのデータを更新するトランザクションが,実行途中で異常終了したとき,更新中のデータに対…
システムアーキテクト 午前Ⅱ(3問)
- 令和5年度 春期 問24DBMS がトランザクションのコミット処理を完了するタイミングはどれか。
- 平成28年度 秋期 問21システム障害発生時には,データベースの整合性を保ち,かつ,最新のデータベース状態に復旧する必要が…
- 平成26年度 秋期 問22データベースに媒体障害が発生したときの回復法はどれか。