応用情報技術者 2014年 秋期 午前2 問57
問題文
ディスク障害時に、交換したディスクにフルバックアップを取得したテープからデータを復元した後、フルバックアップ取得時以降の更新後コピーをログから反映させてデータベースを回復する方法はどれか。
選択肢
ア:チェックポイントリスタート
イ:リブート
ウ:ロールバック
エ:ロールフォワード(正解)
🔒 解説は解答すると表示されます
ロールフォワード復旧【午前2解説】
正解の理由
ディスク交換後にフルバックアップからデータを復元し、そのフルバックアップ取得以降の更新分をログから反映してデータベースを回復する手法は、いわゆる「ロールフォワード(前方適用)」です。設問の処理手順は、ベースとなるフルバックアップを復元した後、トランザクションログ(アーカイブログやWALなど)を順に適用して最新の状態まで「前へ進める」操作であり、これがエに該当します。
ポイント:
- フルバックアップは基点(ベースイメージ)として復元される。
- その後の更新はログから順次再適用(redo)することで復元される。
- 未完了のトランザクションは適用後にロールバック(undo)されて一貫性が保たれる。
解法ステップ
- 問題文から「フルバックアップを復元した後」「取得時以降の更新をログから反映」とあることを確認する。
- 「バックアップ復元+ログ適用=前へ進める(ロールフォワード)」という用語対応を思い出す(ロールフォワード=redo適用)。
- 選択肢の意味を確認し、ログを用いて更新を反映するのはロールフォワードであると判断する。
(試験的なチェックポイント)
- 「ログから反映」=redoである点を基準に選ぶ。
- 「元の状態に戻す」「起点から再開する」などの語と混同しない。
選択肢別の誤答解説
- ア: チェックポイントリスタート
チェックポイントリスタートはチェックポイント時点を復旧の起点とし、必要最小限のログを用いて復旧処理を行う方式です。具体的にはチェックポイント以降のログを再適用(ロールフォワード)して未反映の更新を反映し、同時に未完了トランザクションがあればロールバックして一貫性を回復します。したがって「ログ適用を伴わない」といった誤解は避ける必要があります。本問の「フルバックアップを復元してからログを反映する」手法はチェックポイントリスタートの概念とは異なり、明確にログの順次適用を指すためエが適切です。 - イ: リブート
リブートは単にシステム(OSやDBMSプロセス)の再起動を意味し、バックアップ復元やログ適用によるデータ回復を表すものではありません。ハードウェア交換後にOSを再起動しても、フルバックアップ復元+ログ適用を行う工程とは別です。 - ウ: ロールバック
ロールバックは未完了のトランザクションを取り消す(undo)操作であり、バックアップ時点から後の更新を「取り消す」意味合いです。本問で求められているのは「更新を反映して前に進める」操作なのでロールバックは不適切です。 - エ: ロールフォワード
フルバックアップをベースに、以後の変更をログから順に再適用して最新状態へ戻す手法で、本問の記述に合致します。したがってエが正解です。
よくある誤解
- 誤解1: 「チェックポイントリスタートはログ適用をしない」
実務的にはチェックポイントを起点として、必要最小限のログ再適用(redo)と未完了トランザクションのロールバック(undo)を組み合わせて復旧を行います。ログ適用が含まれないとする説明は誤りです。 - 誤解2: 「ロールバックとロールフォワードを混同する」
ロールバック=undo(取り消し)、ロールフォワード=redo(再適用)と覚えると判別しやすいです。 - 誤解3: 「フルバックアップがあればログは不要」
フルバックアップだけではバックアップ取得以降の更新は反映されないため、最新状態に戻すにはログが必須です(ポイントインタイムでなくても)。
補足コラム
- 実際のDBMSでの流れ(例、一般的な概念)
- 故障ディスクを交換する。
- 最新のフルバックアップを新ディスクに復元する(ベースイメージの復元)。
- アーカイブログやトランザクションログを取得時刻以降順に適用していく(ロールフォワード)。
- ログ適用の結果、コミット済みトランザクションは反映され、未コミットは取り消されてデータ整合性を確保する。
- 用語対応例
- Redoログ、アーカイブログ、WAL(Write-Ahead Log) → ロールフォワードで使用
- Undoログ、未完了トランザクションの処理 → ロールバックで使用
- コマンド例(DBMSにより異なる。あくまでイメージ)
-- ベースバックアップ復元(疑似)
RESTORE DATABASE FROM BACKUP 'full.bak';
-- ログ適用(疑似)
APPLY LOGS FROM 'archive_log_1' TO 'archive_log_n';
RECOVER DATABASE;
FAQ
Q1: ロールフォワードは常にフルバックアップが必要ですか?
A1: はい。ロールフォワードはベースとなるバックアップ(フルまたは適切な差分/増分)と、それ以降のログが揃って初めて成り立ちます。ベースがなければログのみでは完全復旧できません。
A1: はい。ロールフォワードはベースとなるバックアップ(フルまたは適切な差分/増分)と、それ以降のログが揃って初めて成り立ちます。ベースがなければログのみでは完全復旧できません。
Q2: ロールフォワード中に未コミットのトランザクションはどうなる?
A2: ログを再適用(redo)した後、未コミットのトランザクションはロールバック(undo)されて一貫性が保たれます。
A2: ログを再適用(redo)した後、未コミットのトランザクションはロールバック(undo)されて一貫性が保たれます。
Q3: ログが欠損していると復旧できない?
A3: 欠損している範囲の更新は再適用できないため、その時点までの回復しかできません。重要なログは適切に保管・バックアップする必要があります。
A3: 欠損している範囲の更新は再適用できないため、その時点までの回復しかできません。重要なログは適切に保管・バックアップする必要があります。
関連キーワード: ロールフォワード、ロールバック、チェックポイント、トランザクションログ、フルバックアップ、ポイントインタイムリカバリ、アーカイブログ、WAL、redo、undo

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

