戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2012年 春期 午前(科目A)32


問題文

DBMSにおけるログファイルの説明として、適切なものはどれか。

選択肢

システムダウンが発生したときにデータベースの回復処理時間を短縮するため、主記憶上の更新データを定期的にディスクに書き出したものである。
ディスク障害があってもシステムをすぐに復旧させるため、常に同一データのコピーを別ディスクや別サイトのデータベースに書き出したものである。
ディスク障害からデータベースを回復するため、データベースの内容をディスク単位で複写したものである。
データベースの回復処理のため、データの更新前後の値を書き出してデータベースの更新記録を取ったものである。(正解)

🔒 解説は解答すると表示されます

更新ログの役割【午前解説】

正解の理由

DBMSのログは、トランザクションによるデータベース更新の「更新記録」を保持するためのものであり、更新の前後の値(before/after image)を記録して復旧に利用します。選択肢のうち、更新前後の値を書き出して更新記録を取る説明が当てはまるため、が正解です。
ログに記録された情報を使って、障害後はまずログを再生してコミット済みの更新を再適用する(redo)を行い、その後未コミットの処理を取り消す(undo)ことで一貫した状態に復旧します(一般的なARIES流の流れ:分析 → redo → undo)。また、多くの実装では「Write-Ahead Logging(WAL)」により、データページより先にログが永続化されることが保証されます。

解法ステップ

  1. 問題文で「ログ」の目的が何か(復旧用の更新記録)を確認する。
  2. 各選択肢が「ログ(更新記録)」を説明しているか、あるいは別の機能(チェックポイント、レプリケーション、バックアップ)を説明しているかを判別する。
  3. 「更新前後の値を書き出す」という表現があれば、それがログの典型的な説明に一致するため正解と判断する。
  4. 復旧手順の正しい順序(redo→undo)を押さえて、ログの役割が整合することを確認する。

選択肢別の誤答解説

  • ア: 「主記憶上の更新データを定期的にディスクに書き出したもの」
    → これはページのフラッシュやチェックポイントに関する説明で、ログそのものではありません。ログは更新操作の記録であり、主記憶上のページの単なる書き出しを指すものではありません。
  • イ: 「同一データのコピーを別ディスクや別サイトに書き出したもの」
    → これはレプリケーション(ミラーリング、同期/非同期複製)の説明です。可用性や迅速な切り替えに関するものであり、ログの説明とは異なります。
  • ウ: 「ディスク単位で複写したもの」
    → これはディスクイメージやフルバックアップ、スナップショットの説明です。障害からの復旧手段ではありますが、逐次の更新記録(ログ)とは性質が違います。
  • : 「データの更新前後の値を書き出してデータベースの更新記録を取ったもの」
    → 正しい。before/afterイメージにより、コミット済みの更新をredo、未コミットの更新をundoで取り扱う復旧処理が可能になります。WALによってログの永続化が保証されていれば、クラッシュ後にログだけを使って正しい状態に復元できます。

よくある誤解

  • ログとバックアップ(ディスクイメージやスナップショット)を混同する
    → ログは更新操作の差分(履歴)で、バックアップはデータの静的コピーです。復旧では両者を組み合わせることが多い(バックアップ+ログの適用)。
  • 復旧で undo を先に行うと思い込む
    → 正しい順序は「まずログを再生してコミット済みの変更をredo」、次に「未コミットの処理をundo」で取り消すことです。これにより一貫性が回復されます。
  • ログは常にフルコピー(ページ丸ごと)を記録していると考える
    → 実装によっては差分(変更箇所のみ)や論理ログを採ることがあり、常に丸ごとコピーするわけではありません。

補足コラム

  • ARIESの復旧フェーズ(概要)
    1. 分析フェーズ:障害前のトランザクション状態と必要な開始点を特定する。
    2. Redoフェーズ:ログを先頭から(あるいはチェックポイント以降から)読み、コミット済みの更新を再適用してデータページを最新状態にする。
    3. Undoフェーズ:未コミットのトランザクションを遡って取り消し(undo)を行い、必要なら補償ログ(CLR)を記録する。
  • ログの典型的な記録項目例:LSN(ログシーケンス番号)、トランザクションID、ページID、更新前イメージ(before)、更新後イメージ(after)、操作種別。
  • Write-Ahead Logging(WAL)の原則:データページをディスクに書き出す前に、対応するログレコードを永続化することで、クラッシュ後にログだけで整合状態に復旧できる。

FAQ

Q1: なぜ before image が必要ですか?
A1: before image は未コミットの更新を元に戻す(undo)ために必要です。undoでは更新前の値に戻すため、元の値がログに残っていなければ取り消せません。
Q2: ログだけで完全に復旧できるのですか?
A2: 多くの場合、基点となるバックアップやチェックポイントと組み合わせてログを適用します。ログはバックアップ以降の変化を再現する役割を担います。
Q3: レプリケーションがあればログは不要ですか?
A3: レプリケーションは可用性/冗長性のためであり、必ずしも単純な障害復旧(整合性回復)と同義ではありません。トランザクション整合性を回復するためにはログが重要です。
Q4: WALが破られていると何が起きますか?
A4: ログが先に永続化されないと、ディスクに書かれたデータページだけではクラッシュ時に整合性を保証できず、復旧が不可能または不完全になる恐れがあります。

関連キーワード: トランザクションログ、WAL、ARIES、Redo、Undo、チェックポイント、レプリケーション、バックアップ
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について