ITサービスマネージャ 2014年 午前2 問12
問題文
データベースのロールバック処理の説明はどれか。
選択肢
ア:ログの更新後情報を用いて、トランザクション開始後の障害直前の状態にまでデータを復元させる。
イ:ログの更新後情報を用いて、トランザクション開始直前の状態にまでデータを復元させる。
ウ:ログの更新前情報を用いて、トランザクション開始後の障害直前の状態にまでデータを復元させる。
エ:ログの更新前情報を用いて、トランザクション開始直前の状態にまでデータを復元させる。(正解)
🔒 解説は解答すると表示されます
ロールバックと更新前ログ【午前2解説】
正解の理由
ロールバックは、トランザクションの処理を取り消し、データベースをトランザクション開始直前の状態に戻す処理です。
取り消すには、更新によって変更される前の値を記録した「更新前情報」を使います。したがって、更新前情報を用いてトランザクション開始直前の状態に復元するエが正解です。
解法ステップ
-
ロールバックの目的を確認します。
トランザクションの処理を取り消し、開始前の状態に戻すことです。 -
復元に必要なログ情報を確認します。
変更を取り消すには、変更前の値が必要なので、更新前情報を使います。 -
復元する時点を確認します。
トランザクション開始直前の状態に戻す選択肢を選びます。
選択肢別の誤答解説
- ア:更新後情報を使って、障害直前の状態に復元する説明です。更新を取り消すのではなく、処理を反映する「ロールフォワード」に近い考え方です。
- イ:更新後情報を使う点が誤りです。トランザクション開始直前の状態へ戻すには、更新前情報が必要です。
- ウ:更新前情報を使う点は適切ですが、復元先が障害直前の状態になっています。ロールバックで目指すのは、トランザクション開始直前の状態です。
- エ:更新前情報を使い、トランザクション開始直前の状態に復元するため、ロールバックの説明として適切です。
よくある誤解
- 更新後情報でロールバックできると思いがちです。更新を取り消すには、変更前の値が必要です。
- 障害直前の状態に戻すのがロールバックと思いがちです。ロールバックでは、対象のトランザクションの開始前まで処理を取り消します。
- 更新前情報と更新後情報の用途を逆に覚えることがあります。更新前情報は取り消し、更新後情報は更新の再実行に使います。
補足コラム
障害回復では、未コミットのトランザクションの更新を取り消す処理を「UNDO」、コミット済みの更新を再適用する処理を「REDO」と呼びます。一般に、UNDOでは更新前情報、REDOでは更新後情報を利用します。
FAQ
Q. ロールバックは、トランザクション内の一部の処理だけを取り消すこともありますか?
A. 可能です。たとえば、セーブポイントを設定している場合は、トランザクション全体ではなく、その地点以降の処理だけを取り消せます。
A. 可能です。たとえば、セーブポイントを設定している場合は、トランザクション全体ではなく、その地点以降の処理だけを取り消せます。
Q. コミット済みの処理もロールバックできますか?
A. 通常のロールバックは、コミット前のトランザクションを取り消す処理です。コミット後に変更を元に戻す場合は、別の更新処理などが必要です。
A. 通常のロールバックは、コミット前のトランザクションを取り消す処理です。コミット後に変更を元に戻す場合は、別の更新処理などが必要です。
関連キーワード: ロールバック、更新前情報、更新後情報、UNDO、REDO、トランザクション回復

\ せっかくなら /
ITサービスマネージャを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

