(57)【要約】【課題】データロード中に発生するログのためにログ記録領域が不足することによるシステムの停止を防ぐ。【解決手段】追加するデータを記録した入力データファイル４２からデータロードプログラム２４の実行中に発生するログの量を見積り、ログファイル３２の空き容量と比較して十分な空き容量がない場合にはデータロードプログラム２４の処理を終了する。データの追加中にログファイル３２の空き容量を監視し、ログを記録する十分な領域がなくなった時点でデータ追加のトランザクションを決着し、データロード処理を中断する。データベース管理装置の管理者がログファイル３２の空き容量を確保した後、データロードプログラム２４を再実行し、データ追加処理を再開する。【選択図】　　　　　　　　図１
2004054816.tif 000002
【特許請求の範囲】
【請求項１】
受信したトランザクションに応じて、追加するデータを記録した入力データファイルを入力としてデータベースにデータを追加するデータロード処理を行うデータベース管理方法であって、
データ追加処理の開始前に入力データファイル内の追加データにより発生するログ量を見積り、ログファイル内の空き容量が該見積もったログ量より少ないか否か判定し、少ない場合にはデータ追加処理の開始前にデータロード処理を終了することを特徴とするデータベース管理方法。
【請求項２】
受信したトランザクションに応じて、追加するデータを記録した入力データファイルを入力としてデータベースにデータを追加するデータロード処理を行うデータベース管理方法であって、
入力データファイルからデータベースへのデータ追加処理中にログファイル内の空き容量を監視し、該空き容量が予め定めた量より少なくなった時点で前記トランザクションをコミツトしてデータロード処理を終了することを特徴とするデータベース管理方法。
【請求項３】
請求項２記載のデータベース管理方法において、
前記トランザクションをコミツトしたとき、前記入力データファイルにおける次ぎの追加対象となるデータの位置情報を更新情報ファイルに記録し、データの追加処理中断のメッセージを前記トランザクションを発した端末装置に表示することを特徴とするデータベース管理方法。
【請求項４】
受信したトランザクションに応じて、追加するデータを記録した入力データファイルを入力としてデータベースにデータを追加するデータロード処理を行うデータベース管理装置であって、
データ追加処理の開始前に入力データファイル内の追加データにより発生するログ量を見積る手段と、
ログファイル内の空き容量が該見積もったログ量より少ないか否か判定する手段と、
該判定の結果が少ない場合にデータ追加処理の開始前にデータロード処理を終了する手段を有することを特徴とするデータベース管理装置。
【請求項５】
受信したトランザクションに応じて、追加するデータを記録した入力データファイルを入力としてデータベースにデータを追加するデータロード処理を行うデータベース管理装置であって、
入力データファイルからデータベースへのデータ追加処理中にログファイル内の空き容量を監視する手段と、
該空き容量が予め定めた量より少なくなった時点で前記トランザクションをコミツトしてデータロード処理を終了する手段を有することを特徴とするデータベース管理装置。
【請求項６】
請求項５記載のデータベース管理装置において、
前記トランザクションをコミツトしたとき、前記入力データファイルにおける次ぎの追加対象となるデータの位置情報を更新情報ファイルに記録する手段と、データの追加処理中断のメッセージを前記トランザクションを発した端末装置に表示する手段を有することを特徴とするデータベース管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のトランザクションからアクセスされるデータを管理し、更新情報をログとして記録するデータベース管理装置の技術に関する。
【０００２】
【従来の技術】
データベース管理装置は、データを記録し保持するコンピュータ化システムである。データベース管理装置において、一連のデータの検索および更新から成る論理的な処理単位をトランザクションという。
トランザクションが正常に終了した場合、トランザクションで処理された更新は、他のトランザクションによる更新があるまで永久的なものとみなされ、トランザクションの正常終了後に障害が発生した場合でも、データベース管理装置がデータの回復を保証する。
また、トランザクションが終了する前に障害が発生した場合やトランザクションを取り消した場合は、それまでに更新されたデータが更新前のデータに戻ること（ロールバック）が保証される。
このようなトランザクションの回復を保証するために、データベース管理装置はログといわれるトランザクションで発生する更新履歴を記録する。
通常、ログは更新前のデータおよび更新後のデータを含み、トランザクションのロールバック時にはログ中の更新前のデータによりデータベースを更新前の状態に戻し（ＵＮＤＯ処理）、障害発生後のデータの回復にはログ中の更新後のデータによりデータベースを更新後のデータに回復する（ＲＥＤＯ処理）。
これらの従来技術は、Ｊ．Ｇｒａｙ，　Ａ．Ｒｅｕｔｅｒ等の”Ｔｒａｎｓａｃｔｉｏｎ　Ｐｒｏｃｅｓｓｉｎｇ：　Ｃｏｎｃｅｐｔｓ　ａｎｄ　Ｔｅｃｈｎｉｑｕｅｓ”，　Ｍｏｒｇａｎ　Ｋａｕｆｍａｎ　Ｐｕｂｌｉｓｈｅｒｓ，　Ｉｎｃ．に記載されている。
【０００３】
【発明が解決しようとする課題】
上述した従来技術では、トランザクションの回復には回復対象のトランザクションで生成されたログが必要であるため、ログを記録する領域が不足するとトランザクションの回復を保証できない。
このとき、データベース管理装置はトランザクション処理を続行することができず、処理中のトランザクションを中断して新たなトランザクションを受け付けられない状態になるか、トランザクションを中断するために必要なログも記録する領域がない場合にはシステムを停止せざるを得ない。
そのためデータベース管理装置の管理者は運用中に発生するトランザクションにより発生するログの量を見積り、十分な量のログを記録する領域を確保しておく必要がある。
しかし、大量のデータを登録することを目的にするデータロードを実施する場合には、データベースの更新で発生するログは更新量に比例して多くなるため、見積りを誤るとログを記録する領域が不足してしまい、データベース管理装置が停止に至ることになる。
ログの見積りが不足する場合として、例えば、データベース管理装置を運用する過程で日々追加するデータ量が増えて登録するデータ量が大量となり、当初のログ量の見積り値では不足する場合や、突発的な業務が発生し追加するデータ量が増えて登録するデータ量が大量となる場合がある。
本発明の目的は、データロード中、特に大量のデータのデータロード中にログを記録する領域が不足することによるシステムの停止を防ぐことにある。
【０００４】
【課題を解決するための手段】
上記目的を達成するために、本発明は、受信したトランザクションに応じて、追加するデータを記録した入力データファイルを入力としてデータベースにデータを追加するデータロード処理を行うものであり、データ追加処理の開始前に入力データファイル内の追加データにより発生するログ量を見積り、ログファイル内の空き容量が該見積もったログ量より少ないか否か判定し、少ない場合にはデータ追加処理の開始前にデータロード処理を終了する。
また、入力データファイルからデータベースへのデータ追加処理中にログファイル内の空き容量を監視し、該空き容量が予め定めた量より少なくなった時点で前記トランザクションをコミツトしてデータロード処理を終了する。
また、前記トランザクションをコミツトしたとき、入力データファイルにおける次ぎの追加対象となるデータの位置情報を更新情報ファイルに記録し、データの追加処理中断のメッセージを前記トランザクションを発した端末装置に表示する。
【０００５】
【発明の実施の形態】
以下、本発明の実施例を図面を用いて具体的に説明する。
図２は、本発明による大量のデータを登録する場合に適合するデータベース管理装置１０の構成を示す。
データベース管理装置１０は外部記憶装置１１を備え、ネットワーク１２を介して端末１３と結ばれ、外部記憶装置１１にはデータベース管理装置１０が管理するデータを記録するデータベース３１及びデータの更新履歴であるログを記録する領域であるログファイル３２が格納される。
データベース管理装置１０は、
端末１３において実行されるプログラムから発行される問い合せ要求、あるいはデータロードプログラム２４から発行される問い合せ要求を受け付け解析して、データベースに対するアクセス経路を決定し（すなわち、データベース３１の中の必要とするデータに関する表がいくつかに分かれて格納されているため、これらの表をどのような順番で組み合わせ、あるいはどのようなインデックス構造を使ってアクセスするかといった順番を決定する）、データのアクセス要求をデータベースアクセス制御部２２に指示する問い合せ制御部２１、
データベース３１への入出力および入出力回数の削減を目的としたデータバッファ２６を制御するデータベースアクセス制御部２２、
データベースに格納するデータの定義情報を管理するディクショナリ管理部２３、
データベース３１の更新の際に発生するログレコードを受け付けログバッファ２７とログファイル３２への入出力を管理するログ管理部２５、
追加するデータの内容が記録されたデータロード入力データファイル４１を読み込み、データ追加処理を制御するデータロードプログラム２４で構成される。
上記データロード入力データファイル４１は、データベースに格納するデータのファイルであり、ファイルのデータは、例えば、端末からネットワークを介して入力されたり、データベース管理装置により入力されたりする。
【０００６】
次に、本発明による大量のデータを登録する場合に適合するデータロード処理時の動作を図１の処理フローに従い説明する。
オペレータは端末１３よりデータロードプログラム２４の実行を指示する。このとき、データの追加対象であるデータベース３１内の表と、データベース管理装置１０からアクセス可能で追加するデータが記録されたデータロード入力データファイル４１が指定される。
データロードプログラム２４は、指示されたデータロードの実行により発生するログ量をデータロード入力データファイル内の追加するデータの量を基に見積もり（ステップ２０１）、ログファイル３２の空き容量を求める（ステップ２０２）。
次に求められたログ量の見積り値が、ログファイルの空き容量に予めデータベース管理装置に登録されたある割合（この割合は、例えば、ディクショナリ管理部に予め登録したり、あるいは図示していないシステム定義ファイルに登録したりしておく。）を乗じた値を下回るか否かを判定する（ステップ２０３）。
ステップ２０３において偽と判定された場合は、データロードの実行でログファイルの空き容量が不足する恐れがあるため、端末１３に警告メッセージを表示し（ステップ２１６）、処理を終了する。
特に、大量のデータの登録の場合に、ログファイルの空き容量が不足する恐れが多く、不足した場合に、オペレータに速やかに通知することができる。
図３に端末１３で表示される警告メッセージの例を示す。
ステップ２０３においてログ量の見積り値がログファイルの空き容量のある割合を超えないと判定された場合、データロード入力データファイル４１から複数件分からなる追加するデータの内の一件分（１レコード）を読み込み（ステップ２０４）、データベースにデータを追加する問い合わせを生成し（ステップ２０５）、問い合わせ制御部２１に問い合わせの実行を要求する（ステップ２０６）。
このとき、問い合わせの要求の電文には、問い合わせの要求元の識別子が含まれ、ステップ２０６における問い合わせ要求時はデータロードプログラムであることを示す値を設定する。
【０００７】
問い合わせ制御部２１は、問い合わせを受け付け（ステップ２０７）、問い合わせを解析し（ステップ２０８）、ステップ２０６において要求された問い合わせの場合は解析の結果としてデータの追加であることが得られ、データベースアクセス制御部２２にデータの追加を指示する（ステップ２０９）。
【０００８】
データベースアクセス制御部２２は、データベース３１でデータを追加する部分に格納するデータによりデータバッファ２６のデータを更新し（ステップ２１０）、データ追加のログを編集する（ステップ２１１）。
ここで、ログは追加、更新、削除等のログの内容を識別するためのログ種別を含み、問い合わせ電文に含まれる問い合わせ要求元の識別子がデータロードプログラムのものであれば、ログ種別としてデータロードプログラムによるデータ追加であることが設定される。
ログを編集後、ログ管理部２５に更新ログの出力を要求する（ステップ２１２）。
【０００９】
ログ管理部２５は、ログレコードをログバッファへ書き出す（ステップ２１３）。
ログバッファに記録されたログレコードは、ログバッファが満杯になるか、任意のトランザクションのコミットまたはロールバックが発生した時点でログファイル３２に書き込まれる。
ここで、データバッファ２６およびログバッファ２７の制御は一般によく知られたライトアヘッドロギング（ＷＡＬ）プロトコルに従い、データバッファ２６の更新内容がデータベース３１に書き込まれる前に、ログバッファ２７の内容がログファイル３２に書き込まれるよう制御される。
ログ管理部２５は、出力要求を受けたログの種別を判定し、ログがデータロードプログラム２４によるデータの追加で発生したログである場合はログファイル３２の空き容量を調べ、ログファイル３２の空き容量に予めデータベース管理装置に登録されたある割合を乗じた値よりログバッファに書き込んだログのサイズが大きくなければ（ステップ２１４）、問い合わせの応答として「正常終了」を返す。
【００１０】
問い合わせの応答を受けたデータロードプログラム２４は、データロード入力データファイル４１の追加データが残っているか否かを判定し（ステップ２１５）、追加データが残っていればステップ２０４以降の処理を繰返し、追加データが残っていなければデータロード処理を終了する。
【００１１】
ステップ２１４においてログファイル３２の空き容量に予めデータベース管理装置に登録されたある割合を乗じた値よりログバッファに書き込んだログのサイズが大きい場合、ログファイル３２への書き込み要求が発生する時点でログを記録できない恐れがあるため、データロードプログラム２４の実行により発生したトランザクションをコミットし（ステップ２１８）、問い合わせの応答として「自動コミットあり」をデータロードプログラムに返す。
【００１２】
データロードプログラム２４は問い合わせの応答として「自動コミットあり」を受け取り、データロード入力データファイル４１における次の追加対象となる追加データの位置を更新情報ファイル４２に記録し（ステップ２１９）、データの追加処理が中断したことを示すメッセージを端末１３に表示し（ステップ２２０）、処理を終了する。図４に端末１３で表示されるデータロード中断のメッセージ例を示す。
【００１３】
ステップ２２０により端末にメッセージが表示された場合、オペレータはデータロード処理がログファイル３２の空き容量が不足したために終了したことを知ることができる。
オペレータはログファイル３２の空き容量を増やす処置を行った後にデータロード入力データファイル４１と更新情報ファイル４２を指定してデータロードプログラム２４の実行を端末１３よりデータロードプログラム２４に指示する。
特に、大量のデータの登録の場合に、ログファイルの空き容量が不足し易く、本実施形態によれば、オペレータはログファイルの空き容量の不足を速やかに知ることができ、ログファイルの空き容量の不足に対して適切に対処することが可能となる。
データロードプログラムは、ステップ２１９において更新情報ファイル４２に記録されたデータロード入力データファイル４１における次の追加データの位置を取得し、図１の処理フローに従いデータロード処理を続行する。
【００１４】
また、本発明の別の実施形態では、ステップ２１６において端末１３に警告メッセージを表示した後、ステップ２０４以下の処理を続行する。
データロードプログラム２４の実行を指示したオペレータは、実行を指示した直後に端末１３に表示されたメッセージによりログファイル３２の空き領域が不足していることに気付くことができ、直ちにログファイル３２の空き容量を増やす処理を行うことでデータロード中のログファイル３２の空き領域の不足を回避することができる。
また、オペレータがログ記録領域を増やす処置をとらずとも、ステップ２１４においてデータロード実行中のログファイル３２の空き容量が少なくなれば、データロード処理が終了するため、データベース管理装置がログファイル３２の空き領域の不足により停止することがない。
【００１５】
【発明の効果】
本発明のデータベース管理装置によれば、データロードの処理中にログを記録する領域が不足するとみられるデータロード処理をデータ追加処理を開始する前にオペレータに警告することができ、データベース管理装置の停止を未然に防ぐことができ、特に大量のデータのデータロードの場合に大きな効果がある。
また、データロードによる大量のデータ追加によりログを記録する領域の空き容量が少なくなる場合は自動的にデータ追加処理を中断し、システムの停止を防ぐことができる。
【図面の簡単な説明】
【図１】データロード処理の概略フローを示す図である。
【図２】本発明を実施するためのデータベース管理装置の構成を示す図である。
【図３】端末における警告メッセージの表示例を示す図である。
【図４】端末におけるデータロード中断のメッセージの表示例を示す図である。
【符号の説明】
１０　　データベース管理装置
１１　　外部記憶装置
１２　　ネットワーク
１３　　端末
２１　　問い合わせ制御部
２２　　データベースアクセス制御部
２３　　ディクショナリ管理部
２４　　データロードプログラム
２５　　ログ管理部
２６　　データバッファ
２７　　ログバッファ
３１　　データベース
３２　　ログファイル
４１　　データロード入力データファイル
４２　　更新情報ファイル
【図１】
2004054816.tif 000003
【図２】
2004054816.tif 000004
【図３】
2004054816.tif 000005
【図４】
2004054816.tif 000006