応用情報技術者試験 - SE娘の剣 -

応用情報処理技術者試験の対策サイトです。 応用情報処理技術者試験の午前問題を中心とした基礎用語の解説を中心に掲載します。書き始めたばかりなので、内容はまだまだ不十分です。少しずつ追記していきます

データベースの障害回復機能

データベースサーバの電源故障などにより、データベースに障害が発生することがあります。データベースには、障害が発生した場合、特にメモリ上のデータは消えてしまうことがあります。そんな場合でも、データを障害発生の直前に戻す機能が備わっています。

まずは、データの書き込み処理を理解しましょう。データの追加・変更などの処理によって、データの保存には次の3つのアクションがあります。
①メモリに書き込む ⇒SQL操作を実行した時
②ログに書き込む ⇒コミット(COMMIT)を実行した時
③ディスクのデータベースに書き込む ⇒チェックポイント時
db

このような3つのアクションに分けず、いきなりデータベースに書き込んでもいいという考えもあります。しかし、ディスクに書き込む処理には時間がかかりますので非効率です。そこで、メモリ上に書き込むのです。そして、データベース上のデータの確定保存するには、コミット(COMMIT)という命令を実行します。これによって、ディスク上のログに書き込みがなされ、データの更新が確定します。しかし、この時点でも、まだディスクのデータベースには書き込まれません。実際に書き込まれるのはチェックポイントというタイミングです。

ロールバック
トランザクションが途中で終了している場合、データの不整合が起こる可能性があります。ログファイルの更新前情報を使ってトランザクションを元に戻します。
過去問(H28秋SM午前2問13)では、「データベースのロールバック処理の説明」として、「ログの更新前情報を用いて,トランザクション開始直前の状態にデータを復元させる」とあります。

■ロールフォワード
トランザクションはすでに完了しています。チェックポイントが来ていない場合において、ディスクにはデータが反映されていません。そこで、ログファイルの更新後情報を使ってディスクに書き込みをすれば、最新の状態になります。
ロールフォワードは「ログの更新後情報を用いて,トランザクション開始後の障害直前の状態にデータを復元させる(H28秋SM午前2問13不正解選択肢)」ことです。

次のT1~T3の3つのトランザクションで考えます。
T1の場合、トランザクションが終了し、チェックポイントが過ぎています。データはディスクに反映されていますから、何も処理する必要はありません。
T2ですが、トランザクションが途中で終了しています。データの不整合が起こる可能性がありますから、ログファイルの更新前情報を使ってトランザクションを元に戻します。この処理をロールバックと言います。
最後にT3ですが、トランザクションはすでに完了しています。チェックポイントが来ていないので、ディスクにはデータが反映されていません。そこで、ログファイルの更新後情報を使ってディスクに書き込みをすれば、最新の状態(障害直前の状態)になります。この処理をロールフォワードと言います。

tran

過去問(H16春FE午後問2)にて、データベースの障害回復機能の問題があるので紹介します。
この問題を解いてみるといいでしょう。
問2 データベースの障害回復機能に関する次の記述を読んで,設問1~4に答えよ。
あるデータベースシステムでは,定期的にバックアップをとるとともに,更新前情報及び更新後情報をログファイルに記録している。システム障害が発生した場合は,ロールバック処理,ロールフォワード処理及び再処理を組み合わせたウォームスタートで再始動する運用を行っている。
このデータベースシステムでは,チェックポイントで,更新前ログ及び更新後ログヘの情報書出しとデータベースへの書出しを一致させている。したがって,例えばロールバック処理は,ログファイル上の更新前情報を使って,データベースを直前のチェックポイントの時点まで戻すことによって,整合性を保つ。

H28春AP午前
問28 トランザクションA(処理A1→処理A2 順に実行する)とトランザクションB(処理B1→処理B2 順に実行する)が,データベースの資源SとTに対し,次のように処理A1→処理B1→処理A2→処理B2 順で専有ロックを要求する場合,デッドロックが発生する資源の組合せはどれか。
なお,ロックは処理開始時にかけ,トランザクション終了時に解除する。
20170906_4-1

正解は、イです。

問30 媒体障害の回復において,最新のデータベースのバックアップをリストアした後に,トランザクションログを用いて行う操作はどれか。

ア バックアップ取得後でコミット前に中断した全てのトランザクションロールバックする。
イ バックアップ取得後でコミット前に中断した全てのトランザクションをロールフォワードする。
ウ バックアップ取得後にコミットした全てのトランザクションロールバックする。
エ バックアップ取得後にコミットした全てのトランザクションをロールフォワードする。

正解は、エです。

H27秋AP午前

問30 チェックポイントを取得するDBMSにおいて,図のような時間経過でシステム障害が発生した。前進復帰(ロールフォワード)によって障害回復できるトランザクションだけを全て挙げたものはどれか。
20170906_4-2

正解は、ウです。

H26春AP午前
(H21春AP午前 問33と同じ)
問29 分散データベースにおいて図のようなコマンドシーケンスがあった。調停者がシーケンス a で発行したコマンドはどれか。ここで,コマンドシーケンスの記述にUMLのシーケンス図の記法を用いる。
20170906_4-3
ア COMMITの実行要求
イ ROLLBACKの実行要求
ウ 判定レコードの書出し要求
エ ログ書出しの実行要求

正解は、イです。