以下に図面を参照しながら本発明の実施の形態を説明する。なお、以下の説明により本発明が限定されるものではない。
(第1の実施の形態)
図1は、第1の実施の形態のデータベース管理システム(以下、DBMS)が動作する情報処理システムのハードウェア構成図である。図1の情報処理システムは、ホスト1、記憶装置システム2、管理端末3、ユーザ端末4、ネットワーク5、及びネットワーク6を備える。
ホスト1は、パーソナルコンピュータ、ワークステーション、メインフレームなどの計算機である。ホスト1は、計算機の種類に応じたオペレーティングシステム(以下、「OS」)と、ユーザ端末4に業務を提供するDBMS10が動作する。ホスト1は、プロセッサ40、メモリ41、ローカル記憶装置42、ホストバスアダプタ43、及びネットワークアダプタ44を備える。
プロセッサ40は、所定のプログラムを実行する。メモリ41は、プロセッサ40によって実行されるOS、DBMS10、及びDBMS10が使用するデータを一時的に格納する。ローカル記憶装置42は、OS、DBMS10及びDBMS10が使用するデータを格納する。ホストバスアダプタ43は、ネットワーク5とホスト1とを接続する。ネットワークアダプタ44は、ネットワーク6とホスト1とを接続する。
記憶装置システム2は、ディスク装置などの記憶装置、又は、ディスクアレイなどの複数の記憶装置を有するシステムである。また、記憶装置システム2は、ホスト1が使用するデータ及びプログラムを格納する。そして、ホスト1からのI/O処理要求を受信し、I/O処理要求に対応した処理を実行し、処理結果をホスト1に送信する。
記憶装置システム2は、物理記憶装置56、制御装置20、及び接続インタフェース55を備える。接続インタフェース55は、物理記憶装置56と制御装置20を相互に接続する。
制御装置20は、ホスト1からのI/O要求の処理、及び物理記憶装置56の制御を実行する。制御装置20は、物理記憶装置アダプタ54、プロセッサ50、不揮発性メモリ53、キャッシュメモリ21、ネットワークアダプタ51、及びネットワークアダプタ52を備える。
プロセッサ50は、所定のプログラムを実行する。不揮発性メモリ53は、プロセッサによって実行されるプログラム、プログラムの実行に必要な情報、記憶装置システム2の設定情報及び構成情報などを格納する。キャッシュメモリ21は、ホスト1から入力されるデータ、又は、記憶装置システム2からホスト1に転送されるデータを一時的に格納する。
物理記憶装置アダプタ54は、接続インタフェース55を介して物理記憶装置56と接続する。ネットワークアダプタ51は、記憶装置システム2とネットワーク5とを接続する。ネットワークアダプタ52は、記憶装置システム2とネットワーク6とを接続する。
物理記憶装置56は、ホスト1によって使用されるデータを格納する。物理記憶装置56は、不揮発性の記憶媒体であって、例えば、磁気ディスクによって構成されるハードディスクなどである。
記憶装置システム2は、複数の物理記憶装置56によって冗長性を有するRAID構成となっている。記憶装置システム2は、複数の物理記憶装置56によって構成される記憶領域を、論理的な記憶領域に分割し論理記憶装置としてホスト1に提供する。
管理端末3は、記憶装置システム2の保守管理、及びホスト1で動作するDBMS10を管理するために使用される。情報処理システムの管理者は、記憶装置システム2の保守管理、及びDBMS10を管理する場合に、管理端末3に設定内容を入力する。管理端末3は、ネットワーク6を介して記憶装置システム2、及び、ホスト1のDBMS10に管理者が入力した内容を送信する。
ユーザ端末4は、ホスト1のDBMS10に対し、業務に応じたトランザクション処理を要求する。
ネットワーク5は、ホスト1と記憶装置システム2とを接続し、ホスト1から記憶装置システム2にI/Oの処理要求などを伝送するために使用される。ネットワーク5には、光ファイバ及び銅線などが用いられる。また、ネットワーク5では、ファイバチャネル、SCSI、TCP/IPなどの通信プロトコルが使用される。
ネットワーク6は、ホスト1、記憶装置システム2、管理端末3及びユーザ端末4を接続する。ネットワーク6は、記憶装置システム2と、管理端末3とホスト1との間で、記憶装置システム2の保守、構成、及び性能などの管理情報を通信する。また、ネットワーク6は、ユーザ端末4とホスト1との間で、I/O処理要求などを伝送するために使用される。ネットワーク6に使用されるケーブル及び通信プロトコルは、ネットワーク5と同一であっても異なっていてもよい。
図2は、第1の実施の形態の情報処理システムのソフトウェア構成図である。
ホスト1は、DBMS10を含む。DBMS10は、ユーザ端末4に要求され、業務に応じたトランザクション処理を実行する。また、DBMS10は、OSを介して記憶装置システム2に格納されたデータベース(以下、DB)にアクセスする。DBMS10は、ローカル記憶装置42又はメモリ41に格納され、プロセッサ40によって実行される。
DBMS10は、DBファイル30、制御ファイル31、ログファイル32、及び一時ファイル33などを管理する。DBファイル30、制御ファイル31、ログファイル32、及び一時ファイル33は、記憶装置システム2に格納される。
DBファイル30は、DBのデータに該当する表及び索引を格納する。制御ファイル31は、データベースの現在の状態を記録するファイルであって、DBのリカバリに必要な情報を含む。ログファイル32は、DBファイル30の更新履歴であるログを格納する。一時ファイル33は、データをソートする場合などに一時的に使用される。
DBMS10は、トランザクション管理部11、DBバッファ13、ログバッファ15、DB書き込み部12、及びログ書き込み部14を含む。
トランザクション管理部11は、ユーザ端末4から要求されたトランザクション処理に応じて記憶装置システム2のDBファイル30にアクセスする。
DBバッファ13は、ホスト1のメモリ41上に確保されるDBMS10専用の領域であって、記憶装置システム2のDBファイル30のデータを一時的に保持する。ログバッファ15は、同じくメモリ41上に確保される領域であって、生成したログを一時的に保持する。
DB書き込み部12は、DBバッファに保持された変更データを記憶装置システム2のDBファイル30に書き込む。ログ書き込み部14は、ログバッファに保持されたログを記憶装置システム2のログファイル32に書き込む。
さらに、DBMS10は、ログ解析部16及びログ適用部17を有する。ログ解析部16は、回復時点を含むDBのリカバリ指示を受信したとき、記憶装置システム2に指示する回復時点直前のリストア時点を、ログファイル32を解析し、取得する。ログ適用部17は、記憶装置システム2によってリストアされたDBファイル30に、ログファイル32に記録されたログを適用する。
記憶装置システム2は、記憶装置24、ジャーナル取得記憶装置25、ジャーナル記憶装置26、及び制御装置20を含む。記憶装置24、ジャーナル取得記憶装置25、及びジャーナル記憶装置26は、物理記憶装置56で構成された論理記憶装置である。
ジャーナル取得記憶装置25は、DBファイル30及び制御ファイル31を格納する。ジャーナル取得記憶装置25に格納されたデータは、更新されると、ジャーナル記憶装置26に更新履歴であるジャーナルが記録される。
記憶装置24は、ログファイル32及び一時ファイル33を格納する。記憶装置24は、格納されたデータのジャーナルが取得されないため、データの損失を防ぐために記憶装置24に格納されたデータをリアルタイムに別の記憶装置に複製するミラーリングの設定を行ってもよい。また、ログファイル32及び一時ファイル33は、異なる論理記憶装置に格納されてもよい。
ジャーナル記憶装置26は、ジャーナルデータ35及びスナップショットデータ34を格納する。ジャーナルデータ35は、ジャーナル取得記憶装置25に格納されたデータの更新履歴を格納する。スナップショットデータ34とは、ジャーナル取得記憶装置25に格納されたデータの、ある時点の複製である。なお、スナップショットデータ34は、ジャーナル記憶装置26でなく、他の記憶装置に格納していてもよい。
このようにDBMS10で管理するファイルを配置することによって、DBファイル30及び制御ファイル31のジャーナルのみが取得され、ログファイル32及び一時ファイル33のジャーナルは取得されないため、ジャーナル記憶装置26に必要な容量を削減することができる。
また、前述のDBMS10が管理するデータは、OSのファイルシステムを介して記憶装置システム2に格納してもよいし、ファイルシステムを介さずOSのrawデバイスを用いて記憶装置システム2に格納してもよい。
制御装置20は、コマンド処理部22及びジャーナル制御部23を構成するプログラムを不揮発性メモリ53に備える。
制御装置20は、ホスト1からのI/O処理要求をネットワークアダプタ51経由で受信すると、コマンド処理部22を構成するプログラムを実行する。
制御装置20は、受信したI/O処理要求がデータの書き込み要求の場合には、ホスト1から転送された書き込み用のデータ(以下、「書き込みデータ」)をキャッシュメモリ21又は物理記憶装置56に書き込む。また、制御装置20は、キャッシュメモリに格納された書き込みデータを物理記憶装置56に書き込む。
制御装置20は、受信したI/O処理要求がデータの読み出し要求の場合には、読み出し要求に対応するデータ(以下、読み出しデータ)を、キャッシュメモリ21又は物理記憶装置56から読み出してホスト1に転送する。また、制御装置20は、読み出しデータをキャッシュメモリ21に格納する。
なお、制御装置20は、I/O処理を実行するとき、I/O処理要求によって指定されたデータが格納された論理記憶装置のアドレスと対応する物理記憶装置56のアドレスを特定し、特定された物理記憶装置56にアクセスする。
制御装置20は、ジャーナルを作成又は更新するとき、ジャーナル制御部23を実行する。ジャーナル制御部23は、処理を実行するプログラムによって構成される。また、ジャーナル制御部23は、ホスト1から送信されたチェックポイントコマンドを受信したとき、作成したジャーナルを用いてリストアするとき、及びジャーナル取得の対象となる論理記憶装置を設定するときなどにも実行される。
制御装置20は、ホスト1からジャーナル取得開始指示を受信すると、ジャーナル取得開始指示に従って、ジャーナル取得の対象となる論理記憶装置(ジャーナル取得記憶装置25)を設定する。続いて、制御装置20は、スナップショットデータ34及びジャーナルデータ35を格納するための論理記憶装置(ジャーナル記憶装置26)を設定する。そして、制御装置20は、ジャーナル取得記憶装置25のスナップショットデータ34をジャーナル記憶装置26に格納する。
制御装置20は、ホスト1からジャーナル取得記憶装置25に対する書き込み処理要求を受信すると、まず、書き込みデータをキャッシュメモリ21に格納する。そして、書き込みデータの更新履歴であるジャーナルを作成し、キャッシュメモリ21に確保されたジャーナル格納用の所定の領域に格納する。
ジャーナルは、書き込みデータ、及びジャーナル取得記憶装置25における書き込みデータの格納位置を示すアドレスなどによって構成される。キャッシュメモリ21に格納されたジャーナルは、キャッシュメモリ21への格納と非同期にジャーナル記憶装置26に記録される。なお、制御装置20は、同じアドレスが指定される複数の書き込みデータのジャーナルをキャッシュメモリ21の異なる領域にそれぞれ格納する。
また、制御装置20は、ホスト1から、ホスト1によって管理される所定の識別情報を含むチェックポイントコマンドを受信すると、所定の識別情報に対応させたジャーナルを生成し、キャッシュメモリ21を介してジャーナル記憶装置26に格納する。チェックポイントコマンドとは、ホスト1により管理される所定の識別情報によってジャーナル取得記憶装置25の復元時点を特定するために、ホスト1が記憶装置システム2に送信するコマンドである。
さらに、制御装置20は、ホスト1から前述の所定の識別情報を含むリストア指示を受信すると、まず、ジャーナル記憶装置26に格納されたスナップショットデータ34をジャーナル取得記憶装置25にコピーする。続いて、制御装置20は、リストア指示に含まれる所定の識別情報に対応するジャーナルよりも前に記録されたジャーナルを順次読み出す。そして、制御装置20は、読み出したジャーナルをジャーナル取得記憶装置25の書き込み元のアドレスに書き込むことによって、所定の識別情報を記録した時点のジャーナル取得記憶装置25に格納されていたデータの状態をリストアする。
ここで、トランザクション処理要求を受信したDBMS10が、記憶装置システム2にデータを読み書きする手順を説明する。
DBMS10は、ユーザ端末4からトランザクション処理要求を受信すると、トランザクション管理部11を実行する。トランザクション管理部11は、トランザクション処理による参照又は更新の対象となるデータを、記憶装置システム2に格納されたDBファイル30からDBバッファ13に読み込む。
トランザクション管理部11は、トランザクション要求が更新であるとき、読み込んだDBバッファ13のデータを更新する。そして、更新履歴であるログを生成し、ログバッファ15に格納する。ログは、ログを生成したトランザクションを一意に識別する識別情報(以下、「トランザクション識別情報」)、当該ログを一意に識別するログ順次番号、更新するデータと更新されるデータなどによって構成される。
トランザクション管理部11は、トランザクション処理が完了(コミット)すると、コミットと同期してログ書き込み部14を実行する。そして、ログバッファ13に格納されたログをログファイル32に追記する。
なお、DBMS10は、処理性能を向上させるため、DBバッファ13に格納されたデータの更新及びトランザクションのコミットとは非同期にDB書き込み部12を実行し、DBバッファ13の更新されたデータをDBファイル30に書き込む。
DB書き込み部12は、DBバッファ13に一定量以上のデータが更新されたとき、又は後述するチェックポイントなどで実行される。また、トランザクション管理部11は、トランザクション要求にソート操作などの処理が含まれるときには、一時ファイル33に対して書き込み処理及び読み出し処理を実行する。
制御装置20は、DBMS10からI/O処理要求を受信すると、受信したI/O処理要求が読み出し要求の場合には、読み出しデータを物理記憶装置56又はキャッシュメモリ21から取得してDBMS10に転送する。
また、制御装置20は、受信したI/O処理要求が記憶装置24に対する書き込み要求の場合には、書き込みデータをキャッシュメモリ21に格納する。受信したI/O処理要求がジャーナル取得記憶装置25に対する書き込み要求の場合には、書き込みデータをキャッシュメモリ21に格納するとともに、書き込みデータのジャーナルを作成し、キャッシュメモリ21に格納する。なお、キャッシュメモリ21に格納された書き込みデータ及びジャーナルは、キャッシュメモリ21への格納とは非同期に物理記憶装置56に書き込まれる。
また、DBMS10は、一定時間間隔又はトランザクション数ごとにDB書き込み部12及びログ書き込み部14を実行し、DBバッファ13に格納された更新データ及びログバッファ15に格納されたログを記憶装置システム2に書き込む。このように、バッファに格納されたデータを記憶装置システム2に書き込む処理、及びその処理を実行するタイミングをチェックポイントという。
DBMS10に格納されたDBバッファ13と、記憶装置システム2に格納されたDBファイル30とは、チェックポイントで実行される書き込み処理によって内容が一致するため、チェックポイントは、DBのリカバリの基点となる。
DBMS10は、チェックポイントで実行される書き込み処理が完了すると、トランザクション管理部11を実行し、チェックポイントの識別情報を含むログを作成してログファイル32に記録する。
また、トランザクション管理部11は、DBのリカバリに利用するために、チェックポイントの識別情報を制御ファイル31又はDBファイル30のヘッダ部に書き込む。
続いて、トランザクション管理部11は、チェックポイントの識別情報をチェックポイントコマンドに含まれる所定の識別情報として、当該チェックポイントコマンドを記憶装置システム2に送信し、チェックポイントの処理を完了する。
なお、チェックポイントの識別情報は、チェックポイントを一意に識別する情報、及び、ログファイル32における、チェックポイントの識別情報を含むログの記録位置などが含まれる。また、チェックポイントの識別情報を含むログは、チェックポイントの識別情報の他に、チェックポイント時に動作中のトランザクションの数、及び当該トランザクションの状態など、DBのリカバリを開始するために必要な情報が含まれる。
制御装置20は、DBMS10からチェックポイントコマンドを受信すると、チェックポイントの識別情報に対応させたジャーナルを生成し、キャッシュメモリ21を介してジャーナル記憶装置26に格納する。
図3は、第1の実施の形態のDBのリカバリ処理手順を示すフローチャートである。DBのリカバリ処理は、管理者からリカバリ指示を受信したDBMS10における処理、及びDBMS10からのリストア指示を受信した記憶装置システム2における処理によって構成される。なお、第1の実施の形態では、管理者のオペレーションミスなどによって、DBファイル30に論理的不整合などの障害が発生した場合のリカバリ処理について説明する。
DBMS10は、障害発生直前の回復時点を表すトランザクション識別情報又はログ順次番号などを含むDBのリカバリ指示を管理者から受信する(S100)。
DBMS10は、リカバリ指示を受信すると、ログ解析部16を実行する。ログ解析部16は、ログファイル32を参照し、受信したトランザクション識別情報又はログ順次番号に対応するログを検索する。
ログ解析部16は、さらにログファイル32を解析し、検索されたログよりも前に記録され、かつ、最も新しいチェックポイントの識別情報を含むログを取得する。そして、取得されたログに含まれるチェックポイントの識別情報を、回復時点直前のチェックポイントの識別情報として取得する(S101)。
DBMS10は、取得した回復時点直前のチェックポイントの識別情報を所定の識別情報としてリストア指示に含め、当該リストア指示を記憶装置システム2に送信する(S102)。リストア指示には、チェックポイントの識別情報の他に、DBファイル30と制御ファイル31が格納されたジャーナル取得記憶装置25の識別情報(例えば論理記憶装置番号など)などが含まれる。
制御装置20は、DBMS10が送信したリストア指示を受信すると(S111)、受信したリストア指示に含まれるジャーナル取得記憶装置25の識別情報を参照する。そして、ジャーナル取得記憶装置25においてジャーナル取得設定が実行されていること、及び、ジャーナル取得記憶装置25のジャーナルがジャーナル記憶装置26に格納されていることを確認する。
続いて、制御装置20は、リストア処理を実行する(S112)。具体的には、制御装置20は、まず、ジャーナル記憶装置26に格納されていたスナップショットデータ34をジャーナル取得記憶装置25にコピーする。次に、制御装置20は、リストア指示に含まれるチェックポイントの識別情報に対応するジャーナルを取得する。そして、当該ジャーナルよりも前に記録されたジャーナルを、ジャーナル取得記憶装置25にコピーされたスナップショットデータ34に適用し、チェックポイント時点のデータを復元する。
制御装置20は、リストア処理が完了すると、その旨をDBMS10に報告する(S113)。
DBMS10は、記憶装置システム2からリストア処理の完了報告を受信すると(S103)、ログ適用部17を実行する。ログ適用部17は、リストアされた制御ファイル31に記録されたチェックポイントの識別情報を取得する。そして、取得したチェックポイントの識別情報に対応するログから、リカバリ指示に含まれる回復時点に対応するログまでを、リストアされたジャーナル取得記憶装置25に格納されたDBファイル30に適用し(S104)、処理を終了する。なお、ログの適用は、DBファイル30のヘッダ部に記録されたチェックポイントの識別情報を利用してもよい。
第1の実施の形態によれば、ログを順次追記されるログファイル32及びDBのリカバリには不必要な一時ファイル33のジャーナルが作成されないため、ジャーナル記憶装置26の容量を削減することができる。
また、第1の実施の形態によれば、図3に示した一連のDBリカバリ処理によって、トランザクション識別情報及びログ順次番号などで特定される任意の回復時点において、トランザクションの一貫性が確保された状態に、DBを高速に回復させることができる。
(第2の実施の形態)
図4は、第2の実施の形態の情報処理システムのソフトウェア構成図である。第2の実施の形態の情報処理システムのハードウェア構成は、第1の実施の形態と同じである。
ホスト1は、第1の実施の形態と同じ構成である。一方、記憶装置システム2には、第1の実施の形態の構成に加え、制御装置20に、ジャーナル上書き判定部200、ジャーナル永続化部201、及びジャーナル設定部202を構成するプログラム及び管理情報を不揮発性メモリ53に備える。その他の構成については、第1の実施の形態と同じである。
ジャーナル上書き判定部200は、処理を実行するプログラム及びジャーナル格納情報210によって構成される。ジャーナル上書き判定部200は、ジャーナル取得記憶装置25に対する書き込みデータを受信したときに実行される。そして、書き込みデータと同じアドレスが指定される書き込みデータに関するジャーナルがキャッシュメモリ21に既に存在し、かつ、キャッシュメモリ21に存在するジャーナルが上書き可能状態であるか否かを判定する。
また、ジャーナル格納情報210は、書き込みデータの格納先アドレス、書き込みデータに対応するジャーナルの格納先アドレス、及び、ジャーナルの状態などを格納する。なお、詳細は、図8にて後述する。
ジャーナル永続化部201は、ホスト1によって送信されたチェックポイントコマンドを制御装置20が受信したときに実行される。ジャーナル永続化部201は、キャッシュメモリ21に格納された上書き可能状態のジャーナルを上書き不可状態に変更する。
ジャーナル設定部202は、ジャーナル上書き判定部200及びジャーナル永続化部201を有効又は無効に設定する。ジャーナル設定部202は、ネットワークアダプタ52を介して、ホスト1又は管理端末3にジャーナル上書き判定部200及びジャーナル永続化部201を有効又は無効に設定するためのインタフェースを提供する。
以下、第2の実施の形態において、ホスト1のDBMS10及び記憶装置システム2の制御装置20によって実行される処理の概要を説明する。
制御装置20は、ジャーナル取得記憶装置25に書き込み処理要求を受信すると、ジャーナル上書き判定部200を実行する。ジャーナル上書き判定部200は、受信した書き込みデータが格納されるアドレスと同じアドレスが指定された書き込みデータに関するジャーナルがキャッシュメモリ21に存在し、当該ジャーナルが上書き可能状態であるか否かを判定する。
続いて、制御装置20は、ジャーナル制御部23を実行し、ジャーナル上書き判定部200の判定結果に基づいて、生成したジャーナルを上書き可能状態として、キャッシュメモリ21に存在するジャーナルに上書き、又は、キャッシュメモリ21の新たな領域に格納する。
また、制御装置20は、ホスト1からチェックポイントコマンドを受信すると、ジャーナル永続化部201を実行し、キャッシュメモリ21の上書き可能状態のジャーナルを上書き不可状態に変更する。
続いて、制御装置20は、ジャーナル制御部23を実行し、チェックポイントコマンドに含まれる所定の識別情報と対応させたジャーナルを生成し、キャッシュメモリ21に格納する。
制御装置20は、キャッシュメモリ21に格納されているジャーナルを、ジャーナル記憶装置26に所定のタイミングに格納する。
なお、DBMS10は、DBバッファ13の容量が超過したときにも記憶装置システム2にデータの書き込みを要求する。このとき、生成されたジャーナルをキャッシュメモリ21又はジャーナル記憶装置26に格納しなくても、チェックポイントで作成されたジャーナルを保持していれば、ログによりDBのリカバリは可能である。そこで、第2の実施の形態では、チェックポイント以外で作成されたジャーナルをキャッシュメモリ21上で上書きすることによって、ジャーナル記憶装置26の容量を削減することができる。
DBMS10は、リストアされたDBファイル30に、同じくリストアされた制御ファイル31に記録されたチェックポイントの識別情報を含むログから回復時点に対応するログまでを適用し、回復時点におけるトランザクションの一貫性が確保されたDBの状態を回復する。なお、DBのリカバリ処理は、第1の実施の形態と同じ処理である。
以下、第2の実施の形態において、ホスト1のDBMS10及び記憶装置システム2の制御装置20によって実行される処理の詳細を説明する。
図5は、第2の実施の形態のDBMS10からの書き込み処理要求を受信したときに、制御装置20によって実行される処理の手順を示すフローチャートである。
制御装置20は、DBMS10から書き込み処理要求を受信すると(S210)、書き込み処理要求の対象がジャーナル取得記憶装置25であるか否かを判定する(S211)。制御装置20は、書き込み処理要求の対象がジャーナル取得記憶装置25でなければ(S211の結果が「N」)、書き込み処理要求に含まれる書き込みデータをキャッシュメモリ21に格納する(S217)。制御装置20は、書き込み処理が終了すると、DBMS10に通知する。
一方、制御装置20は、書き込み処理要求の対象がジャーナル取得記憶装置25であった場合には(S211の結果が「Y」)、送信された書き込みデータをキャッシュメモリ21に格納する(S212)。
次に、制御装置20は、ジャーナル格納情報210を参照し、受信した書き込みデータが格納されるアドレスと同じアドレスが指定された書き込みデータに関するジャーナルがキャッシュメモリ21に存在しているか否かを判定する(S213)。
制御装置20は、キャッシュメモリ21に該当するジャーナルが存在しない場合には(S213の結果が「N」)、要求された書き込みデータに関するジャーナルを上書き可能状態として作成し、キャッシュメモリ21の新たな領域に格納する(S216)。制御装置20は、格納したジャーナルに関する情報をジャーナル格納情報210に登録し、処理を終了する。
制御装置20は、該当するジャーナルが既にキャッシュメモリ21に存在する場合には(S213の結果が「Y」)、ジャーナル格納情報210の該当するレコードを参照し、上書き可能状態であるか否かを判定する(S214)。制御装置20は、上書き可能状態でなければ(S214の結果が「N」)、S216の処理を実行する。
制御装置20は、ジャーナルが上書き可能状態であった場合には(S214の結果が「Y」)、ジャーナル格納情報210を参照し、キャッシュメモリ21に格納された該当するジャーナルに、要求された書き込みデータに関するジャーナルを上書き可能状態として上書きし、処理を終了する(S215)。
図6は、第2の実施の形態の記憶装置システム2がホスト1からチェックポイントコマンドを受信したときに実行される処理の手順を示すフローチャートである。チェックポイントコマンドは、ホスト1のDBMS10からチェックポイントの処理完了時に発行され、処理したチェックポイントの識別情報を所定の識別情報として含む。
制御装置20は、まず、ホスト1のDBMS10からチェックポイントコマンドを受信する(S220)。
そして、制御装置20は、ジャーナル格納情報210を参照及び更新し、キャッシュメモリ21に格納されている上書き可能状態のジャーナルを上書き不可状態に変更する(S221)。
次に、制御装置20は、受信したチェックポイントコマンドに含まれるチェックポイントの識別情報と対応させたジャーナルを上書き不可状態として作成し、キャッシュメモリ21に格納する(S222)。さらに、制御装置20は、作成したジャーナルに関する情報をジャーナル格納情報210に登録し、処理を終了する。なお、制御装置20は、図7にて後述するように、キャッシュメモリ上のジャーナルをジャーナル記憶装置26に非同期に書き込む。
このようにして、制御装置20は、チェックポイントコマンドを受信したときにジャーナルを上書き不可状態とすることによって、ジャーナル記憶装置26にチェックポイントコマンドを受信時のジャーナルを確実に書き込ませることができる。一方、DBバッファ13の容量が超過して記憶装置システム2に更新が要求された場合などには、ジャーナルを上書き可能状態として格納し、同じアドレスが指定された更新要求のジャーナルを上書きしていくことによって、ジャーナル記憶装置26の容量を節約することができる。
図7は、第2の実施の形態のキャッシュメモリ21にのみ格納されたデータ(以下、「ダーティデータ」)を物理記憶装置56に書き込む手順を示すフローチャートである。ダーティデータの書き込みは、一定時間間隔、又はキャッシュメモリ21のデータが一定量以上更新された場合など、所定のタイミングで実行される。
制御装置20は、キャッシュメモリ21から物理記憶装置56に書き込むダーティデータを、予め設定された条件に基づいて決定する(S230)。例えば、一定期間アクセスされていない、一定量のダーティデータを選択する。
次に、制御装置20は、書き込み対象のダーティデータがジャーナル記憶装置26に格納されるジャーナルであるか否かを判定する(S231)。制御装置20は、書き込み対象のダーティデータがジャーナル記憶装置26に格納されるジャーナルでなければ(S231の結果が「N」)、ダーティデータを格納先の物理記憶装置56に書き込み、処理を終了する(S234)。
一方、制御装置20は、書き込み対象のダーティデータがジャーナルの場合には(S231の結果が「Y」)、ジャーナル格納情報210を参照し、当該ジャーナルが上書き可能状態であるか否かを判定する(S232)。制御装置20は、当該ジャーナルが上書き不可状態の場合には(S232の結果が「N」)、S234の処理を行い、ジャーナル記憶装置26を構成する物理記憶装置56に当該ジャーナルを格納する。
また、制御装置20は、当該ジャーナルが上書き可能状態であれば(S232の結果が「Y」)、ジャーナル格納情報210を参照及び更新し、上書き可能状態のジャーナルを上書き不可状態に変更する。そして、ジャーナル記憶装置26を構成する物理記憶装置56に当該ジャーナルを格納し、本処理を終了する(S233)。
なお、制御装置20は、キャッシュメモリ21の使用可能な領域量に応じて、S233の処理を実行しなくてもよい。すなわち、キャッシュメモリの使用可能な領域が十分であれば、キャッシュメモリ21上の上書き可能状態のジャーナルを上書き不可状態に変更せず、物理記憶装置56に書き込まないことによって、ジャーナルをさらに上書きでき、使用されるジャーナル記憶領域26の容量を削減することができる。
図8は、第2の実施の形態のジャーナル格納情報210の一例を示す図である。ジャーナル格納情報210は、データ更新アドレス240、ジャーナル格納アドレス241、及び上書き可能状態242を含む。
データ更新アドレス240は、書き込みデータが格納される位置を示すアドレスが格納される。ジャーナル格納アドレス241は、書き込みデータによって作成されるジャーナルが格納される位置を示すアドレスが格納される。上書き可能状態242は、ジャーナル格納アドレス241で特定されるジャーナルが上書き可能状態であるか否かの情報を格納する。
図9は、第2の実施の形態の機能設定画面の一例を示す図である。第2の実施の形態の機能設定画面は、ジャーナル上書き判定部200及びジャーナル永続化部201の有効又は無効を設定するユーザインタフェースである。機能設定画面は、制御装置20のジャーナル設定部202によって、管理端末3などに表示される。
ジャーナル上書き判定部200及びジャーナル永続化部201は、機能設定画面のチェックボックス251又はチェックボックス250を操作することによって有効又は無効が設定される。
管理者は、特定のジャーナル取得記憶装置25に対し、ジャーナル上書き判定部200及びジャーナル永続化部201を有効に設定することができる。具体的には、チェックボックス251を操作し、設定対象のジャーナル取得記憶装置25の識別番号を文字入力領域253に入力する。そして、「OK」ボタン254を操作することによって、記憶装置システム2に設定が反映される。一方、チェックボックス251を選択すれば、ジャーナル上書き判定部200及びジャーナル永続化部201を無効に設定できる。
なお、ジャーナル設定部202は、ジャーナル上書き判定部200及びジャーナル永続化部201を有効と設定した場合に、表示部252に、機能又は効果を示すメッセージを表示してもよい。例えば、図9に示すように、トランザクション一貫性のあるDBのリカバリを可能としながらジャーナル記憶装置26の容量を削減できる旨を表示することができる。
第2の実施の形態によれば、同じアドレスを指定した書き込み処理が複数要求されるとき、ジャーナルをキャッシュメモリ21上で上書きすることによって、ジャーナルを記録するために必要な記憶容量を削減することができる。特に、ジャーナリングの対象となる物理記憶装置56に格納されるデータを連続して更新する場合に有効である。
さらに、第2の実施の形態によれば、物理記憶装置56に格納されたジャーナルを上書きするのではなく、キャッシュメモリ21上でジャーナルを上書きするため、ジャーナルの上書き処理に関し、記憶装置システム2に対する負荷を小さくすることができる。
(第3の実施の形態)
図10は、第3の実施の形態の情報処理システムのソフトウェア構成図である。第3の実施の形態の情報処理システムのハードウェア構成は、第1の実施の形態と同じである。
ホスト1は、第1の実施の形態と同じ構成である。一方、記憶装置システム2には、第2の実施の形態の構成に加え、制御装置20に、ジャーナル永続化判定部300、及びチェックポイント管理部301を構成するプログラム及び管理情報を不揮発性メモリ53に備える。その他の構成については、第2の実施の形態と同じである。
ジャーナル永続化判定部300は、ホスト1からチェックポイントコマンドを制御装置20が受信したときに実行される。ジャーナル永続化判定部300は、キャッシュメモリ21に格納された上書き可能状態のジャーナルの量が所定の閾値以上であり、かつ、ジャーナル記憶装置26の空き容量が所定の閾値以上であるか否かを判定する。
チェックポイント管理部301は、処理を実行するプログラム及びチェックポイント管理情報310によって構成される。チェックポイント管理部301は、ジャーナル永続化判定部300の判定結果に基づいて、受信したチェックポイントを有効又は無効として管理する。
チェックポイント管理情報310は、ジャーナルと対応付けられたチェックポイントの情報を格納する。なお、詳細は、図13にて後述する。
また、制御装置20は、チェックポイント管理部301を構成するプログラムを実行することによって、ネットワークアダプタ52を介して、ホスト1又は管理端末3にチェックポイント管理情報310に登録された情報を参照するインタフェースを提供する。なお、インタフェースの詳細は、図14にて後述する。
ジャーナル設定部202は、第2の実施の形態と同じく、ジャーナル上書き判定部200及びジャーナル永続化部201を有効又は無効と設定する。第3の実施の形態では、ジャーナル設定部202は、ジャーナル永続化判定部300の判定に使用する、キャッシュメモリ21に格納された上書き可能状態のジャーナルの量の閾値、及び、ジャーナル記憶装置26の空き容量の閾値を設定することも可能である。さらに、ジャーナル設定部202は、ジャーナル永続化判定部300及びチェックポイント管理部301を有効又は無効に設定する。
ジャーナル設定部202は、ネットワークアダプタ52を介して、ホスト1又は管理端末3に、ジャーナル永続化判定部300の判定に必要な閾値などの項目を設定するインタフェース、及びジャーナル永続化判定部300及びチェックポイント管理部301を有効又は無効に設定するインタフェースを提供する。なお、インタフェースの詳細は、図15にて後述する。
以下、第3の実施の形態において、ホスト1のDBMS10及び記憶装置システム2の制御装置20によって実行される処理の概要を説明する。
制御装置20は、ホスト1からチェックポイントコマンドを受信すると、ジャーナル永続化判定部300を実行する。ジャーナル永続化判定部300は、キャッシュメモリ21に格納された上書き可能状態のジャーナルの量及びジャーナル記憶装置26の空き容量に基づいて、チェックポイントコマンドの受信時点において、ジャーナルを永続化するか否かを判定する。制御装置20は、永続化しないと判定した場合には、チェックポイント管理部301を実行し、受信したチェックポイントを無効として管理する。
一方、制御装置20は、永続化すると判定した場合には、ジャーナル永続化部201を実行し、キャッシュメモリ21の上書き可能状態のジャーナルを上書き不可状態に変更する。
続いて、制御装置20は、ジャーナル制御部23を実行し、チェックポイントコマンドに含まれるチェックポイントの識別情報と対応させたジャーナルを生成し、上書き不可状態として、キャッシュメモリ21に格納する。最後に、制御装置20は、チェックポイント管理部301を実行し、受信したチェックポイントを有効として管理する。
なお、制御装置20は、キャッシュメモリ21に格納されているジャーナルを、ジャーナル記憶装置26に所定のタイミングに格納する。
DBMS10は、回復時点を含むDBのリカバリ指示を管理者から受信すると、ログ解析部16を実行し、ログファイル32を解析することによって、回復時点直前のチェックポイントの識別情報を取得する。そして、取得したチェックポイントが有効であるか否かを記憶装置システム2に問い合わせる。
制御装置20は、DBMS10からチェックポイントの識別情報の問合せを受信すると、チェックポイント管理部301を実行する。チェックポイント管理部301は、受信したチェックポイントが有効である場合には、受信したチェックポイントの識別情報は有効として応答する。一方、受信したチェックポイントが無効である場合には、受信したチェックポイントの識別情報を登録した時点よりも前であって、かつ、最も新しい有効なチェックポイントの識別情報を、DBMS10に応答する。
DBMS10は、記憶装置システム2から有効なチェックポイントの識別情報を受信すると、受信したチェックポイントの識別情報を含むリストア指示を記憶装置システム2に送信する。そして、記憶装置システム2は、受信したチェックポイントの識別情報に基づいて、ジャーナルを適用し、DBファイル30をリストアする。その後、DBMS10は、ログ適用部17によって、リストアされたDBファイル30に回復時点までのログを適用し、回復時点のDBを回復する。
以下、第3の実施の形態において、ホスト1のDBMS10及び記憶装置システム2の制御装置20によって実行される処理の詳細を説明する。
図11は、第3の実施の形態の記憶装置システム2がホスト1からチェックポイントコマンドを受信したときに実行される処理の手順を示すフローチャートである。チェックポイントコマンドは、ホスト1のDBMS10からチェックポイントの処理完了時に発行され、処理したチェックポイントの識別情報を所定の識別情報として含む。
制御装置20は、まず、ホスト1のDBMS10からチェックポイントコマンドを受信する(S310)。
制御装置20は、ジャーナル格納情報210を参照し、キャッシュメモリ21に格納された上書き可能状態のジャーナルの量が所定の閾値以上であるか否かを判定する(S311)。
制御装置20は、該当するジャーナルの量が所定の閾値以上でなければ(S311の結果が「N」)、チェックポイント管理情報310を参照及び更新し、受信したチェックポイントを無効なチェックポイントとして管理し(S316)、処理を終了する。
一方、制御装置20は、キャッシュメモリ21にある上書き可能状態のジャーナルの量が所定の閾値以上であった場合には(S311の結果が「Y」)、ジャーナル記憶装置26の空き容量が所定の閾値以上であるかを否か判定する(S312)。制御装置20は、ジャーナル記憶装置26の空き容量が所定の閾値以上でなければ(S312の結果が「N」)、受信したチェックポイントを無効なチェックポイントとして管理し(S316)、処理を終了する。
制御装置20は、ジャーナル記憶装置26の空き容量が所定の閾値以上であった場合には(S312の結果が「Y」)、ジャーナル格納情報210を参照及び更新し、キャッシュメモリ21に格納されている上書き可能状態のジャーナルを上書き不可状態とする(S313)。
次に、制御装置20は、受信したチェックポイントコマンドに含まれるチェックポイントの識別情報に対応させ、上書き不可状態としてジャーナルを作成し、キャッシュメモリ21に格納する(S314)。制御装置20は、作成したジャーナルの情報をジャーナル格納情報210に登録する。
続いて、制御装置20は、チェックポイント管理情報310を参照及び更新し、受信したチェックポイントを有効なチェックポイントとして管理し(S315)、処理を終了する。
なお、制御装置20は、第2の実施の形態と同じく、キャッシュメモリ上のジャーナルをジャーナル記憶装置26に非同期に書き込む。
図12は、第3の実施の形態のDBのリカバリ処理手順を示すフローチャートである。DBのリカバリ処理は、管理者からリカバリ指示を受信したDBMS10における処理、及びDBMS10からチェックポイントの識別情報に関する問合せ及びリストア指示を受信した記憶装置システム2による処理によって構成される。
DBMS10は、障害発生直前の回復時点を表すトランザクション識別情報又はログ順次番号などを含むDBのリカバリ指示を管理者から受信する(S320)。
DBMS10は、リカバリ指示を受信すると、ログ解析部16を実行する。ログ解析部16は、現時点までのすべてのログが記録されたログファイル32を参照し、受信したトランザクション識別情報又はログ順次番号に対応するログを検索する。
ログ解析部16は、さらにログファイル32を解析し、検索されたログよりも前に記録され、かつ、最も新しいチェックポイントの識別情報を含むログを取得する。そして、取得されたログに含まれるチェックポイントの識別情報を、回復時点直前のチェックポイントの識別情報として取得する(S321)。
DBMS10は、取得したチェックポイントの識別情報に基づいて、有効なチェックポイントを記憶装置システム2に問い合わせる(S322)。
制御装置20は、DBMS10からチェックポイントの識別情報の問合せを受信すると(S330)、チェックポイント管理情報310を参照し、受信したチェックポイントの識別情報が管理されていることを確認する。そして、受信したチェックポイントの識別情報によって特定されるチェックポイントが有効であるか否かを判定する(S331)。
制御装置20は、当該チェックポイントが有効である場合には(S331の結果が「Y」)、チェックポイントが有効である旨をDBMS10に応答する(S334)。
一方、制御装置20は、当該チェックポイントが無効であった場合には(S331の結果が「N」)、チェックポイント管理情報310を参照し、直近の有効なチェックポイントの識別情報を取得する(S332)。具体的には、受信したチェックポイントが実行されたDBと同じDBで実行された他のチェックポイントの識別情報の中から、受信したチェックポイントの識別情報を登録した時点より前であり、かつ、直近の有効なチェックポイントの識別情報を取得する。そして、制御装置20は、取得した有効なチェックポイントの識別情報をDBMS10に応答する(S333)。
DBMS10は、記憶装置システム2から有効なチェックポイントの識別情報を受信すると(S323)、取得したチェックポイントの識別情報を所定の識別情報としてリストア指示に含め、当該リストア指示を記憶装置システム2に送信する(S324)。
制御装置20は、DBMS10が送信したリストア指示を受信すると(S335)、受信したリストア指示に含まれるジャーナル取得記憶装置25の識別情報を参照する。そして、ジャーナル取得記憶装置25においてジャーナル取得設定が実行されていること、及び、ジャーナル取得記憶装置25のジャーナルがジャーナル記憶装置26に格納されていることを確認する。また、制御装置20は、チェックポイント管理情報310を参照し、受信したリストア指示で指定されたチェックポイントが有効であることを確認する(S336)。
続いて、制御装置20は、リストア処理を実行する(S337)。具体的には、制御装置20は、リストア指示に含まれる所定の識別情報であるチェックポイントの識別情報に対応するジャーナルを取得する。そして、当該ジャーナルよりも前に記録されたジャーナルを、ジャーナル取得記憶装置25にコピーされたスナップショットデータ34に適用し、チェックポイント時点のデータを復元する。さらに、制御装置20は、リストア処理の完了をDBMS10に報告する(S338)。
DBMS10は、記憶装置システム2からリストア処理の完了報告を受信すると(S325)、ログ適用部17を実行する。ログ適用部17は、リストアされた制御ファイル31に記録されたチェックポイントの識別情報を取得する。そして、取得したチェックポイントの識別情報に対応するログから、リカバリ指示に含まれる回復時点に対応するログまでを、リストアされたジャーナル取得記憶装置25に格納されたDBファイル30に適用し(S326)、処理を終了する。
図13は、第3の実施の形態のチェックポイント管理情報310の一例を示す図である。チェックポイント管理情報310は、チェックポイント識別情報340、ジャーナル格納アドレス341、時間342及びジャーナル永続化343を含む。
チェックポイント識別情報340は、管理対象のチェックポイントの識別子を格納する。ジャーナル格納アドレス341は、管理対象のチェックポイントに対応するジャーナルが格納されたアドレスを格納する。
時間342は、管理対象のチェックポイントに対応するジャーナルが作成された時刻を格納する。ジャーナル永続化343は、管理対象のチェックポイントが有効又は無効であるかを格納する。
図14は、第3の実施の形態のチェックポイント管理情報表示画面の一例を示す図である。チェックポイント管理情報表示画面は、チェックポイント管理情報310に登録されたチェックポイントの内容を問い合わせるために、ホスト1又は管理端末3などに表示される画面(ユーザインタフェース)である。チェックポイント管理情報表示画面は、制御装置20がチェックポイント管理部301を構成するプログラムを実行することによって提供される。
チェックポイント管理情報表示画面は、チェックポイント管理情報310に格納される情報と概ね同じである。具体的には、チェックポイント識別情報350、チェックポイント実行論理記憶装置番号351、チェックポイント識別情報格納論理記憶装置番号352、時間353、及びチェックポイント状態354が表示される。
チェックポイント識別情報350は、チェックポイント管理情報310に登録されたチェックポイントの識別情報である。チェックポイント実行論理記憶装置番号351は、チェックポイントを実行されたDBが格納される論理記憶装置番号である。
チェックポイント識別情報格納論理記憶装置番号352は、チェックポイントの識別情報に対応するジャーナルが格納される論理記憶装置番号である。時間353は、チェックポイントの識別情報に対応するジャーナルが作成された時間である。チェックポイント状態354は、チェックポイントが有効又は無効であるかを示す情報である。
図15は、第3の実施の形態の機能設定画面の一例を示す図である。第3の実施の形態の機能設定画面は、ジャーナル永続化判定部300及びチェックポイント管理部301の有効又は無効を設定するユーザインタフェースである。機能設定画面は、制御装置20のジャーナル設定部202によって、ホスト1又は管理端末3などに表示される。機能設定画面は、第2の実施の形態の図9に示した機能設定画面と同じく、ジャーナル上書き判定部200及びジャーナル永続化部201の有効又は無効を設定することも可能である。
ジャーナル永続化判定部300とチェックポイント管理部301、及び、ジャーナル上書き判定部200とジャーナル永続化部201は、チェックボックス362、チェックボックス361、及びチェックボックス360を選択することによって有効又は無効が設定される。このとき、ジャーナル取得記憶装置25の識別番号を文字入力領域364に入力することによって、設定対象のジャーナル取得記憶装置25が指定される。そして、「OK」ボタン367を操作することによって、記憶装置システム2に設定が反映される。
管理者は、チェックボックス362を選択すると、ジャーナル永続化判定部300、チェックポイント管理部301、ジャーナル上書き判定部200、及び、ジャーナル永続化部201が有効と設定することができる。このとき、ジャーナル永続化判定部300の処理に必要な、キャッシュメモリ21に格納された上書き可能状態のジャーナルの量の閾値及びジャーナル記憶装置26の空き容量の閾値を、文字入力領域365及び366に入力して指定することが可能である。
また、管理者は、チェックボックス361を選択すると、ジャーナル永続化判定部300及びチェックポイント管理部301を無効、ジャーナル上書き判定部200及びジャーナル永続化部201を有効と設定することができる。
さらに、管理者は、チェックボックス360を選択すれば、ジャーナル永続化判定部300、チェックポイント管理部301、ジャーナル上書き判定部200、及びジャーナル永続化部201を無効と設定することができる。
なお、機能設定画面は、ジャーナル永続化判定部300及びチェックポイント管理部301を有効と設定したとき、トランザクション一貫性のあるDBのリカバリを可能としつつジャーナル記憶装置26の容量を削減可能であるが、DBリカバリの処理性能に影響が生じる可能性がある旨を表示部363に表示してもよい。
第3の実施の形態によれば、第2の実施の形態と同じく、同じアドレスが指定された書き込みデータのジャーナルをキャッシュメモリ21上で上書きすることによって、ジャーナル記憶装置26の容量を削減することができる。
また、第3の実施の形態によれば、第2の実施の形態の効果に加え、キャッシュメモリ21の状態及びジャーナル記憶装置26の空き容量に応じてチェックポイントコマンドを無効とし、ジャーナルを更に上書きする。したがって、DBファイル30内の同じデータを連続更新する場合などに、特に、ジャーナル記憶装置26の容量を大幅に削減することが可能である。
さらに、第3の実施の形態によれば、ログファイル32は、ジャーナルを取得しない記憶装置24に格納されるため、リストア処理の実行の有無に関わらず、DBファイル30の変更履歴が全て記録される。よって、回復時点に対して最新のチェックポイント処理時点のDBファイル30にリストアされなくても、DBMS10は、リストアされたDBファイル30に任意の回復時点までの必要なログを適用することができる。
そこで、第3の実施の形態では、キャッシュメモリ21に格納された上書き可能状態のジャーナルの量及びジャーナル記憶装置26の空き容量に基づいて、キャッシュメモリ21に格納されているジャーナルを、物理記憶装置56に書き込むか否かを判定する。このように、ジャーナルの物理記憶装置56に対する書き込み処理の実行を間引くことによって、ジャーナル記憶装置26の容量を第2の実施の形態よりもさらに削減することができる。
以上のように、本発明は、データベースの高速なリカバリのために、記憶装置システム内で生成するジャーナルを用いた高速なリストアを可能としながらも、ジャーナルを記録するための記憶容量の削減が望まれる情報処理システムに適用することができる。特に、大量のログが出力され、データベース内の同じデータが連続して更新されるOLTP向けの情報処理システムに好適である。
なお、特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
(1)記憶装置システムに接続される計算機で実行されるデータベース管理システムであって、前記記憶装置システムは、前記計算機から送信されるアクセス要求を処理する制御部と、第1の記憶装置と、第2の記憶装置と、第3の記憶装置と、を備え、前記第1の記憶装置は、前記データベース管理システムによってアクセスされるデータを格納するデータベースファイルと、前記データベース管理システムの制御情報を含む制御ファイルと、を格納し、前記第2の記憶装置は、前記第1の記憶装置に格納されたデータの更新履歴であるジャーナルを格納し、前記第3の記憶装置は、前記データベース管理システムによって生成され、前記データベースファイルの更新履歴であるログを記録するログファイルを格納し、前記制御部は、前記第1の記憶装置に格納されたデータの更新指示を受信すると、前記ジャーナルを生成して前記第2の記憶装置に記録し、前記データベースファイルの回復の基点となるチェックポイントが生成されたことが前記計算機によって通知されたとき、前記生成されたチェックポイントの識別情報と対応させたジャーナルを生成して前記第2の記憶装置に記録し、前記計算機から前記チェックポイントの識別情報を含むリストア指示を受信すると、前記受信したリストア指示に含まれるチェックポイントの識別情報に対応するジャーナルより前に前記第2の記憶装置に記録されたジャーナルを用いて、前記データベースファイルと前記制御ファイルを含む前記第1の記憶装置に格納されたデータを復元し、前記データベース管理システムは、前記チェックポイントが生成されたとき、前記生成されたチェックポイントの識別情報と対応付けて前記ログファイルにログを記録し、前記生成されたチェックポイントの識別情報を前記制御ファイルに記録し、前記生成されたチェックポイントの識別情報とともに前記チェックポイントが生成されたことを前記記憶装置システムに通知する管理部と、回復時点を含むリカバリ指示を受け付けたとき、前記リカバリ指示に含まれる回復時点に対応するログを前記ログファイルから検索し、前記検索された回復時点に対応するログが記録された時点よりも前に記録され、かつ、最も新しいチェックポイントの識別情報を含むログを取得し、前記取得されたログに含まれるチェックポイントの識別情報を前記リストア指示とともに前記記憶装置システムに送信するログ解析部と、前記記憶装置システムによって復元された制御ファイルに記録されたチェックポイントの識別情報に対応するログから前記回復時点に対応するログまでを、前記記憶装置システムによって復元されたデータベースファイルに適用するログ適用部と、を備えることを特徴とするデータベース管理システム。
(2)前記管理部は、前記チェックポイントが生成されたとき、前記生成されたチェックポイントの識別情報を前記データベースファイルのヘッダ部に記録し、前記ログ適用部は、前記記憶装置システムによって復元されたデータベースファイルのヘッダ部に記録されたチェックポイントの識別情報を含むログから前記回復時点に対応するログまでを、前記記憶装置システムによって復元されたデータベースファイルに適用する、ことを特徴とする(1)に記載のデータベース管理システム。
(3)前記データベース管理システムは、処理に必要なデータを一時的に保存する一時ファイルを、ジャーナルの取得対象でなく、かつ、前記第1の記憶装置以外の記憶装置に格納する、ことを特徴とする(1)に記載のデータベース管理システム。
(4)記憶装置システムに接続される計算機で実行されるデータベース管理システムにおけるデータ回復方法であって、前記記憶装置システムは、前記計算機から送信されるアクセス要求を処理する制御部と、前記データベース管理システムによってアクセスされるデータを格納するデータベースファイル、及び前記データベース管理システムの制御情報を含む制御ファイル、を格納する第1の記憶装置と、前記第1の記憶装置に格納されたデータの更新履歴であるジャーナルを格納する第2の記憶装置と、前記データベース管理システムによって生成され、前記データベースファイルの更新履歴であるログを記録するログファイルを格納する第3の記憶装置と、を備え、前記制御部は、前記第1の記憶装置に格納されたデータの更新指示を受信すると、前記ジャーナルを生成して前記第2の記憶装置に記録し、前記データベース管理システムは、前記データベースファイルの回復の基点となるチェックポイントが生成されたとき、前記ログファイルに前記生成されたチェックポイントの識別情報と対応付けてログを記録し、前記生成されたチェックポイントの識別情報を前記制御ファイルに記録し、前記生成されたチェックポイントの識別情報とともに前記チェックポイントが生成されたことを前記記憶装置システムに通知し、前記制御部は、前記チェックポイントが生成されたことを前記計算機によって通知されたとき、前記生成されたチェックポイントの識別情報と対応させたジャーナルを生成して前記第2の記憶装置に記録し、前記データベース管理システムは、回復時点を含むリカバリ指示を受け付けたとき、前記リカバリ指示に含まれる回復時点に対応するログを前記ログファイルから検索し、前記検索された回復時点に対応するログが記録された時点よりも前に記録され、かつ、最も新しいチェックポイントの識別情報を含むログを取得し、前記取得したログに含まれるチェックポイントの識別情報とともにリストア指示を前記記憶装置システムに送信し、前記制御部は、前記計算機から前記チェックポイントの識別情報を含むリストア指示を受信したとき、前記受信したリストア指示に含まれるチェックポイントの識別情報に対応するジャーナルより前に前記第2の記憶装置に記録されたジャーナルを用いて、前記データベースファイルと前記制御ファイルを含む前記第1の記憶装置に格納されたデータを復元し、前記データベース管理システムは、前記記憶装置システムによって復元された制御ファイルに記録されたチェックポイントの識別情報を含むログから前記回復時点に対応するログまでを、前記記憶装置システムによって復元されたデータベースファイルに適用する、ことを特徴とするデータ回復方法。
(5)データベース管理システムを実行する計算機と、前記計算機に接続される記憶装置システムと、を有する情報処理システムであって、前記記憶装置システムは、前記計算機から送信されるアクセス要求を処理する制御部と、第1の記憶装置と、第2の記憶装置と、第3の記憶装置と、を備え、前記第1の記憶装置は、前記データベース管理システムによってアクセスされるデータを格納するデータベースファイルと、前記データベース管理システムの制御情報を含む制御ファイルと、を格納し、前記第2の記憶装置は、前記第1の記憶装置に格納されたデータの更新履歴であるジャーナルを格納し、前記第3の記憶装置は、前記データベース管理システムによって生成され、前記データベースファイルの更新履歴であるログを記録するログファイルを格納し、前記制御部は、前記記憶装置システムと前記計算機との間で送受信されるデータ及び前記ジャーナルが、一時的に格納されるキャッシュメモリを備え、前記第1の記憶装置に格納されたデータに対する更新指示を受信したとき、前記ジャーナルを上書き可能状態として新たに生成するジャーナル制御部と、前記第1の記憶装置に格納されたデータに対する更新指示を受信したとき、前記更新対象のデータが格納されたアドレスと同じアドレスのデータが更新されることによって生成された同アドレスに対応するジャーナルが、前記キャッシュメモリに既に存在し、かつ、上書き可能状態であるか否かを判定するジャーナル上書き判定部と、前記計算機から、前記データベースファイルの回復の基点となるチェックポイントが生成されたことが前記チェックポイントの識別情報とともに通知されたとき、前記キャッシュメモリに格納された上書き可能状態のジャーナルを、上書き不可状態に変更するジャーナル永続化部と、を備え、所定のタイミングに前記キャッシュメモリに格納されているデータを前記第1の記憶装置又は前記第2の記憶装置又は第3の記憶装置に反映させるための書き込みを行い、前記ジャーナル制御部は、前記第1の記憶装置に格納されたデータに対する更新指示を受信したとき、前記同アドレスに対応するジャーナルが、前記キャッシュメモリに既に存在し、かつ、上書き可能状態である場合には、前記新たに生成されたジャーナルを前記同アドレスに対応するジャーナルに上書きし、前記同アドレスに対応するジャーナルが、前記キャッシュメモリに存在しない場合、又は、上書き不可状態である場合には、前記新たに生成されたジャーナルを前記キャッシュメモリの新たな領域に格納し、前記計算機から前記チェックポイントが生成されたことを通知されたとき、前記ジャーナル永続化部による処理の後、前記生成されたチェックポイントの識別情報と対応させた上書き不可状態のジャーナルを生成して前記キャッシュメモリに格納し、前記計算機から前記チェックポイントの識別情報を含むリストア指示を受信したとき、前記受信したリストア指示に含まれるチェックポイントの識別情報に対応するジャーナルより前に前記第2の記憶装置に記録されたジャーナルを用いて、前記データベースファイルと前記制御ファイルを含む前記第1の記憶装置に格納されたデータを復元し、前記データベース管理システムは、前記チェックポイントが生成されたとき、前記生成されたチェックポイントの識別情報と対応付けて前記ログファイルにログを記録し、前記生成されたチェックポイントの識別情報を前記制御ファイルに記録し、前記チェックポイントが生成されたことを前記チェックポイントの識別情報とともに前記記憶装置システムに通知する管理部と、回復時点を含むリカバリ指示を受け付けたとき、前記リカバリ指示に含まれる回復時点に対応するログを前記ログファイルから検索し、前記検索された回復時点に対応するログが記録された時点よりも前に記録され、かつ、最も新しいチェックポイントの識別情報を含むログを取得し、前記取得されたログに含まれるチェックポイントの識別情報を前記リストア指示とともに前記記憶装置システムに送信するログ解析部と、前記記憶装置システムによって復元された制御ファイルに記録されたチェックポイントの識別情報に対応するログから前記回復時点に対応するログまでを、前記記憶装置システムによって復元されたデータベースファイルに適用するログ適用部と、を備えることを特徴とする情報処理システム。
(6)前記制御部は、前記計算機から前記チェックポイントが生成されたことを通知されたとき、前記キャッシュメモリに格納された上書き可能状態のジャーナルの量が所定の閾値以上であって、かつ、前記第2の記憶装置の空き容量が所定の閾値以上であるか否か、を判定するジャーナル永続化判定部と、前記ジャーナル永続化判定部による判定結果に基づいて、前記チェックポイント生成の通知を有効又は無効に設定するチェックポイント管理部と、をさらに備え、前記ジャーナル永続化部は、前記ジャーナル永続化判定部による判定結果に基づいて、前記キャッシュメモリに格納された上書き可能状態のジャーナルを上書き不可状態に変更し、前記ジャーナル制御部は、前記計算機から前記リストア指示を受信したとき、前記受信したリストア指示に含まれるチェックポイントの識別情報によって特定されるチェックポイント生成の通知が有効か否かを判定し、前記特定されたチェックポイント生成の通知が有効の場合には、前記受信したリストア指示に含まれるチェックポイントの識別情報に対応するジャーナルより前に前記第2の記憶装置に記録されたジャーナルを用いて、前記第1の記憶装置に格納されたデータを復元し、前記特定されたチェックポイント生成の通知が無効の場合には、前記特定されたチェックポイント生成の通知よりも前に受信し、かつ、最も新しい有効なチェックポイント生成の通知に対応するチェックポイントの識別情報を取得し、前記取得されたチェックポイントの識別情報に対応するジャーナルより前に前記第2の記憶装置に記録されたジャーナルを用いて、前記第1の記憶装置に格納されたデータを復元する、ことを特徴とする(5)に記載の情報処理システム。