[第4回]国家試験解説[AP令和5年秋]

応用情報技術者試験 令和5年秋期 問30

DBMSをシステム障害発生後に再立上げするとき,ロールフォワードすべきトランザクションとロールバックすべきトランザクションの組合せとして,適切なものはどれか。ここで,トランザクションの中で実行される処理内容は次のとおりとする。

出典 IPA公開[過去問題]:https://www.ipa.go.jp/shiken/mondai-kaiotu/ps6vr70000010d6y-att/2023r05a_ap_am_qs.pdf

DBMS(データベースマネジメントシステム)に障害が発生した場合の復旧方法として「ロールフォワード」と「ロールバック」という2つの方法があります。

ロールフォワードとは

DBとして使っているマシンの外部記憶装置(HDDやSSDなど)の物理的な故障や保存されたデータにアクセスできないなどの論理的な故障が発生した際に復旧させる方法です。

ロールフォワードではDBを復旧させるために過去のバックアップデータや更新ログファイルなどを使用します。

順番としては、直近のフルバックアップファイルを最初に使用してすべてのデータを復旧します。しかし、これだけでは古いままのファイルもあるので、次に差分アックアップファイルや増分バックアップファイルを使用してフルバックアップファイル保存後に更新したデータを最新版に復旧します。

しかし、バックアップファイルを使って復旧させてもバックアックを取得していないファイルについては復旧できません。そこで、更新ログファイルなどを使ってさらに障害が発生した時点に近づけます。

一度、過去に戻ってから障害発生時点に進むので「フォワード」がついていると覚えると覚えやすいでしょう。

差分バックアックファイルとは

前回のフルバックアップファイル以降に更新したファイルのみをバックアップの対象とします。そのため、フルバックアップファイルよりも容量は少なくなります。使用してDBなどを復旧させる場合は最新の差分バックアップファイルを使用します。

増分バックアップファイルとは

前回のフルバックアップファイルもしくは差分バックアップファイル以降に更新したファイルのみをバックアップの対象とします。そのため、フルバックアップファイルや差分バックアップファイルよりも容量は少なくなりますが、使用してDBなどを復旧させる場合は全ての増分バックアップファイルを使用する必要があります。

ロールバックとは

DBに対してプログラムで更新や削除、追加などを行う際に、プログラムエラーやデッドロックによるエラー、通信エラーなどによって処理ができなかった際に復旧させる方法です。

プログラムでは更新や削除、追加など複数の処理を1つにまとめて、「トランザクション」という単位で扱います。トランザクションの中で1つでも処理ができなかった場合は全ての処理を無効にする必要があります。プログラムでDBに対して処理を行う時は一旦、「仮確定」という形をとり、トランザクション内の処理が全て実行できてからDBへの処理を「確定」させます。

ロールバックではトランザクション内の処理中にエラーが発生すれば「確定」させずにトランザクション実行前の状態に戻します。

障害発生時にトランザクション実行前に戻すので「バック」がついていると覚えると覚えやすいでしょう。