平成24年春期 午前I 共通 問11

DBMSの媒体障害時の回復法はどれか。

ア 障害発生時, 異常終了したトランザクションをロールバックする。
イ 障害発生時点でコミットしていたが, データベースの実更新がされていないトランザクションをロールフォワードする。
ウ 障害発生時点で, まだコミットもアボートもしていなかった全てのトランザクションをロールバックする。
エ バックアップコピーでデータベースを復元し, バックアップ取得以降にコミットした全てのトランザクションをロールフォワードする。


こぼる
「媒体障害って、ディスクの読み込みができなくなったとかで、ハードがぶっ壊れることだよね。
そのままゴミには出せないから、ハードディスクをハンマーでガーン☆」

ジョブりんご
「野性的すぎるだろ…。
『ハードがぶっ壊れた』ときの回復法は、バックアップディスクを使って以前の状態に戻し、データベースに関しては
バックアップから、それ以降のコミットログを使って、できるだけlatest(直近)の状態にするな。」

こぼる
「完全に障害発生直前1秒前とかにはならないの?」

ジョブりんご
「ログが奇跡的に、障害発生直前1秒前を記録していたらできるが、
トランザクション(計算や書き込み)中のデータベースの情報は無効化されてしまうな。」

こぼる
「それ、銀行の予算とかつじつまあわなくてやばくない?」

ジョブりんご
「だから、障害が起きないように、多重化や、ミラーリングを行う。」

こぼる
「多重化は何台も動いてて、どれかぶっ壊れてもシステムは止まらないようにするものね。
ミラーリングは、2つ以上のハードディスクに全く同じデータを同時に書き込むものね。
ミラーリングを、ハードウェアでやってくれる(工場出荷時、OSを載せる前にもう、あらかじめ機能が備わっている)
から、CPUの負荷がかからないっていうの、最近wikipediaで読んだ!」

ジョブりんご
「選択肢を見ていこうか。」

こぼる
「アは、トランザクションが異常終了ってかいてある。」

ジョブりんご
「ロールバックは基本的に、バグが起きた時、コミットをせずに、トランザクション前の状態に巻き戻すことだ。媒体障害時ではない。」

こぼる
「イはロールフォワードってあるけど?」

ジョブりんご
「ロールフォワードだけでは情報が不足している。」

こぼる
「ウは回復法じゃないよね?一番初めにやること、だけだ。」

ジョブりんご
「エは?」

こぼる
「さっきジョブズが説明してくれたじゃん。エ…で合ってる?」

ジョブりんご
「正解だ。
余談だが、DBのスキーマを考えるのは楽しいよな。」

こぼる
「つっかっもーぜ?」

ジョブりんご
「なぜ知ってる!?」

こぼる
「地方局でやってた。
ジョブズこそ、外国人なのになんで知ってるのよ…」