(57)【特許請求の範囲】
【請求項１】
データベース管理システムを有する計算機と、前記計算機からアクセスされるデータを格納する記憶装置システムとを含む計算機システムにおけるデータベース回復方法であって、
前記計算機は、前記記憶装置システムに接続されるポート、前記ポートに接続されるプロセッサ、及び前記プロセッサに接続されるメモリを備え、
前記記憶装置システムは、前記計算機に接続されるポート、前記ポートに接続されプロセッサ及びメモリを備える制御部、及び前記計算機から書き込み要求がされるデータを格納するディスクドライブを備え、
前記ディスクドライブは、前記データを格納するデータボリューム、前記データボリュームの複製であるスナップショットボリューム、前記データの更新ログを格納するデータベースログ、及び前記データボリュームの更新情報を保持する更新ジャーナルを保持し、
前記データベース管理システムは、前記データボリュームが破損したときに前記更新ジャーナルを適用する範囲と前記データベースログを適用する範囲とを切り替える回復ポイントを記録するものとし、
前記データベース回復方法は、
前記スナップショットボリュームに前記更新ジャーナルのうち前記回復ポイントにより特定される範囲の更新ジャーナルを適用するステップと、
更新後の前記スナップショットボリュームを前記破損したデータボリュームに代わるデータボリュームとして切り替えるステップと、
前記切り替えられたデータボリュームに対して前記データベースログのうち前記回復ポイントにより特定される範囲のデータベースログを適用するステップとを有することを特徴とするデータベース回復方法。
【請求項２】
前記更新情報は、前記データボリュームの更新後のデータイメージであることを特徴とする請求項１に記載のデータベース回復方法。
【請求項３】
前記更新ジャーナルの適用は、前記記憶装置システムによって実行されることを特徴とする請求項１に記載のデータベース回復方法。
【請求項４】
前記回復ポイントは、前記データベースログと前記更新情報との対応関係を保持することを特徴とする請求項１に記載のデータベース回復方法。
【請求項５】
前記データベース管理システムは、更新されたデータを一旦蓄積し、所定のタイミングで蓄積された更新データを一括して前記データボリュームに記録するチェックポイント設定し、
前記回復ポイントは、最新のチェックポイントを設定したときに記録されることを特徴とする請求項１に記載のデータベース回復方法。
【請求項６】
前記チェックポイントは、前記データベースログに記録され、
前記回復ポイントは、前記データベースログに記録されたチェックポイントと、前記更新ジャーナルの最新の更新情報との対応関係を含むことを特徴とする請求項５に記載のデータベース回復方法。
【請求項７】
データベース管理システムを有する計算機と、前記計算機からアクセスされるデータを格納する記憶装置システムと、を備える計算機システムであって、
前記計算機は、前記記憶装置システムに接続されるポート、前記ポートに接続されるプロセッサ、及び前記プロセッサに接続されるメモリを備え、
前記記憶装置システムは、前記計算機に接続されるポート、前記ポートに接続されプロセッサ及びメモリを備える制御部、及び前記計算機から書き込み要求がされるデータを格納するディスクドライブを備え、
前記ディスクドライブは、前記データを格納するデータボリューム、前記データボリュームの複製であるスナップショットボリューム、前記データの更新ログを格納するデータベースログ、及び前記データボリュームの更新情報を保持する更新ジャーナルを保持し、
前記データベース管理システムは、前記計算機システムが正常に稼働している間に、前記データボリュームが破損したときに前記更新ジャーナルを適用する範囲と前記データベースログを適用する範囲とを切り替える回復ポイントを記録し、前記データボリュームに障害が発生したときには、前記スナップショットボリュームに前記更新ジャーナルを前記回復ポイントまで適用し、前記スナップショットボリュームを前記データボリュームに切り替え、さらに、前記回復ポイント以降の前記データベースログを適用する、
ことを特徴とする計算機システム。
【請求項８】
前記更新情報は、前記データボリュームの更新後のデータイメージであることを特徴とする請求項７に記載の計算機システム。
【請求項９】
前記更新ジャーナルの適用は、前記記憶装置システムによって実行されることを特徴とする請求項７に記載の計算機システム。
【請求項１０】
前記回復ポイントは、前記データベースログと前記更新情報との対応関係を保持することを特徴とする請求項７に記載の計算機システム。
【請求項１１】
前記データベース管理システムは、更新されたデータを一旦蓄積し、所定のタイミングで蓄積された更新データを一括して前記データボリュームに記録するチェックポイント設定機能を備え、
前記回復ポイントは、最新のチェックポイントを設定したときに記録されることを特徴とする請求項７に記載の計算機システム。
【請求項１２】
前記チェックポイントは、前記データベースログに記録され、
前記回復ポイントは、前記データベースログに記録されたチェックポイントと、前記更新ジャーナルの最新の更新情報との対応関係を含むことを特徴とする請求項１１に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムの運用に関し、特に計算機システムに導入されたデータベース管理システムが管理するデータベースの回復方法に関する。
【背景技術】
【０００２】
データベースサーバ及び記憶装置システムを備える計算機システムは、突発的な事故や災害等によって障害が発生したとき、早急にデータベースを回復させる必要がある。
【０００３】
そこで、データベースの回復に関して、特許文献１に示す技術が開示されている。この文献によると、データベース管理システムは、バックアップ取得後の最初のトランザクションを更新ログであるデータベースログ（ＤＢログ）に記憶する。そして、データベース管理システムは、バックアップデータに対してトランザクションが記憶された位置からＤＢログを適用することによってデータベースを回復させる。
【０００４】
また、特許文献２には記憶装置システムのスナップショットと更新ジャーナルを用いたボリュームの回復方法が開示されている。この文献によると、記憶装置システムは、回復対象となるボリュームのスナップショットと更新ジャーナルとを保持する。スナップショットとは、ある時点における回復対象のボリュームの複製である。更新ジャーナルには、スナップショットを取得してからの対象ボリュームの更新情報が保持される。そして、記憶装置システムは、ボリュームに障害が発生すると、更新ジャーナルの情報を適用してスナップショットを更新し、ボリュームを回復させる。
【特許文献１】米国特許第５３８１５４５号明細書
【特許文献２】特開２００５−０１８７３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示された従来技術では、記憶装置システムの記憶媒体にバックアップデータを展開し、ＤＢログを適用してデータベースを回復させる。ところが、バックアップデータや古いＤＢログはテープなどの記憶媒体に格納されることが多いため、データの読み出しに多くの時間を必要とした。また、データベースの回復は、バックアップデータを取得した後のすべてのＤＢログをバックアップデータに適用する必要があるため、ＤＢログの量が多い場合には、さらに多くの時間を要することとなった。
【０００６】
また、特許文献２に開示された従来技術では、記憶装置システムは、記憶装置のブロック毎にデータを回復する。データベース管理システムは、データベースへの書き出しをトランザクションと非同期に実行する。そのため、ブロック単位でデータベースを回復しても、トランザクションの整合性を確保することができないという問題点があった。
【０００７】
本発明は、前述した問題に鑑みてなされたものであり、データベースボリュームの障害が発生してから迅速にデータベースを回復させる方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の代表的な実施の形態では、データベース管理システムを有する計算機と、前記計算機からアクセスされるデータを格納する記憶装置システムとを含む計算機システムにおけるデータベース回復方法であって、前記計算機は、前記記憶装置システムに接続されるポート、前記ポートに接続されるプロセッサ、及び前記プロセッサに接続されるメモリを備え、前記記憶装置システムは、前記計算機に接続されるポート、前記ポートに接続されプロセッサ及びメモリを備える制御部、及び前記計算機から書き込み要求がされるデータを格納するディスクドライブを備え、前記ディスクドライブは、前記データを格納するデータボリューム、前記データボリュームの複製であるスナップショットボリューム、前記データの更新ログを格納するデータベースログ、及び前記データボリュームの更新情報を保持する更新ジャーナルを保持し、前記データベース管理システムは、前記データボリュームが破損したときに前記更新ジャーナルを適用する範囲と前記データベースログを適用する範囲とを切り替える回復ポイントを記録するものとし、前記データベース回復方法は、前記スナップショットボリュームに前記更新ジャーナルのうち前記回復ポイントにより特定される範囲の更新ジャーナルを適用するステップと、更新後の前記スナップショットボリュームを前記破損したデータボリュームに代わるデータボリュームとして切り替えるステップと、前記切り替えられたデータボリュームに対して前記データベースログのうち前記回復ポイントにより特定される範囲のデータベースログを適用するステップとを有することを特徴とする。
【発明の効果】
【０００９】
本発明の代表的な実施の形態によれば、更新ジャーナルを適用してデータを回復させた後に、最小限のデータベースログを適用してトランザクションの整合性を確保する。したがって、トランザクションの整合性を確保した上で、迅速にデータベースを回復させることができる。
【００１０】
また、本発明の代表的な実施の形態によれば、回復ポイント以降のＤＢログを管理すればよいため、更新ログの管理負担を軽減することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について説明する。
【００１２】
（第１の実施の形態）
図１は、第１の実施の形態の計算機システムを示す構成図である。
【００１３】
計算機システムは、データベースサーバ（ＤＢサーバ）１Ａ及び記憶装置システム２を備える。ＤＢサーバ１Ａと記憶装置システム２とは、第１のネットワーク３Ａ及び第２のネットワーク４によって接続される。
【００１４】
ＤＢサーバ１Ａは、ＣＰＵ１１Ａ、主記憶１２Ａ、ネットワークインタフェース１３Ａ、ディスプレイ１４Ａ、キーボード１５Ａ、ＣＤ−ＲＯＭ１６Ａ、コントローラ１７Ａ、記憶装置１８Ａ及びデータインタフェース１９Ａを備える。ＣＰＵ１１Ａ、主記憶１２Ａ、ネットワークインタフェース１３Ａ、ディスプレイ１４Ａ、キーボード１５Ａ、ＣＤ−ＲＯＭ１６Ａ、記憶装置１８Ａ及びデータインターフェイス１９Ａは、コントローラ１７Ａを経由して互いに接続される。
【００１５】
ＣＰＵ１１Ａは、主記憶１２Ａに読み出されたプログラムを実行することによって、各種処理を実行する。
【００１６】
主記憶１２Ａは、ＣＰＵ１１Ａによって実行されるプログラム及び処理に必要なデータを読み出して格納する。
【００１７】
ディスプレイ１４Ａは、処理結果などの情報を画面に表示する。
【００１８】
キーボード１５Ａは、必要な情報の入力及び実行する処理を指示する。
【００１９】
記憶装置１８Ａは、ＣＰＵ１１Ａによって実行されるプログラム及び処理に必要なデータを格納する。これらのプログラムには、データベース管理システム１０１Ａ及びデータベース回復制御プログラム１０６Ａが含まれる。
【００２０】
データベース管理システム（ＤＢＭＳ）１０１Ａは、共有データとしてのデータベースを管理する。ＤＢＭＳ１０１Ａは、格納されたデータに対するアプリケーションからの要求を受けて、記憶装置システム２に格納されるデータを取得及び更新する。
【００２１】
また、ＤＢＭＳ１０１Ａは、チェックポイント取得プログラム１０２Ａ及びログ適用プログラム１０３Ａを含む。チェックポイント取得プログラム１０２Ａは、図６にて後述するように、データベースに更新後のデータの書き出しなどの処理を行なってチェックポイントを設定する。ログ適用プログラム１０３Ａは、例えば、バックアップデータに更新ログを適用してデータベースを回復させる。
【００２２】
データベース回復制御プログラム（ＤＢ回復制御プログラム）１０６Ａは、図８にて後述するように、ＤＢボリューム１１０Ａに障害が発生したときにデータベースを回復させる。
【００２３】
データインターフェイス１９Ａは、第１のネットワーク３Ａと接続する。第１のネットワーク３Ａは、例えば、ファイバチャネルプロトコルを用いたデータ転送に適したネットワークである。なお、データインターフェイス１９Ａは、複数備わっていてもよい。
【００２４】
ネットワークインタフェース１３Ａは、第２のネットワーク４と接続される。第２のネットワーク４は、例えば、ＩＰプロトコルを用いたネットワークである。
【００２５】
ＣＤ−ＲＯＭ１６Ａは、記憶装置１８Ａに格納されるＤＢＭＳ１０１Ａなどのプログラムを供給する装置であり、フロッピーディスク（登録商標）やテープなどの他の記憶媒体であってもよい。また、これらのプログラムは、ネットワークインタフェース１３Ａ経由で記憶装置１８Ａに格納されてもよい。
【００２６】
記憶装置システム２は、ポート２１Ａ、ポート２１Ｂ、ディスクコントローラ２２、記憶装置２６（２６Ａ〜２６Ｄ）及びネットワークインタフェース２７を備える。記憶装置システム２は、ポート２１Ａを経由して第１のネットワーク３Ａと接続する。また、記憶装置システム２は、ネットワークインタフェース２７を経由して第２のネットワーク４Ａと接続する。さらに、記憶装置システム２は、ポート２１Ｂを経由して他のネットワークと接続することも可能である。
【００２７】
記憶装置２６は、磁気ディスクドライブを備える。記憶装置２６は、複数のディスクドライブによってＲＡＩＤを構成してもよい。
【００２８】
記憶装置２６Ａには、データベースボリューム（ＤＢボリューム）１１０Ａが作成される。ＤＢボリューム１１０Ａは、ＤＢデータ１２０Ａを格納する。
【００２９】
記憶装置２６Ｂには、データベースログボリューム（ＤＢログボリューム）１１０Ｂが作成される。ＤＢログボリューム１１０Ｂは、ＤＢデータ１２０Ａのデータベースログ（ＤＢログ）１２１Ａを格納する。ＤＢログ１２１Ａには、図３にて後述するように、トランザクションの開始及び完了を含めた入出力情報が記録される。
【００３０】
記憶装置２６Ｃには、スナップショットボリューム１１０Ｃが作成される。スナップショットボリューム１１０Ｃは、スナップショット取得時点におけるＤＢボリューム１１０Ａの複製である。スナップショットボリューム１１０Ｃは、ＤＢボリューム１１０Ａとリアルタイムに同期させる必要はなく、周期的に同期させてもよい。
【００３１】
記憶装置２６Ｄには、ジャーナルボリューム１１０Ｄが作成される。ジャーナルボリューム１１０Ｄは、更新ジャーナル１１３Ａ及び回復位置データ１１４Ａを格納する。
【００３２】
更新ジャーナル１１３Ａは、図４にて後述するように、ＤＢボリューム１１０Ａの更新情報である。したがって、更新ジャーナル１１３Ａは、ＤＢデータ１２０Ａの内容が更新されると、更新内容に応じて更新情報が追加される。
【００３３】
回復位置データ１１４Ａは、図５にて後述するように、ＤＢボリューム１１０Ａに障害が発生したときにＤＢログ１２１Ａを適用する開始位置（回復ポイント）を含む。第１の実施の形態では、回復ポイントは、更新ジャーナル１１３ＡとＤＢログ１２１Ａとの対応関係である。
【００３４】
ディスクコントローラ２２は、ＤＢサーバ１ＡのＤＢＭＳ１０１Ａ及びＤＢ回復制御プログラム１０６Ａの要求に応じて所定の処理を実行する。ディスクコントローラ２２は、制御メモリ２３、プロセッサ２４及びキャッシュメモリ２５を備える。
【００３５】
制御メモリ２３は、記憶装置２６に対する制御に必要なプログラムや情報を格納する。具体的には、制御メモリ２３は、ジャーナル取得プログラム１０４、ジャーナル適用プログラム１０５及びボリューム管理テーブル１０７を格納する。
【００３６】
ジャーナル取得プログラム１０４は、チェックポイント取得プログラム１０２Ａと連携して動作する。また、ジャーナル取得プログラム１０４は、図７にて後述するように、ＤＢデータ１２０Ａが更新されたときに更新ジャーナル１１３Ａに更新情報を追加する。さらに、ジャーナル取得プログラム１０４は、回復位置データ１１４Ａにレコードを追加する。
【００３７】
ジャーナル適用プログラム１０５は、ＤＢ回復制御プログラム１０６Ａと連携して動作する。また、ジャーナル適用プログラム１０５は、図９にて後述するように、更新ジャーナル１１３Ａをスナップショットボリューム１１０Ｃに適用して更新情報を反映させる。
【００３８】
ボリューム管理テーブル１０７は、図２にて後述するように、各ボリュームの属性及び各ボリューム間の関係を格納する。
【００３９】
プロセッサ２４は、ジャーナル取得プログラム１０４及びジャーナル適用プログラム１０５などの処理を実行する。
【００４０】
キャッシュメモリ２５は、データの読み書きを高速に処理するためにＤＢデータ１２０Ａに格納された又は格納されるべきデータを一時的に格納する。
【００４１】
次に、第１の実施の形態の実施に必要なデータを格納するテーブルについて説明する。
【００４２】
図２は、ボリューム管理テーブル１０７の構成を示す図である。ボリューム管理テーブル１０７は、各ボリュームの属性、各ボリューム間の関係及び記憶装置との対応を格納する。第１の実施の形態では、１ボリュームにつき１レコードのデータがボリューム管理テーブル１０７に作成される。
【００４３】
ボリューム管理テーブル１０７は、ボリュームＩＤフィールド７０１、サーバＩＤフィールド７０２、種別フィールド７０３、記憶装置ＩＤフィールド７０４、開始・終了ＢＡフィールド７０５及びベースボリュームフィールド７０６を含む。
【００４４】
ボリュームＩＤフィールド７０１は、各ボリュームの一意の識別子を格納する。
【００４５】
サーバＩＤフィールド７０２は、当該ボリュームにアクセスするデータベースサーバの一意の識別子を格納する。
【００４６】
種別フィールド７０３は、ボリュームの用途を示す種別を格納する。具体的には、ＤＢボリューム１１０Ａ及びＤＢログボリューム１１０Ｂは、ＤＢＭＳ１０１Ａから直接アクセスされるので「通常」と設定される。スナップショットボリューム１１０Ｃは、ＤＢボリューム１１０Ａの複製なので「スナップショット」と設定される。ジャーナルボリューム１１０Ｄは、ジャーナルのデータを格納するので「ジャーナル」と設定される。
【００４７】
記憶装置ＩＤフィールド７０４は、当該ボリュームが配置される記憶装置２６の一意の識別子を格納する。開始・終了ＢＡフィールド７０５は、記憶装置２６において、当該ボリュームが開始するブロックアドレス及び終了するブロックアドレスを格納する。記憶装置ＩＤフィールド７０４及び開始・終了ＢＡフィールド７０５に格納された情報によって、当該ボリュームが物理的に格納される場所を特定することができる。
【００４８】
ベースボリュームフィールド７０６は、ボリューム種別フィールド７０３に設定されたボリュームの種別が「スナップショット」又は「ジャーナル」の場合に、取得元のボリュームのボリュームＩＤを格納する。
【００４９】
図３は、ＤＢログ１２１Ａの構成を示す図である。ＤＢログ１２１Ａは、ＤＢデータ１２０Ａの更新履歴をはじめとするＤＢＭＳ１０１Ａの作業履歴を格納する。
【００５０】
ＤＢログ１２１Ａは、ログ通番フィールド４０１及びログレコードフィールド４０２を含む。ログ通番フィールド４０１は、ＤＢログ１２１Ａにレコードが追加された順序であるログ通番を格納する。ログレコードフィールド４０２は、データベースに対して実行された具体的な作業内容（ログデータ）を保持する。また、ログデータは、更新処理を行なった場合、更新前のデータと更新後のデータを含む。
【００５１】
ＤＢＭＳ１０１Ａは、ＤＢログ適用プログラム１０３を実行し、バックアップデータなどに対してＤＢログ１２１Ａを適用してデータベースを回復させる。ＤＢＭＳ１０１Ａは、ログデータに含まれる更新前後のデータを用いることによって、トランザクションの整合性を確保することができる。具体的には、障害発生時にトランザクションが完了している場合にはロールフォワードして更新後のデータを反映させる。また、障害発生時にトランザクションが完了していない場合にはロールバックして更新前のデータを反映させる。
【００５２】
図４は、更新ジャーナル１１３Ａの構成を示す図である。更新ジャーナル１１３Ａのレコードは、ＤＢデータ１２０Ａの更新履歴である。更新ジャーナル１１３Ａは、更新データとしてブロックアドレスとデータイメージを保持する点でＤＢログ１２１Ａと構成が異なる。データイメージとは、ディスクに記録された内容をそのまま複製したものである。また、更新ジャーナル１１３Ａは、更新後のデータのみを保持する点でもＤＢログ１２１Ａと相違する。
【００５３】
更新ジャーナル１１３Ａは、更新番号フィールド２０１、ＬＢＡフィールド２０２及びデータフィールド２０３を含む。
【００５４】
更新番号フィールド２０１は、データの更新順序を示す更新番号を格納する。更新番号は、１から順次増加する数値である。記憶装置システム２は、更新番号をレコード挿入時に自動的に付与してもよい。
【００５５】
ＬＢＡフィールド２０２は、更新後のデータが格納された領域の論理ブロックアドレス（ＬＢＡ）を格納する。
【００５６】
データフィールド２０３は、更新後のデータイメージを格納する。
【００５７】
図５は、回復位置データ１１４Ａの構成を示す図である。回復位置データ１１４Ａは、回復ポイントを格納する。第１の実施の形態では、回復位置データ１１４Ａは、ＤＢログ１２１Ａと更新ジャーナル１１３Ａの各レコードの対応関係を格納する。
【００５８】
回復位置データ１１４Ａは、更新番号フィールド３０１及びログ通番フィールド３０２を含む。
【００５９】
更新番号フィールド３０１は、更新ジャーナル１１３Ａの更新番号を格納する。
【００６０】
回復ＩＤフィールド３０２は、更新番号と対応するＤＢログ１２１Ａのログ通番を格納する。
【００６１】
なお、回復位置データ１１４Ａは、前述のようにジャーナルボリューム１１０Ｄに格納されているが、ＤＢサーバ１Ａの記憶装置１８Ａに格納されてもよい。
【００６２】
ここで、本発明によるデータベース回復の処理について説明する。第１の実施の形態では、計算機システムの通常運用時における回復ポイントの記録処理と、障害発生時におけるデータベースの回復処理に分けることができる。
【００６３】
最初に、計算機システムの通常運用時における回復ポイントの記録処理について説明する。
【００６４】
図６は、チェックポイント取得プログラム１０２Ａのフローチャートである。
【００６５】
ここで、いわゆるチェックポイントについて説明する。更新データをＤＢボリューム１１０Ａに実際に記録するタイミングは、トランザクションの完了と同時ではなく、周期的に又は特定の処理に伴って行なわれる。チェックポイントとは、更新データをＤＢボリューム１１０Ａに記録するタイミングをいう。また、チェックポイントを設定するということは、更新データをＤＢボリューム１１０Ａに記録する処理も含む。
【００６６】
ＤＢＭＳ１０１Ａは、チェックポイント取得プログラム１０２Ａを周期的に実行する。ＤＢＭＳ１０１Ａは、更新データがＤＢボリューム１１０Ａに記録されていない状態で一定量以上蓄積されたときに、チェックポイント取得プログラム１０２Ａを実行してもよい。
【００６７】
まず、ＤＢＭＳ１０１Ａは、チェックポイントの取得開始をＤＢログ１２１Ａに追加する（ステップ５０１）。
【００６８】
次に、ＤＢＭＳ１０１Ａは、チェックポイント取得処理を実行する（ステップ５０２）。チェックポイント取得処理は、更新データをＤＢボリューム１１０Ａに記録してチェックポイントを取得する。
【００６９】
チェックポイント取得処理が完了すると、ＤＢＭＳ１０１Ａは、チェックポイントの取得終了をＤＢログ１２１Ａに追加する（ステップ５０３）。
【００７０】
次に、ＤＢＭＳ１０１Ａは、チェックポイント取得終了ログのログ通番及びＤＢボリューム１１０ＡのボリュームＩＤを記憶装置システム２に通知して、ジャーナル取得プログラム１０４を実行する（ステップ５０４）。
【００７１】
図７は、ジャーナル取得プログラム１０４のフローチャートである。ジャーナル取得プログラム１０４は、更新ジャーナル１１３Ａに更新情報を追加し、及び回復位置データ１１４Ａに回復ポイントを記録する。
【００７２】
記憶装置システム２は、ＤＢサーバ１Ａからの通知を受けてジャーナル取得プログラム１０４を起動する。ジャーナル取得プログラム１０４は、制御メモリ２３に格納されており、プロセッサ２４によって実行される。
【００７３】
まず、記憶装置システム２は、ＤＢサーバ１Ａからの実行指示が通常の入出力指示か、回復位置通知かを判定する（ステップ８０１）。ＤＢＭＳ１０１は、チェックポイント取得プログラム１０２Ａからジャーナル取得プログラム１０４を起動させるとき、回復位置通知フラグの値をＯＮに設定する。記憶装置システム２は、この回復位置通知フラグの値によって実行する処理を判定する。
【００７４】
ＤＢサーバ１Ａからの実行指示が通常の入出力指示の場合には、記憶装置システム２は、ＤＢサーバ１Ａから通知されたボリュームＩＤの値からボリューム管理テーブル１０７を参照する。そして、指定されたボリュームが配置されている記憶装置２６に対する入出力処理を実行する（ステップ８０２）。
【００７５】
次に、記憶装置システム２は、指示された処理が書き込みか読み出しかを判断する（ステップ８０３）。書き込みの場合には、ボリューム管理テーブル１０７を参照し、指定されたボリュームに対応するジャーナルボリュームＩＤを取得する（ステップ８０４）。
【００７６】
次に、記憶装置システム２は、取得したジャーナルボリューム１１０Ｄに格納される更新ジャーナル１１３Ａに対して、更新されたＬＢＡ及び更新後データを追加する（ステップ８０５）。
【００７７】
一方、ＤＢサーバ１Ａからの実行指示が回復位置通知の場合には、記憶装置システム２は、通知されたボリュームＩＤとボリューム管理テーブル１０７から指定されたボリュームに対応するジャーナルボリュームＩＤを取得する（ステップ８０６）。この処理は、前述したステップ８０４の処理と同じである。
【００７８】
次に、記憶装置システム２は、取得したジャーナルボリューム１１０Ｄに格納される回復位置データ１１４Ａに対して、更新ジャーナル１１３Ａの最大更新番号と、サーバから通知されたＤＢログ１２１Ａのログ通番を追加する（ステップ８０７）。
【００７９】
ここで、障害発生時におけるデータベースの回復処理について説明する。データベース回復処理の概要は、まず、スナップショットボリューム１１０Ｃに更新ジャーナル１１４を適用する。次に、スナップショットボリューム１１０ＣをＤＢボリュームに切り替える。最後に、切替後のＤＢボリュームに対してＤＢログ１２１Ａを適用してトランザクションの整合性を確保する。
【００８０】
図８は、データベースの回復処理を行なうＤＢ回復制御プログラム１０２のフローチャートである。ＤＢ回復制御プログラム１０２は、ＤＢサーバ１Ａが稼働している間はＤＢＭＳ１０１Ａとともに主記憶１２Ａに常駐する。
【００８１】
ＤＢサーバ１Ａは、ＤＢ回復制御プログラム１０２を起動すると、ＤＢボリューム１１０Ａの破壊通知を受信するまでステップ６０１で待機する。破壊通知は、ＤＢＭＳ１０１ＡがＤＢボリューム１１０Ａの障害発生を検出したときに、ＤＢボリューム１１０ＡのボリュームＩＤとともに通知される。ＤＢボリューム１１０Ａの障害発生は、ＤＢＭＳ１０１ＡがＤＢボリューム１１０Ａへのアクセスに失敗した原因などから判断される。
【００８２】
ＤＢサーバ１Ａは、ＤＢボリューム１１０Ａの破壊通知を受信すると（ステップ６０１）、ＤＢログ１２０を参照してチェックポイント取得完了を示す最新のレコードを取得する（ステップ６０２）。さらに、ＤＢサーバ１Ａは、取得したレコードからログ通番４０１の値を取得する（ステップ６０３）。
【００８３】
次に、ＤＢサーバ１Ａは、ステップ６０１で通知されたボリュームＩＤとステップ６０３で取得したログ通番４０１とを、記憶装置システム２に通知して、ジャーナル適用プログラム１０５の実行を指示する（ステップ６０４）。記憶装置システム２は、ジャーナル適用プログラム１０５を実行し、スナップショットボリューム１１０Ｃに更新ジャーナル１１３Ａを適用する。その後、記憶装置システム２は、スナップショットボリューム１１０ＣをＤＢボリュームに切り替える。ジャーナル適用プログラム１０５の処理の詳細は図９にて後述する。
【００８４】
次に、ＤＢサーバ１Ａは、ステップ６０３で取得したチェックポイント取得完了を示すレコードに対応するチェックポイント取得開始を示すレコードのログ通番４０１をＤＢログ１２１Ａから取得する（ステップ６０５）。
【００８５】
最後に、ＤＢサーバ１Ａは、ＤＢＭＳ１０１Ａのログ適用プログラム１０３Ａを実行する（ステップ６０６）。ログ適用プログラム１０３Ａは、ステップ６０５で取得したログ通番以降のログを切替後のＤＢボリュームに対して適用する。
【００８６】
図９は、ジャーナル適用プログラム１０５のフローチャートである。ジャーナル適用プログラム１０５は、ＤＢ回復制御プログラム１０２からの起動指示を受けて実行される。また、記憶装置システム２は、ジャーナル適用プログラム１０５の起動指示とともに、破損したＤＢボリューム１１０ＡのボリュームＩＤと最新のチェックポイントを設定したときのログ通番が通知される。
【００８７】
記憶装置システム２は、ＤＢサーバ１Ａから通知されたボリュームＩＤに基づいてボリューム管理テーブル１０７を参照し、対応するジャーナルボリューム１１０Ｄを取得する（ステップ９０１）。
【００８８】
次に、記憶装置システム２は、ステップ９０１で取得したジャーナルボリューム１１０Ｄの回復位置データ１１４Ａを参照する。そして、ＤＢサーバ１Ａから通知されたログ通番に対応する更新番号３０１の値を取得する（ステップ９０２）。
【００８９】
次に、記憶装置システム２は、ＤＢサーバ１Ａから通知されたボリュームＩＤに基づいてボリューム管理テーブル１０７を参照し、対応するスナップショットボリューム１１０Ｃを取得する（ステップ９０３）。
【００９０】
次に、記憶装置システム２は、ステップ９０３で取得したスナップショットボリューム１１０Ｃに対して更新ジャーナル１１３Ａを適用する（ステップ９０４）。具体的には、ＬＢＡフィールドから求めたアドレスに対し、更新ジャーナル１１３Ａのデータフィールドの内容を、ステップ９０２で取得した更新番号まで更新番号順に上書きする。
【００９１】
最後に、記憶装置システム２は、スナップショットボリューム１１０ＣをＤＢボリュームに切り替える（ステップ９０５）。具体的には、ボリューム管理テーブル１０７に格納されたスナップショットボリューム１１０Ｃに対応するレコードについて、種別を「スナップショット」から「通常」に変更する。次に、ボリューム管理テーブル１０７から破損したＤＢボリューム１１０Ａに該当するレコードを削除する。さらに、スナップショットボリューム１１０ＣのボリュームＩＤを破損したＤＢボリューム１１０ＡのボリュームＩＤに書き換える。
【００９２】
ここで、図２から図５に示した表に記載されたデータを例として、第１の実施の形態によるデータベースの回復方法の機能について説明する。
【００９３】
まず、ＤＢＭＳ１０１ＡがＤＢデータ１２０Ａに対して通常の入出力を行う場合の処理について説明する。
【００９４】
ＤＢＭＳ１０１Ａは、主記憶１２Ａに格納された更新データをＤＢボリューム１１０Ａに書き込むために、図６に示すチェックポイント取得プログラム１０２Ａを実行する。
【００９５】
ＤＢＭＳ１０１Ａは、まず、チェックポイント開始を示すログレコード４０３ＢをＤＢログ１２１Ａに記録する（ステップ５０１）。この時点でＤＢログ１２１Ａに１０００件のレコードが格納されているものとすると、図３に示すように、追加されたレコード４０３Ｂのログ通番は「１００１」となる。
【００９６】
次に、ＤＢＭＳ１０１Ａは、チェックポイント取得処理を実行する（ステップ５０２）。チェックポイント取得処理は、主記憶１２Ａに記憶された更新データをＤＢボリューム１１０Ａに書き込んでチェックポイントを設定する。このとき、ＤＢＭＳ１０１Ａは、データインターフェイス１９を経由して記憶装置システム２に書き込み（ＷＲＩＴＥ）命令を送信する。記憶装置システム２は、この書き込み命令を受信してジャーナル取得プログラム１０４を実行する。
【００９７】
ここから図７を参照しながら、ジャーナル取得プログラム１０４の処理を説明する。
【００９８】
記憶装置システム２がＤＢＭＳ１０１Ａから受信したＷＲＩＴＥ命令は、通常の入出力である（ステップ８０１の結果が「Ｙ」）。また、記憶装置システム２は、ＷＲＩＴＥ命令とともに、ボリュームＩＤ、ＬＢＡ及び更新データを受信する。ここで、ボリュームＩＤは、ＤＢボリューム１１０ＡのボリュームＩＤである「１１０Ａ」、ＬＢＡは「１００」とする。
【００９９】
記憶装置システム２は、受信したボリュームＩＤから書き込み対象の記憶装置を取得する。記憶装置システム２は、受信したボリュームＩＤと一致するボリュームＩＤのレコードをボリューム管理テーブル１０７から検索する。記憶装置システム２は、ボリュームＩＤ「１１０Ａ」を受信しているため、ボリュームＩＤが一致するレコード７０７Ａを取得する。この結果、記憶装置システム２は、取得したレコード７０７Ａの記憶装置ＩＤの値から、入出力の対象が記憶装置２６Ａであることを認識することができる。
【０１００】
さらに、記憶装置システム２は、受信したＬＢＡに開始ブロックアドレスを加算することによって、更新データを書き込むブロックアドレスを特定する。開始ブロックアドレスは、レコード７０７Ａの開始・終了ＢＡフィールド７０５に格納されている。したがって、記憶装置システム２は、レコード７０７Ａに格納された開始ブロックアドレス「０」に受信したＬＢＡ「１００」を加算してブロックアドレス「１００」に受信した更新データを書き込む（ステップ８０２）。
【０１０１】
その後、入出力命令がＷＲＩＴＥ命令であるため（ステップ８０３の結果が「Ｙ」）、記憶装置システム２は、更新ジャーナル１１３Ａに更新情報を記録する。
【０１０２】
記憶装置システム２は、まず、受信したボリュームＩＤに対応するジャーナルボリュームを取得する（ステップ８０４）。具体的には、記憶装置システム２は、受信したボリュームＩＤとベースボリュームが一致し、かつ、種別が「ジャーナル」であるレコードをボリューム管理テーブル１０７から検索する。この結果、記憶装置システム２は、これらの条件に合致するレコード７０７Ｄを取得する。
【０１０３】
記憶装置システム２は、ジャーナルボリューム１１０Ｄに格納されている更新ジャーナル１１３Ａに更新情報を記録する（ステップ８０５）。なお、図４に示す更新ジャーナル１１３Ａは既にレコードが追加された状態であるが、この時点ではレコードは格納されていないものとする。
【０１０４】
具体的には、記憶装置システム２は、更新ジャーナル１１３Ａにレコード２０４を追加する。レコード２０４は、更新ジャーナル１１３Ａの最初のレコードとなるため、更新番号には「１」が設定される。また、レコード２０４のＬＢＡフィールド及びデータフィールドは、ＤＢＭＳ１０１Ａから入出力命令とともに送信されたＬＢＡ「１００」及び更新データを格納する。
【０１０５】
ＤＢＭＳ１０１Ａ及び記憶装置システム２は、ＤＢボリューム１１０Ａへの書き込みが完了していない他の更新データについても同様に処理する。このようにして、更新ジャーナル１１３Ａには、図４に示すように更新番号１から８のレコードが追加される。
【０１０６】
ＤＢボリューム１１０Ａへの更新データの書き込みが完了すると、再びチェックポイント取得プログラム１０２Ａに処理が復帰する。
【０１０７】
その後、ＤＢＭＳ１０１Ａは、チェックポイント終了を示すログレコード４０３ＣをＤＢログ１２１Ａに記録する（ステップ５０３）。なお、チェックポイント取得プログラム１０２Ａの実行中にもＤＢＭＳ１０１Ａは並行して他の処理を行なっているため、ログデータは継続して蓄積される。そのため、チェックポイントの取得開始から取得終了までの間にログ通番１００２から１０５０までのレコードが追加され、図３に示すようにレコード４０３Ｃのログ通番は「１０５１」となっている。
【０１０８】
その後、ＤＢＭＳ１０１Ａは、障害発生時に回復処理の開始地点となる回復位置を記録する。具体的には、ＤＢＭＳ１０１Ａは、記憶装置システム２に入出力命令として回復位置通知を送信する。ＤＢＭＳ１０１Ａは、この入出力命令とともにチェックポイントの取得終了を示すレコード４０３Ｃのログ通番「１０５１」を記憶装置システム２に通知する（ステップ５０４）。このとき、ＤＢＭＳ１０１Ａは、回復位置通知フラグをＯＮに設定する。
【０１０９】
記憶装置システム２は、回復位置通知を受信すると、ジャーナル取得プログラム１０４を実行する。ここで、再び図７を参照しながら、ジャーナル取得プログラム１０４の回復位置通知処理を説明する。
【０１１０】
記憶装置システム２が受信した回復位置通知には、チェックポイント終了ログのログ通番「１０５１」の他に、回復対象となるＤＢボリューム１１０ＡのボリュームＩＤ「１１０Ａ」を含む。
【０１１１】
記憶装置システム２は、回復位置通知フラグを参照し、受信した入出力命令が通常の入出力でないと判定する（ステップ８０１の結果が「Ｎ」）。
【０１１２】
次に、記憶装置システム２は、受信したボリュームＩＤ「１１０Ａ」とベースボリュームの値が一致し、かつ、種別が「ジャーナル」であるレコードをボリューム管理テーブル１０７から検索する（ステップ８０６）。この結果、記憶装置システム２は、これらの条件に満たすレコード７０７Ｄを取得する。
【０１１３】
記憶装置システム２は、ジャーナルボリューム１１０Ｄに格納されている回復位置データ１１４Ａにレコード３０３を追加する（ステップ８０７）。回復位置データ１１４Ａは、更新ジャーナル１１３Ａの最新の更新番号３０２とＤＢログ１２１Ａのチェックポイント終了ログのログ通番４０１との対応関係を格納する。したがって、更新番号フィールド３０１には更新ジャーナル１１３Ａを参照して「８」が、ログ通番フィールド３０２には通知されたログ通番「１０５１」がレコード３０３として格納される。
【０１１４】
回復位置データ１１４Ａに対するデータの追加が完了すると、ジャーナル取得プログラム１０４の処理は完了する。その後、記憶装置システム２は、ＤＢＭＳ１０１Ａに処理を復帰させる。また、チェックポイント取得プログラム１０２Ａの処理も、回復位置データ１１４Ａへのデータの追加をもって完了する。
【０１１５】
以上のように、ＤＢＭＳ１０１Ａは、チェックポイント取得プログラム１０２Ａを実行し、更新データの書き込みと同時に、回復ポイントを記憶装置システム２の回復位置データ１１４Ａに記録する。
【０１１６】
次に、記憶装置２６Ａに障害が発生したときに、ＤＢデータ１２０Ａを回復させるための処理について説明する。
【０１１７】
ＤＢ回復制御プログラム１０２は、ＤＢサーバ１Ａの起動とともに実行され、正常に稼働している間は主記憶１２Ａに常駐する。そして、ＤＢサーバ１Ａは、ＤＢボリューム１１０Ａの破壊通知を受信するまでＤＢ回復制御プログラム１０２の処理を待機させる（ステップ６０１）。
【０１１８】
破壊通知は、ＤＢＭＳ１０１ＡがＤＢボリューム１１０Ａの障害発生を検出したときに通知される。ＤＢボリューム１１０Ａの障害発生は、ＤＢＭＳ１０１ＡがＤＢボリューム１１０Ａへのアクセスに失敗した原因などから判断される。
【０１１９】
ＤＢサーバ１Ａは、ＤＢボリューム１１０Ａの破壊通知を受信すると、ＤＢログ１２０からチェックポイント取得完了を示す最新のレコードを取得する（ステップ６０２）。図３を参照すると、レコード４０３Ｃが最新のレコードに該当する。ＤＢサーバ１Ａは、レコード４０３Ｃからログ通番「１０５１」を取得する（ステップ６０３）。
【０１２０】
その後、ＤＢサーバ１Ａは、記憶装置システム２にジャーナル適用プログラム１０５の実行を指示する（ステップ６０４）。このとき、ＤＢサーバ１Ａは、記憶装置システム２にＤＢボリューム１１０ＡのボリュームＩＤ「１１０Ａ」とログ通番「１０５１」を通知する（ステップ６０４）。
【０１２１】
記憶装置システム２は、ＤＢサーバ１Ａから通知を受けると、ジャーナル適用プログラム１０５を実行する。
【０１２２】
記憶装置システム２は、まず、受信したボリュームＩＤに対応するジャーナルボリュームを取得する（ステップ９０１）。具体的には、記憶装置システム２は、受信したボリュームＩＤとベースボリュームが一致し、かつ、種別が「ジャーナル」であるレコードをボリューム管理テーブル１０７から検索する。この結果、記憶装置システム２は、これらの条件に合致するレコード７０７Ｄを取得する。本例では、ジャーナルボリューム１１０Ｄが取得される。
【０１２３】
次に、記憶装置システム２は、ジャーナルボリューム１１０Ｄに格納された回復位置データ１１４Ａを参照する。記憶装置システム２は、ＤＢサーバ１Ａから通知されたログ通番を元に回復位置データ１１４Ａを検索し、対応する更新番号を得る（ステップ９０２）。図５によると、通知されたログ通番は「１０５１」であるため、レコード３０３が検索され、更新番号「８」を得る。
【０１２４】
次に、記憶装置システム２は、受信したボリュームＩＤに対応するスナップショットボリュームを取得する（ステップ９０３）。具体的には、記憶装置システム２は、受信したボリュームＩＤとベースボリュームが一致し、かつ、種別が「スナップショット」であるレコードをボリューム管理テーブル１０７から検索する。この結果、記憶装置システム２は、これらの条件に合致するレコード７０７Ｃを取得する。本例では、スナップショットボリューム１１０Ｃが取得される。
【０１２５】
次に、記憶装置システム２は、更新ジャーナル１１３Ａに格納された更新情報をスナップショットボリューム１１０Ｃに適用する（ステップ９０４）。記憶装置システム２は、ステップ９０２で取得した更新番号までの更新情報を更新番号順に適用する。
【０１２６】
具体的には、記憶装置システム２は、例えば、更新ジャーナル１１３Ａのレコード２０４を適用する場合、スナップショットボリューム１１０Ｃの開始ブロックアドレス「０」に論理ブロックアドレス「１００」を加算して絶対アドレス「１００」を算出することができる。そして、記憶装置システム２は、このアドレスにデータフィールド２０３の内容を上書きする。
【０１２７】
このようにして、最新のチェックポイントまでの更新情報がスナップショットボリューム１１０Ｃに反映される。このとき、記憶装置システム２は、更新を反映させた更新ジャーナル１１３Ａの更新情報を削除する。こうすることによって、更新ジャーナル１１３Ａの適用開始位置を保持する必要がなくなる。
【０１２８】
以上より、ＤＢデータ１２０Ａは、スナップショットボリューム１１０Ｃに更新番号８までの更新情報が反映された状態まで復元される。
【０１２９】
その後、記憶装置システム２は、スナップショットボリューム１１０ＣをＤＢボリュームに変更する（ステップ９０５）。具体的には、記憶装置システム２は、まず、ボリューム管理テーブル１０７に格納された破損したＤＢボリューム１１０Ａに対応するレコード７０７Ａを削除する。そして、記憶装置システム２は、スナップショットボリューム１１０Ｃに対応するレコード７０７ＣのボリュームＩＤを「１１０Ｃ」からＤＢサーバ１Ａより通知されたボリュームＩＤ「１１０Ａ」に変更する。さらに、記憶装置システム２は、種別７０３を「通常」に変更して、ベースボリューム７０６の値を消去する。
【０１３０】
ＤＢボリュームの切替が完了すると、ジャーナル適用プログラム１０５の処理が終了し、記憶装置システム２は、ＤＢサーバ１Ａに処理を復帰させる。
【０１３１】
ＤＢボリュームの切替後のＤＢデータ１２０Ａは、この時点では、最新のチェックポイントまでの更新が反映されている。したがって、チェックポイント以降の更新情報が反映されておらず、トランザクションの整合性は確保されていない。そこで、ＤＢサーバ１Ａは、切替後のＤＢデータ１２０Ａに対してＤＢログ１２１Ａを適用し、トランザクションの整合性を確保する。
【０１３２】
ＤＢサーバ１Ａは、まず、ステップ６０３で取得したチェックポイント取得完了レコード４０３Ｃに対応するチェックポイント取得開始レコードをＤＢログ１２１Ａから取得する（ステップ６０５）。本例では、ログ通番「１００１」のレコード４０３Ｂがチェックポイント取得開始レコードに該当する。
【０１３３】
次に、ＤＢサーバ１Ａは、ログ適用プログラム１０３Ａを実行し、ログ通番「１００１」以降のログレコードを切替後のＤＢデータ１２０Ａに対して適用する。そこで、障害発生までにコミットが完了しているデータについてはロールフォワードを行い、コミットが完了していないデータについてはロールバックを行なってトランザクションの整合性を確保する。
【０１３４】
以上の処理をもって、ログ適用プログラム１０３Ａの実行が完了し、データベースの回復処理が終了する。
【０１３５】
第１の実施の形態によれば、ＤＢサーバ１Ａは、更新ジャーナル１１３Ａによるデータベースの回復とＤＢログ１２１Ａによる回復とを併用する。また、トランザクションの整合性を確保しながら、ジャーナル適用プログラム１０５による回復範囲ができるだけ広範囲となるように、チェックポイントと連動させて回復ポイントを設定する。
【０１３６】
ジャーナル適用プログラム１０５による処理は、記憶装置システム２内で完結するため、ＤＢサーバ１Ａと記憶装置システム２との間の転送データ量を削減することができる。さらに、記憶装置の絶対アドレスに対して直接更新データを書き込むため、高速にデータを復元することができる。
【０１３７】
また、最新のチェックポイント以降の更新データについては、更新ジャーナル１１３Ａの適用後のデータに対してＤＢログ１２１Ａを適用することによって、トランザクションの整合性を確実に保証することができる。
【０１３８】
したがって、第１の実施の形態によれば、トランザクションの整合性を確保しながら、高速にデータベースを回復させることができる。
【０１３９】
また、第１の実施の形態によれば、チェックポイント以降のＤＢログ１２１Ａを保持すればよい。したがって、チェックポイント以前のＤＢログ１２１Ａを退避して管理対象の更新ログを減らすことができ、管理負担を軽減することができる。
【０１４０】
（第２の実施の形態）
第２の実施の形態では、データベースサーバが複数存在する計算機システムに対して本発明のデータベースの回復方法を適用した実施の形態について説明する。なお、第１の実施の形態と同様の機能を果たす構成には同一の符号を付して重複する説明を適宜省略する。
【０１４１】
図１０は、２つのＤＢサーバ１Ａ及び１Ｂを含む計算機システムの構成を示す。第２の実施の形態の計算機システムは、２つのＤＢサーバ１Ａ及び１Ｂが記憶装置システム２に対してアクセスする。ＤＢサーバ１Ａの構成は、第１の実施の形態のＤＢサーバ１Ａと同じである。ＤＢサーバ１Ｂの構成も、第１の実施の形態のＤＢサーバ１Ａと略同じである。
【０１４２】
ＤＢサーバ１Ａは、第１の実施の形態と同様にデータインターフェイス１９Ａを経由して第１のネットワーク３Ａに接続する。同様に、ＤＢサーバ１Ｂは、データインターフェイス１９Ｂを経由して第３のネットワーク３Ｂに接続する。さらに、ＤＢサーバ１Ａは、ネットワークインタフェース１３Ａを経由して第２のネットワーク４に接続する。また、ＤＢサーバ１Ｂは、ネットワークインタフェース１３Ｂを経由して第２のネットワーク４に接続する。
【０１４３】
記憶装置システム２の構成は、第１の実施の形態の記憶装置システム２と略同様である。記憶装置システム２は、ポート２１Ａ及び２１Ｂを備える。記憶装置システム２は、ポート２１Ａを経由して第１のネットワーク３ＡからＤＢサーバ１Ａと接続する。同様に、記憶装置システム２は、ポート２１Ｂを経由して第３のネットワーク３ＢからＤＢサーバ１Ｂと接続する。
【０１４４】
記憶装置２６Ａ〜２６Ｄは、ＤＢサーバ１Ａによってアクセスされるボリューム１１０Ａ〜１１０Ｄに加えて、ＤＢサーバ１Ｂによってアクセスされるボリューム１１０Ｅ〜１１０Ｈを備える。ボリューム１１０Ｅ〜１１０Ｈは、それぞれ同一の記憶装置に格納されているボリューム１１０Ａ〜１１０Ｄとそれぞれ同じ用途である。例えば、ＤＢボリューム１１０Ｅは、ＤＢボリューム１１０Ａを備える記憶装置２６Ａに配置される。さらに、他のボリューム１１０Ｆ〜１１０Ｈについても同じである。
【０１４５】
また、ＤＢボリューム１１０Ｅは、ＤＢＭＳ１０１ＢによってアクセスされるＤＢデータ１２０Ｂを格納する。同様に、ＤＢログボリューム１１０Ｆは、ＤＢログ１２１Ｂを格納する。さらに、ジャーナルボリューム１１０Ｈは、ＤＢボリューム１１０Ｅの更新ジャーナル１１３Ｂ及び回復位置データ１１４Ｂを格納する。
【０１４６】
ボリューム管理テーブル１０７は、第１の実施の形態と同様に各ボリュームの情報を格納して管理する。ボリューム１１０Ｅ〜１１０Ｈは、具体的には、図１１に示すようにレコード７０７Ｅ〜７０７Ｈのように表わされる。また、レコード７０７Ａ〜７０７Ｄは、第１の実施の形態と同じボリューム１１０Ａ〜１１０Ｄを表わしている。
【０１４７】
図１２は、ＤＢボリューム１１０ＥのＤＢログ１２１Ｂの例を示す。また、図１３は、ＤＢボリューム１１０Ｅの更新ジャーナル１１３Ｂの例である。さらに、図１４は、ＤＢボリューム１１０Ｅの回復位置データ１１４Ｂの例である。これらのテーブルの構成は、すべて第１の実施の形態と同様である。これらのテーブルには、ＤＢＭＳ１０１Ｂによるアクセスに基づくデータが記録されている。
【０１４８】
以下、記憶装置２６Ａに障害が発生したときに、ＤＢデータ１２０Ａ及び１２０Ｂを回復する方法について説明する。
【０１４９】
第２の実施の形態の計算機システムは、図１０に示す構成を備える。ボリューム管理テーブル１０７は、図１１に示すデータを格納する。その他のデータの構成及び内容は、ＤＢサーバ１Ａについては図３〜５に示したデータ、ＤＢサーバ１Ｂについては図１２〜１４に示したデータと同じである。また、各ＤＢサーバに格納されているプログラムについても、第１の実施の形態と同じである。
【０１５０】
ＤＢＭＳ１０１Ａは、記憶装置２６Ａの破壊を検知すると、ＤＢ回復制御プログラム１０６Ａを実行してデータベースを回復させる。同様に、ＤＢＭＳ１０１Ｂは、ＤＢ回復制御プログラム１０６Ｂを実行する。
【０１５１】
ＤＢ回復制御プログラム１０６Ａ及び１０６Ｂは、それぞれ独立して図８に示した処理を実行する。したがって、ＤＢ回復制御プログラム１０６Ａ及び１０６Ｂは、それぞれ記憶装置システム２に通知してジャーナル適用プログラム１０５を実行させる。そこで、記憶装置システム２は、それぞれ独立に図９に示した処理を実行する。処理の具体的な内容の説明については、第１の実施の形態と同様であるため省略する。
【０１５２】
その後、ＤＢボリューム１１０Ａがスナップショットボリューム１１０Ｃに切り替えられ、ＤＢボリューム１１０Ｅがスナップショットボリューム１１０Ｇに切り替えられる。さらに、ログ適用プログラム１０３Ａ及び１０３Ｂが適用されるため、ボリューム切替後の各ＤＢデータ１２０Ａ及び１２０Ｂは、トランザクションの整合性が確保された状態で回復される。
【０１５３】
以上示したように、データベースサーバを複数備える計算機システムであっても、本発明によるデータベース回復方法を適用することができる。
【０１５４】
したがって、複数のデータベースサーバが連携して稼働する大規模な計算機システムについても、記憶装置に障害が発生したときに、データベースをトランザクションの整合性を確保した状態まで短時間で回復させることができる。
【図面の簡単な説明】
【０１５５】
【図１】第１の実施の形態のＤＢサーバと記憶装置システムとを含んだ計算機システムを示す図である。
【図２】第１の実施の形態のボリューム管理テーブルを示す図である。
【図３】第１の実施の形態のＤＢログを示す図である。
【図４】第１の実施の形態のボリューム更新ジャーナルを示す図である。
【図５】第１の実施の形態の回復位置データを示す図である。
【図６】第１の実施の形態のチェックポイント取得プログラムで実施される処理のフローチャートである。
【図７】第１の実施の形態のジャーナル取得プログラムで実施される処理のフローチャートである。
【図８】第１の実施の形態のＤＢ回復制御プログラムで実施される処理のフローチャートである。
【図９】第１の実施の形態のジャーナル適用プログラムで実施される処理のフローチャートである。
【図１０】第２の実施の形態の複数のＤＢサーバと記憶装置システムとを含んだ計算機システムを示す図である。
【図１１】第２の実施の形態のボリューム管理テーブルを示す図である。
【図１２】第２の実施の形態における第２データベースのＤＢログを示す図である。
【図１３】第２の実施の形態における第２データベースボリュームのボリューム更新ジャーナルを示す図である。
【図１４】第２の実施の形態における第２データベースボリュームの回復位置データを示す図である。
【符号の説明】
【０１５６】
１Ａ、１Ｂ  ＤＢサーバ
１１Ａ、１１Ｂ  ＣＰＵ
１２Ａ、１２Ｂ  主記憶
１３Ａ、１３Ｂ  ネットワークインタフェース
１４Ａ、１４Ｂ  ディスプレイ
１５Ａ、１５Ｂ  キーボード
１６Ａ、１６Ｂ  ＣＤ−ＲＯＭ
１７Ａ、１７Ｂ  コントローラ
１８Ａ、１８Ｂ  記憶装置
１９Ａ、１９Ｂ  データインタフェース
２  記憶装置システム
２１Ａ、２１Ｂ  ポート
２２  ディスクコントローラ
２３  制御メモリ
２４  プロセッサ
２５  キャッシュメモリ
２６Ａ〜２６Ｄ  記憶装置
２７  ネットワークインタフェース
３Ａ  第１のネットワーク
３Ｂ  第３のネットワーク
４  第２のネットワーク
１０１Ａ、１０１Ｂ  データベース管理システム
１０２Ａ、１０２Ｂ  チェックポイント取得プログラム
１０３Ａ、１０３Ｂ  ログ適用プログラム
１０４  ジャーナル取得プログラム
１０５  ジャーナル適用プログラム
１０６Ａ、１０６Ａ  ＤＢ回復制御プログラム
１０７  ボリューム管理テーブル
１１０Ａ、１１０Ｅ  ＤＢボリューム
１１０Ｂ、１１０Ｆ  ＤＢログボリューム
１１０Ｃ、１１０Ｇ  スナップショットボリューム
１１０Ｄ、１１０Ｈ  ジャーナルボリューム
１１３Ａ、１１３Ｂ  更新ジャーナル
１１４Ａ、１１４Ｂ  回復位置データ
１２０Ａ、１２０Ｂ  ＤＢデータ
１２１Ａ、１２１Ｂ  ＤＢログ
【図１】
0004839091.tif 000002
【図２】
0004839091.tif 000003
【図３】
0004839091.tif 000004
【図４】
0004839091.tif 000005
【図５】
0004839091.tif 000006
【図６】
0004839091.tif 000007
【図７】
0004839091.tif 000008
【図８】
0004839091.tif 000009
【図９】
0004839091.tif 000010
【図１０】
0004839091.tif 000011
【図１１】
0004839091.tif 000012
【図１２】
0004839091.tif 000013
【図１３】
0004839091.tif 000014
【図１４】
0004839091.tif 000015