(57)【特許請求の範囲】
【請求項１】
トランザクションの実行によりデータを更新するとともに更新履歴をログデータとして記憶装置に記憶するデータベースシステムにおけるログデータの分類取得装置であって、
トランザクション単位にログデータを取得するログデータ取得手段と、
前記ログデータ取得手段で取得したログデータを所定の分類条件に従って分類するログデータ分類手段と、
前記分類対応に複数設けられた不揮発性のバッファと、
前記分類対応に複数設けられ、前記ログデータ分類手段によって分類された各履歴ログデータをそれぞれ書き込まれる前記記憶装置内に設けられた履歴ログファイルと、
トランザクション処理と同期して分類された履歴ログデータを前記不揮発性のバッファに転送する手段と、
前記履歴ログファイルに対する前記不揮発性のバッファからの各履歴ログデータの書き込みを、トランザクションの実行と非同期に行うログデータ書出手段と、
トランザクションの処理経過を経時的に記録するトランザクションファイルと、
トランザクション終了時に、履歴ログデータを前記不揮発性のバッファに書き込んだ時点で前記トランザクションファイルにトランザクション完結点を記録するトランザクション完結点管理手段と、
を具備することを特徴とするログデータの分類取得システム。
【請求項２】
トランザクションの実行によりデータを更新するとともに更新履歴をログデータとして記憶装置に記憶するデータベースシステムにおけるログデータの分類取得装置であって、
トランザクション単位にログデータを取得するログデータ取得手段と、
前記ログデータ取得手段で取得したログデータを所定の分類条件に従って分類するログデータ分類手段と、
前記分類対応に複数設けられ、前記ログデータ分類手段によって分類された各履歴ログデータをそれぞれ書き込む前記記憶装置内に設けられた履歴ログファイルと、
トランザクションの処理過程を経時的に記録するトランザクションファイルと、
トランザクション終了時に、履歴ログデータを前記記憶装置上の履歴ログファイルに保証した時点で前記トランザクションファイルにトランザクション完結点を記録するトランザクション完結点管理手段と、
を具備することを特徴とするログデータの分類取得システム。
【請求項３】
複数のデータベースを備えており、前記分類手段はログデータをデータベースごとに分類することを特徴とする請求項１または２に記載のログデータの分類取得システム。
【請求項４】
前記分類手段は、ログデータを業務単位のデータベース群ごとに分類する請求項１または２に記載のログデータの分類取得システム。
【請求項５】
前記分類手段は、ユーザログデータとデータベースの更新ログデータを分類して複数のログファイルに出力する請求項１または２に記載のログデータの分類取得システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データベースにおける障害復旧に使用するログデータの管理システムに関する。
【０００２】
【従来の技術】
データベースシステムにおいては、システムに障害が発生したときのデータ補償のために、以下のような復旧の方式を採用している。即ち、データのバックアップファイルを作成し、処理に要したコマンドなどを時系列にログファイルとして記録する。そして、システムに障害が発生した場合には、障害発生直前の状態のログファイルに記憶されているコマンドをバックアップファイルに対して実行して、障害が発生した直前の状態にシステムを復旧する方式を採用している。
【０００３】
そのログファイルの説明に関して、先ず、データベースの更新処理を説明する。データベースシステム（以下、ＤＢシステムと呼ぶことがある）では、データベース（以下、ＤＢと呼ぶことがある）の更新をトランザクションという処理単位で管理している。トランザクションとは、ひとつの完結したデータ操作を行うオペレーションの集まりをいう。トランザクションは、完結性、恒久性という性質を持つ。完結性とは、「トランザクションの状態は成立または不成立のいずれかである」という意味を持つ。また、恒久性とは、「いったん成立したトラザクションの処理は未来永劫保証する」という意味を持つ。
【０００４】
ＤＢシステムでは、上記の性質を持つトラザクションを実現するために、データベースの更新動作履歴（以下、ログデータＤＢシステムと呼ぶことがある）を履歴ログファイル（ＨＬＦ）に取得する。そして、履歴ログファイル（ＨＬＦ）にログデータを保証した時点，即ち、履歴ログファイル（ＨＬＦ）にログデータを確実に記録した時点を、トランザクション完結点としている。
【０００５】
図１０はＤＢの更新処理を示したシステム構成図である。データベースシステムは、それに格納されたデータを複数の人が共同利用できるように、複数の端末を備えている。図１０では、端末として、端末Ａ（２００ａ），端末Ｂ（２００ｂ）が示されている。データベース（ここでは、二つのデータベースＤＢ−１（２０１ａ），ＤＢ−２（２０１ｂ）を示す。）は、通常、外部記憶装置（第１の外部記憶装置（２０２））に記憶される。この外部記憶装置（２０２）は、中央処理装置（２０３）に接続されている。このデータベースへのアクセスをするための応用プログラムＡ，Ｂが、それぞれ中央処理装置（２０３）の主記憶（２０４）上で動作する。この中央処理装置（２０３）には、前記ログファイルを記録するための第２の外部記憶装置（２０５）も接続されている。この第２の外部記憶装置（２０５）には、主記憶（２０４）上のＨＬＦ書き出し処理部（２０４ａ）により、履歴ログファイル（ＨＬＦ（２０６））が書き出される。
【０００６】
以下、図１０に従ってＤＢ更新処理手順を説明する。
（１）  応用プログラムＡを起動すると、応用プログラムＡは電文を読み出すためのＲＥＡＤマクロ命令を発行する。ＲＥＡＤマクロ命令の処理の中で、トランザクションの開始（ＴＲＮ−ＳＴＡＲＴ）マクロ命令が発行される。この後、応用プログラムＡは、ウェイト状態となり、端末Ａからの処理要求を待つ。
（２）  端末Ａ（２００ａ）からの電文の処理要求があると、応用プログラムＡは、これを受付ける。これにより、応用プログラムは、ウェイトが解除（ポスト）される。
（３）  応用プログラムＡは、ＤＢ−１（２０１ａ）を第１の外部記憶装置（２０２）から主記憶（２０４）上に読込む。
【０００７】
（４）  主記憶上で、応用プログラムＡは読み込んだＤＢ−１（２０１ａ）の内容を変更する。
（５）  応用プログラムＡはＷＲＩＴＥマクロ命令を発行する。ＷＲＩＴＥマクロ命令の処理の中で、トランザクション終了（ＴＲＮ−ＥＮＤ）マクロ命令が発行される。
（６）  オペレーションシステム（ＯＳ）が、ＨＬＦ書き出し処理部（２０４ａ）に、第２の外部記憶装置（２０５）上のＨＬＦへのログデータ書出し処理を要求する。
【０００８】
（１）’〜（６）’端末Ｂからの処理要求に対して、端末Ａからの処理要求に対してしたのと同じ操作を行う。なお、（１）〜（６）の処理と（１）’〜（６）’の処理とは、平行して独立に行われる。
（７）  オペレーションシステム（ＯＳ）からの命令に従って、ＨＬＦ書き出し処理部（２０４ａ）が、履歴ログファイル（２０６）へ、ログデータを書出す。
（８）  オペレーションシステム（ＯＳ）が、履歴ログファイル（２０６）へのログデータ書き出し処理が完了したことを、応用プログラムＡに通知する。
（９）  主記憶（２０４）上で内容変更されたデータベースＤＢ−１（２０１ａ）を、第１の外部記憶装置（２０２）上に書込む。
（１０）  応用プログラムＡは、ＤＢの更新処理が完了したことを、端末Ａに通知する。
（７）’〜（１０）’  端末Ｂからの処理要求に対して、端末Ａからの処理要求に対してしたのと同じ操作を行う。
【０００９】
次に、ログデータの取得処理について説明する。
図１１はログデータの取得処理を説明するためのブロック図である。ここでは、主記憶（２０４），データベース（ＤＢ−１（２０１ａ），ＤＢ−２（２０１ｂ））用の第１の外部記憶装置（２０２），履歴ログファイル（２０６）用の第２の外部記憶装置（２０５）があり、主記憶（２０４）上にデータベース更新用のバッファ（２０８），ＨＬＦ書き出し用のバッファ（２０９）が設けられている。図１１の状態においては、この主記憶（２０４）上に、二つのデータベースＤＢ−１（２０１ａ），ＤＢ−２（２０１ｂ）を順番にアクセスするための応用プログラムＣがロードされているとする。以下、図１１の場合のログデータ取得処理を説明する。
【００１０】
（１）  応用プログラムＣを起動すると、応用プログラムＣがＲＥＡＤマクロ命令を発行する。ＲＥＡＤマクロ命令の処理の中で、トランザクション開始（ＴＲＮ−ＳＴＡＲＴ）マクロ命令が発行される。
（２）  応用プログラムＣが、データベースＤＢ−１を獲得するためのＧＥＴマクロ命令を発行する。このＧＥＴマクロ命令を発行することにより、応用プログラムＣは、データベースＤＢ−１を独占的にアクセスできるようになる。
【００１１】
（３）  獲得したＤＢ−１のデータを使用・更新するために、応用プログラムＣは、必要とするデータが格納されているページを主記憶（２０４）上のＤＢ更新用バッファ（２０８）に読み込む。
（４）  応用プログラムＣは、主記憶（２０４）上に読み込んだデータベースＤＢ−１（２０１ａ）からのデータの内容（ここでは、“Ａ”とする。）を変更するためのＭＯＤＩＦＹマクロ命令を発行する。
（５）  ＤＢ更新用バッファ（２０８）上で、データの内容がＡからＡ’に変更される。
（６）  （５）において更新に用いたコマンドを、ＤＢ更新用バッファ（２０８）から抜き出して、ログデータとしてＨＬＦバッファ（２０９）に転送する。
（２）’〜（６）’ＤＢ−２に対し、ＤＢ−１に対してしたのと同じ操作を行う。
【００１２】
（７）  応用プログラムＣは、書き出し（ＷＲＩＴＥ）マクロ命令を発行する。ＷＲＩＴＥマクロ命令の処理の中で、トランザクション終了（ＴＲＮ−ＥＮＤ）マクロ命令が発行される。
（８）  ＨＬＦバッファ（２０９）の内容を、履歴ログファイル（２０６）に書出す。
（９）  ＤＢ更新用バッファ（２０８）上のデータＡ’をＤＢ−１（２０１ａ）に書出す。
（９）’  ＤＢ更新用バッファ（２０８）上のデータＢ’をＤＢ−２（２０１ｂ）に書出す。
【００１３】
以上のように、従来のデータベースシステムでは、複数のデータベースの更新によって得られた複数のログデータを一つの履歴ログファイル（２０６）に逐次格納していた。従来のデータベースシステムでは、トランザクション毎に、システムチューニングのため統計情報やユーザの課金情報など（以降ユーザデータと呼ぶ）を得て、それらをログデータと一緒に履歴ログファイル（２０６）に格納するようにしていた。このシステムチューニングとは、データベースのＩ／Ｏ負荷のチューニングのことである。課金情報とは、データベースの使用料金のことである。
【００１４】
そして、システムに障害が発生したときは、障害発生前の最終のログファイルに記憶しておいたコマンドを実行する。これにより、障害が発生した直前の状態にシステムを復旧することができる。なお、ここに言う障害には、システムダウン及びデータベース自体の障害を含む。
【００１５】
しかし、従来の技術では以下の問題が存在する。
第１に、業務の規模が大きくなると、時間当りのトランザクション処理件数が増大する。それにも拘らず、従来のデータベースシステムでは、複数のデータベースのログデータを一つのＨＬＦバッファ（２０９）に転送した後に、それらをまとめて一つの履歴ログファイル（２０６）に書き出していた。このため、履歴ログファイル（２０６）のＩ／０ネックが原因で、トランザクションの処理性能が上がらなくなっていた。
【００１６】
Ｉ／０ネックとは、主記憶（２０４）上の応用プログラムの処理速度と、二次記憶装置である外部記憶装置（２０５）へのアクセス速度との差から生じる問題である。すなわち、外部記憶装置（２０５）へのアクセス時間は、主記憶（２０４）上でのプログラムの処理速度に比較して極めて遅い。従って、データベースの数が多くなればなるほど、外部記憶装置（２０９）の履歴ログファイルへログデータを書き出す時間が多くかかる。この場合には、システムの処理時間が外部記憶装置（２０５）の性能に規制されてしまう。
【００１７】
第２に、データベースの復旧操作では、履歴ログファイル（２０６）を読み出して、このログファイルに含まれるコマンドを、復旧を実行する処理装置に入力する必要がある。しかし、従来のデータベースシステムでは、複数のデータベースのためのログデータを、その発生順に一つの履歴ログファイル（２０６）に格納していた。従って、復旧時には、検索を行い、履歴ログファイル（２０６）全体の中から普及対象データベースに関係するログデータのみを抽出する作業が必要であった。このように、データベースの数が多くなると、データベースの復旧運用が煩雑になる問題を有していた。同様に、データベースの数が多くなるとログデータが増大する。ログデータが増大すると、ＤＢを復旧するときに、復旧するＤＢのログデータを検索する処理に時間が掛かり、復旧操作の時間が増大する問題がある。
【００１８】
第３に、従来のデータベースシステムは、トランザクション毎に、システムチューニングのため統計情報やユーザの課金情報などのユーザデータを得て、これを履歴ログファイル（２０６）に格納する機能を有していた。しかし、従来のデータベースシステムでは、ユーザデータとログデータとを混在して履歴ログファイル（２０６）に格納しているため、ユーザーデータを使用する場合には、履歴ログファイル（２０６）全体の中からユーザデータを抽出する操作が必要である。また、このような格納形式では、データベースの復旧時に、ユーザデータとログデータを混在している履歴ログファイル（２０６）からログデータのみを検索する必要がある。従って、データベースの復旧に時間がかかりすぎる問題があった。
【００１９】
【課題を解決するための手段】
従来技術の問題点を解決するため、図１，図２の原理図のように、本発明では、以下のような手段を採用した。
＜本発明の要旨＞
本発明によるログデータの分類取得システムは、トランザクションの実行によりデータを更新するとともに更新履歴をログデータとして記憶装置（３０５）に記憶するデータベースシステムにおけるログデータの分類取得装置であって、トランザクション単位にログデータを取得するログデータ取得手段（３１１）と、前記ログデータ取得手段（３１１）で取得したログデータを所定の分類条件に従って分類するログデータ分類手段（３１０）と、前記分類対応に複数設けられ、前記ログデータ分類手段（３１０）によって分類された各履歴ログデータをそれぞれ書き込む前記記憶装置（３０５）内に設けられた履歴ログファイル（３１８）とを具備することを特徴とする。ログデータを分類しておけば、システム復旧時に、必要なログデータを容易に検索して、読み出すことができる。
【００２０】
以下に、本発明の構成要素の概要と、そのポイントを簡単にまとめる。
【００２１】
〔分類〕
ここで、どのようにログデータを分類するかを説明する。まず、前提となるのは、ログデータの起因となったトランザクション毎に、ログデータを分類するということである。前記したように、トランザクションは、ひとつの完結したデータ操作を行うオペレーションの集まりであり、完結性、恒久性という性質を持つ。従って、システム復旧のためのログデータとして、トランザクション毎にログデータを管理する必要がある。そこで、本実施例では、トランザクション単位にログデータを取得するために、ログデータ取得手段３１１を設けた。すなわち、ログデータ取得の入口で既に分類しているのである。
【００２２】
次に、同じトランザクション中でも更に分類する必要がある。本実施例は、このための分類手段３１０を設けた。例えば、データベース毎に分類するという場合のためである。すなわち、分類手段３１０は、データベース毎に履歴ログファイルを形成する。そして、この各データベース毎のログデータを、各ＨＬＦバッファ（３１４ａ，３１４ｂ）に格納する。
【００２３】
ここで、データベース毎とは、複数のデータベースが存在する場合には、各データベース毎ということである。複数のデータベースが存在する場合とは、例えば、預金システムにおける預金データベースと引き出しデータベースなど複数のデータベースを有する場合である。また、物理的に見たデータベースは一つであるが、そのデータベース中に、複数のデータベースが存在するといってよい場合も本発明を適用できる。換言すれば、業務単位に複数のデータベース群、データファイル群が存在する場合、その業務単位対応のデータベース群を構成する個々のデータベース毎に履歴ログファイルを形成し、そのそれぞれにログデータを格納するようにしてもよい。業務単位対応のデータベース群とは、例えば、銀行において、顧客の預金システムと行員の給与システムがあり、それぞれの業務のシステムに複数のデータベースが存在する場合である。
【００２４】
〔分類手段〕
分類手段３１０は、ログデータを分類するのみならず、ログデータとユーザデータとを分類してもよい。
【００２５】
分類手段３１０は、ログデータを分類し、これを複数の履歴ログファイル（３１８ａ，３１８ｂ）に、分類対応にそれぞれ格納する。
【００２６】
〔ログデータ書き出し手段〕
ログデータ書き出し手段（３１３）は、履歴ログファイル・バッファ（３１４ａ，３１４ｂ）から外部記憶装置（３０５）上の履歴ログファイル（３１８ａ，３１８ｂ）に対する各履歴ログデータの書き込みを、トランザクションの実行とは非同期に行うことができる。
【００２７】
また、ログデータ書き出し手段３１３は、各履歴ログファイル（３１８ａ，３１８ｂ）へのログデータの書き込みを、並列的に行うことができる。これらのことは、前記Ｉ／Ｏネックによる弊害をより効果的に削減する。
【００２８】
＜本発明における付加的構成要件＞
本発明は、前記必須の構成要件からなるが、以下の構成を付加した上でも成立する。
【００２９】
〔バッファ〕
ログデータ分類手段で分類された複数の履歴ログデータを、分類対応にそれぞれ格納する複数のバッファ（３１４）をさらに備えていても良い。この場合には、各履歴ログファイル（３１８）は、対応するバッファ（３１４）に格納されている履歴ログデータを、各々書き込むことになる。このバッファ（３１４）としては、不揮発性のバッファ及び揮発性のバッファがある。
【００３０】
不揮発性のバッファを採用した場合、ログデータは、一旦不揮発メモリ（３０１）上の履歴ログファイル・バッファ（３１４ａ，３１４ｂ）に転送される。これにより、ログデータが不揮発化されるので、システムがダウンしてもログデータは残る。このように、不揮発メモリ上に複数の履歴ログファイル・バッファ（３１４ａ，３１４ｂ）を設ける構成を採用すれば、Ｉ／Ｏネックによる弊害を防止できるだけでなく、ログファイルの消失を回避できる。
【００３１】
なお、データベースシステムを構築する中央処理装置の主記憶（メインストリッヂユニット：ＭＳＵ）（３００）に、揮発型のバッファを分類対応に複数設け、この揮発型バッファに一旦分類後の履歴ログデータを格納し、その後不揮発メモリ（３０１）上の前記複数のバッファ（３１４）に履歴ログデータを転送するようにしてもよい。このようにすれば、不揮発型の履歴ログファイル・バッファ（３１４）の運用をより効果的にすることができる。
【００３２】
また、履歴ログファイル（３１８）への書出し処理は、ＨＬＦバッファ（３１４）が満杯になった時に行うのが好適である。このようにすれば、履歴ログファイル（３１８）への書き出し回数を最小限に抑えることができるので、Ｉ／Ｏネックによる弊害を最小限にすることができる。但し、履歴ログファイル（３１８）への書き出しタイミングは、これに限定されず、他の条件が揃ったときに書き出すようにしてもよい。
【００３３】
〔ログデータ書出手段〕
バッファ（３１４ａ，３１４ｂ）に転送されたログデータを、トランザクションの処理とは非同期に履歴ログファイル（３１８）へ書出すログデータ書出手段３１３を更に備えていても良い。この場合に、このログデータ書出手段３１３は、複数のバッファ（３１４）から履歴ログファイル（３１８）への書き出しを、それぞれ並列的に行うようにしても良い。
【００３４】
〔トランザクションファイル〕
トランザクションの処理経過を経時的に記録するトランザクションファイル（３１５）を更に設けて、履歴ログファイル（３１８）の代わりに、トランザクションファイルによってトランザクション完結点を管理しても良い。この理由は以下の通りである。即ち、本発明では、履歴ログファイル（３１８）が複数存在する。従って、一つのトランザクションにおけるログデータが、複数の履歴ログファイル（３１８）に分散して記録される。このため、どの履歴ログファイル（３１８）のどの部分を見たらトランザクション完結点であるかが、不明確となる。そこで、履歴ログファイル（３１８）にトランザクション完結点を記録して管理する代わりに、トランザクションの開始から終了までの時系列的な情報を１つのファイルで管理するトランザクションファイル（３１５）にトランザクション完結点を記録し、これを管理すれば、トランザクション完結点の所在が明確となるのである。なお、トランザクション完結点は、デーベースシステムの復旧に使用するデータである。即ち、保守要員は、復旧時にトランザクション完結点を検出し、その完結点までのトランザクション対応のログデータを履歴ログファイル（３１８）から取り出し、そのログデータに従ってデータベース（３１９）の復旧を行うようにすることができる。
【００３５】
このように、システム復旧に必要なトランザクション完結点の管理を、トランザクションの処理経過を開始から完結まで経時的に記録するトランザクションファイルに記録して管理すれば、前記分類対応の複数の履歴ログファイルが存在しても、容易にトランザクション完了点を検索できる。
【００３６】
なお、トランザクション完結点をトランザクションファイル（３１５）に書き込むタイミングは、履歴ログデータを履歴ログファイルに保証した時点でも良いし、履歴ログデータを不揮発性バッファ（３１４）に書き出した時点でも良い。
【００３７】
【作用】
＜本発明の必須構成要素による作用＞
トランザクションの実行によりデータベース（３１９）のデータを更新すると、このトランザクション単位で、更新履歴がログデータとしてログデータ取得手段（３１１）に取得される。このように取得されたログデータは、ログデータ分類手段（３１０）により、所定の分類条件に従って分類される。この分類されたログデータは、各々に対応する履歴ログファイル（３１８）に書き込まれて保存される。従って、履歴ログファイル（３１８）への書き出し処理の負荷を分散でき、その結果、Ｉ／Ｏネックによる処理の遅れを回避できる。このように、システム復旧に先だって、予め分類しているので、システム復旧のためのログデータの検索・読み出しが迅速に行える。
【００３８】
＜バッファを設けた場合の作用＞
トランザクションの実行によりデータベース（３１９）のデータを更新すると、このトランザクション単位で、更新履歴がログデータとしてログデータ取得手段（３１１）に取得される。このように取得されたログデータは、ログデータ分類手段（３１０）により、所定の分類条件に従って分類される。この分類されたログデータは、一旦バッファ（３１４）に格納される。このように格納されたログデータは、各々に対応する履歴ログファイル（３１８）に書き込まれて保存される。従って、このバッファ（３１４）により、分類手段（３１０）による処理速度と履歴ログファイル（３１８）への書き込み速度との差が吸収されるので、その結果、Ｉ／Ｏネックによる処理の遅れを回避できる。
【００３９】
＜揮発バッファと不揮発バッファを設けた場合の作用＞
トランザクションの実行によりデータベース（３１９）のデータを更新すると、このトランザクション単位で、更新履歴がログデータとしてログデータ取得手段（３１１）に取得される。このように取得されたログデータは、ログデータ分類手段（３１０）により、所定の分類条件に従って分類される。この分類されたログデータは、一旦揮発バッファに格納される。このように格納されたログデータは、各々に対応する不揮発バッファ（３１４）に格納されて、それ以後の消失が防止される。このように不揮発化されたデータは、その後、適宜履歴ログファイル（３１８）に書き込まれて保存される。従って、このバッファ同士のデータ伝送は高速に行える一方、履歴ログファイル（３１８）への書出は一時に行うことができるので、Ｉ／Ｏネックによる処理の遅れを更に回避できる。
【００４０】
＜トランザクションファイルを設けた場合の作用＞
トランザクションの実行によりデータベース（３１９）のデータを更新すると、このトランザクション単位で、更新履歴がログデータとしてログデータ取得手段（３１１）に取得される。このように取得されたログデータは、ログデータ分類手段（３１０）により、所定の分類条件に従って分類される。この分類されたログデータは、履歴ログファイル（３１８）に書き出されるか、一旦揮発バッファ（３１４）に格納される。この時点においてトランザクションが終了していれば、トランザクション完結点がトランザクションファイル（３１５）に書き込まれる。従って、データベース復旧時に、容易にトランザクション完結点の検索をすることができる。
【００４１】
【実施例】
以下に本発明の実施例を図面を参照して説明する。
【００４２】
【実施例１】
第１の実施例を、図３乃至図６に従って説明する。
【００４３】
＜システムの概要＞
図３は、本発明の実施例の概要を示したブロックである。
図３に示すように、第１実施例は、２つのデータベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））を有するデータベースシステムに本発明を適用したものである。このデータベースシステムは、例えば、預貯金管理システムに適用できる。その場合には、一方のデータベース（ＤＢ−１（１１９ａ））を預金データベースとし、他方のデータベース（ＤＢ−２（１１９ｂ））を引き出しデータベースとする。
【００４４】
このデータベースシステムは、２つのデータベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））が構築された第１の外部記憶装置（１０４ａ，１０４ｂ）と、この第１の外部記憶装置（１０４）に接続された中央処理装置（１００）と、この中央処理装置（１００）に接続された第２の外部記憶装置（１０５ａ，１０５ｂ）と、中央処理装置（１００）に接続された複数個（図３では一個のみ例示）の端末（１０６）とから構成されている。
【００４５】
この中央処理装置（１００）は、端末（１０６）からの要求に応じてデータベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））を制御する情報処理装置である。この中央処理装置（１００）は、主記憶（ＭＳＵ）（１０１），大容量不揮発メモリ（ＳＳＵ）（１０３），及びＣＰＵ（１０２）を有している。
【００４６】
〔主記憶（ＭＳＵ）〕
図４にその詳細を示すように、この主記憶（１０１）には、応用プログラムがロードされて実行される。また、主記憶（１０１）には、データベースの更新処理に必要なデータベース更新用バッファ（１３１），ログデータバッファ（１３２），及び、複数の揮発型ＨＬＦバッファ（１１４）が設けられている。なお、ログデータの分類条件をデータベース対応に分類することとしたので、揮発型ＨＬＦバッファ１１４の数は、データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））の数に対応している（図４においは、２個設置されている。）。この主記憶（１０１）は、揮発性のＲＡＭ（ランダムアクセスメモリ）から構成されている。なお、図４に示す状態においては、主記憶（１０１）上には、両データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））に順次アクセスして更新を行う応用プログラム（Ｐ−１）がロードされている。
【００４７】
〔大容量不揮発メモリ（ＳＳＵ）〕
この主記憶（１０１）とは別に設けられた大容量不揮発メモリ（ＳＳＵ）（１０３）上には、トランザクションファイル１１５と、データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））の数に対応した複数の不揮発型ＨＬＦバッファ１１２が設けられている。この大容量不揮発メモリ（１０３）は、ＮＶＲＡＭから構成されている。
【００４８】
〔第２の外部記憶装置〕
第２の外部記憶装置１０５には、履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））が構築されている。この履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））は、データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））の数と同数だけ設けられている（図４においは、２個設置されている。）。
【００４９】
〔ＣＰＵ〕
ＣＰＵ１０２は、主記憶（１０１）上にロードされた応用プログラムを実行してデータベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））を制御する機能の他に、オペレーションシステム（ＯＳ）を起動することにより得られる機能を有している。即ち、図４に示すように、ＣＰＵ（１０２）は、ログデータ取得部（１１１），分類部（１１０），トランザクション完結点管理部（１１８），転送部（１１６），監視部（１１７），及びログデータ書出部（１１３）を有している。
【００５０】
次に、各部の機能を詳しく説明する。
【００５１】
［データベース更新用バッファ］
先ず、データベース更新用バッファ１３１は、応用プログラムの指示に応じて各データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））内容を取り込むと共に、第１のデータベース（ＤＢ−１（１１９ａ））から取り込んだデータの内容Ａを新しい内容Ａ’に、第２のデータベース（ＤＢ−２（１１９ｂ））から取り込んだデータの内容Ｂを新しい内容Ｂ’に変更する。
【００５２】
［ログデータバッファ］
ログデータバッファ（１３２）は、ログデータ取得部（１１１）からの指示に応じて、データベース更新用バッファ（１３１）でのデータ変更内容（コマンド）抽出して、ログデータとして保持する。ここで、ログデータの構成を説明する。図６に示すように、個々のログデータは、制御部とデータ部から構成されている。制御部は、当該ログがデータベース更新に関するログであるかユーザデータに関するログであるかを示すログ種別表示部，データ部の長さを示すデータ長表示部，及び、当該ログデータを格納すべき履歴ログファイルを特定するＨＬＦ種別表示部から構成されている。データ部は、データベースに関するログの場合に限り、当該ログデータがどのデータベースに関するものかを示すＤＢ名表示部，当該ログデータがデータベース中のどのページに関するものかを示す更新ページ番号表示部，及び、更新後のデータを格納した更新後データ格納部から構成されている。ログデータバッファ１３２には、このようなログデータが時系列的な順番で複数個書き込まれているのである。
【００５３】
［分類部］
分類部（１１０）は、ログデータバッファ（１３２）に格納されたログデータを分類条件に従って分類して、複数の揮発型ＨＬＦバッファ（１４１ａ，１４１ｂ）に転送する。即ち、分類部（１１０）は、ログデータの制御部内のＨＬＦ種別表示部を見て、その記載内容に依り転送先を振り分けるのである。なお、データ部のＤＢ名表示部を見て、その記載内容に依り転送先を振り分けても良い。
【００５４】
［揮発型ＨＬＦバッファ］
各揮発型ＨＬＦバッファ（１４１ａ，１４１ｂ）は、分類部（１１０）により分類された各データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））毎のログデータを、一旦蓄積する。
【００５５】
［不揮発型ＨＬＦバッファ］
各不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）には、各々に対応する揮発型ＨＬＦバッファ（１１４ａ，１１４ｂ）に蓄積されていたログデータの内容が、転送され不揮発化される。このようにして不揮発化されると、システムダウンが生じてもログデータは残る。従って、トランザクションの処理と同期して、履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））にログデータを書き出す必要はなくなる。そして、揮発型ＨＬＦバッファ（１４１ａ，１４１ｂ）から不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）への転送は、Ｉ／Ｏ処理が不要であるために極めて高速に行われる。不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）から履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））への書き出しは、不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）の中身が一杯になった時点で行えば足りる。よって、履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））への書き出し回数を可能な限り減らし、Ｉ／Ｏネックを軽減させるために、不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）の容量は、できるだけ大容量にすることが望ましい。
【００５６】
［監視部］
監視部（１１７）は、不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）の中身が一杯になったかどうかを監視する。そして、揮発型ＨＬＦバッファ（１１４ａ，１１４ｂ）に蓄積されていたログデータを転送するのに十分な開き領域がない場合には、書き出し部（１１３）に対して書き出しの指示を行う。一方、揮発型ＨＬＦバッファ（１１４ａ，１１４ｂ）に蓄積されていたログデータを転送するのに十分な開き領域がある場合には、転送部（１１６）に対して転送の指示を行う。
【００５７】
ログデータ書き出し部（１１３）は、書き出しの指示があると、各不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）に記憶されているログデータを、対応する履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））に書き出させる。
【００５８】
［転送部］
転送部（１１６）は、転送の指示があると、揮発型ＨＬＦバッファ（１４１ａ，１４１ｂ）に記憶されているログデータを不揮発型ＨＬＦバッファ（１１２ａ，１１２ｂ）へ転送する。
【００５９】
［トランザクションファイル］
トランザクションファイル（１１５）は、トランザクションの開始から終了までの時系列的な情報を管理するファイルである。このトランザクションファイル（１１５）には、トランザクション完結点が記録される。このトランザクション完結点とは、トランザクションが完結した時点のことである。
【００６０】
［トランザクション完結点管理部］
トランザクション完結点管理部（１１８）は、トランザクションの完結を検知してトランザクションファイル（１１５）にトランザクション完結点を記録するとともに、データベース（１１９ａ，１１９ｂ）に対する更新データの書込の完了を検知してトランザクションファイル（１１５）からトランザクション完結点を削除する機能を有する。
【００６１】
［第１の外部記憶装置］
なお、第１の外部記憶装置（１０４ａ，１０４ｂ）は、データベース（１１９ａ，１１９ｂ）に対応して複数設けられている（図３及び図４においては、２個示されている。）。
【００６２】
＜トランザクションの処理の流れ＞
第１実施例におけるトランザクションの処理の流れを、図５に示したトランザクションの処理のフローチャートに沿って説明する。
【００６３】
ステップＳ０１は、ＴＲＮ−ＳＴＡＲＴマクロ発行である。ここでは、ＴＲＮ−ＳＴＡＲＴマクロの発行により、トランザクションが開始される。
続いて処理はステップＳ０２乃至ステップＳ０５のループに入る。このループでは、各データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））の各々に対して、順番にステップＳ０２乃至ステップＳ０４の処理を施す。即ち、１回目のループにおいては、第１のデータベース（ＤＢ−１（１１９ａ））に関する処理を行い、２回目のループにおいては、第２のデータベース（ＤＢ−２（１１９ｂ））に関する処理を行う。
【００６４】
ステップＳ０２は、データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））の読込みである。ここでは、更新すべきデータが格納されているページを、主記憶（１０１）上の更新用バッファ（１３１）に読込む。
【００６５】
ステップＳ０３は、データの更新である。ここでは、更新用バッファ（１３１）上でデータを更新する。
ステップＳ０４は、ログデータバッファ（１３２）へのログデータ転送である。ここでは、ログデータ取得部（１１１）が、更新用バッファ（１３１）に残されているデータの中から更新に関するコマンドを抽出してログデータを取得し、主記憶（１０１）上のログデータバッファ（１３２）に転送する。
【００６６】
ステップＳ０５では、全てのデータベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））に対して、ステップＳ０２乃至ステップＳ０４までの処理を行ったか否かを判定する。全データベースに対する処理が未だであれば、ステップＳ０５−１にて処理対象データベースの変更を行い、処理をステップＳ０２に戻す。これに対して、全データベースに対する処理が終了しておれば、処理をステップＳ０６に進める。
【００６７】
ステップＳ０６は、ＴＲＮ−ＥＮＤマクロ発行である。ここでは、ＴＲＮ−ＥＮＤマクロ命令を発行する。これにより、応用プログラムは、オペレーションシステム（ＯＳ）に処理を渡す。
【００６８】
続いて処理はステップＳ０７乃至ステップＳ１１のループに入る。このループでは、各データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））に関するログデータの各々に対して、順番にステップＳ０７乃至ステップＳ１０の処理を施す。即ち、１回目のループにおいては、第１のデータベース（ＤＢ−１（１１９ａ））に関するログデータに対して処理を行い、２回目のループにおいては、第２のデータベース（ＤＢ−２（１１９ｂ））に関するログデータに対して処理を行う。
【００６９】
ステップＳ０７は、ログデータの分類及び転送である。即ち、分類部１１０が、ログデータバッファ１３２に格納されているログデータの中から、処理対象となっているデータベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））に関するログデータを分類・抽出する。そして、抽出したログデータを主記憶（１０１）上のＨＬＦバッファ（１１４）に転送する。具体的には、１回目のループにおいては、第１のデータベース（ＤＢ−１（１１９ａ））に関するログデータをＨＬＦ−１のＨＬＦバッファ（１１４ａ）に転送し、２回目のループにおいては、第２のデータベース（ＤＢ−２（１１９ｂ））に関するログデータをＨＬＦ−２のＨＬＦバッファ（１１４ｂ）に転送する。
【００７０】
ステップＳ０８は、ＳＳＵ上のＨＬＦバッファ（１１２）が満杯か否かのチェックである。ここでは、監視部（１１７）により、ＳＳＵ上のＨＬＦバッファ（１１２）が満杯か否かをチェックする。具体的には、１回目のループにおいては、ＨＬＦ−１のＳＳＵ上のＨＬＦバッファ（１１２ａ）をチェックし、２回目のループにおいては、ＨＬＦ−２のＳＳＵ上のＨＬＦバッファ（１１２ｂ）をチェックする。チェック結果に応じて、満杯の場合はステップＳ０９の処理を行い、満杯でない場合はステップＳ１０の処理を行う。
【００７１】
ステップＳ０９は、履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））への書出し処理要求である。ここでは、監視部（１１７）が、ＳＳＵ上のＨＬＦバッファ（１１２）の中身を対応する履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））へ書出しする様、ログデータ書出部（１１３）に要求する。具体的には、１回目のループにおいては、ＨＬＦ−１のＳＳＵ上のＨＬＦバッファ（１１２ａ）の中身を第１の履歴ログファイル（ＨＬＦ−１（１２０ａ）に書き出し、２回目のループにおいては、ＨＬＦ−２のＳＳＵ上のＨＬＦバッファ（１１２ｂ）の中身を第２の履歴ログファイル（ＨＬＦ−２（１２０ｂ）に書き出す。履歴ログファイル（１２０ａ，１２０ｂ）への書出し処理とトランザクションの処理は、非同期に動作する。従って、一旦書き出し処理を行えば、書き出し処理の完了如何に拘らず、処理をステップＳ１０に進めることができる。
【００７２】
ステップＳ１０は、主記憶（１０１）上のＨＬＦバッファ（１１４）に格納されたログデータをＳＳＵ（１０３）上のＨＬＦバッファ（１１２）へ転送する転送処理である。ここでは、転送部１１６が、ＳＳＵ（１０３）上のＨＬＦバッファ（１１２）に主記憶（１０１）上のＨＬＦバッファ（１１４）の内容を転送して、これを不揮発化する。具体的には、１回目のループにおいては、ＨＬＦ−１のＨＬＦバッファ（１１４ａ）の中身をＨＬＦ−１のＳＳＵ上のＨＬＦバッファ（１１２ａ）に転送し、２回目のループにおいては、ＨＬＦ−２のＨＬＦバッファ（１１４ｂ）の中身をＨＬＦ−２のＳＳＵ上のＨＬＦバッファ（１１２ｂ）に転送する。主記憶（１０１）とＳＳＵ（１０３）とはバスで接続されているので、両者間のデータ転送は高速に行われる。
【００７３】
続くステップＳ１１では、全ＨＬＦの処理を終了したか否かをチェックする。全ＨＬＦの処理を終了したとは、主記憶（１０１）上の全ＨＬＦバッファ（１１４ａ，１１４ｂ）に記憶されているログデータを、ＳＳＵ（１０３）上のＨＬＦバッファ（１１２ａ，１１２ｂ）に書き出したことを意味する。全ログデータの書き出しを完了した場合は、ステップＳ１２の処理を行う。全ログデータに対する処理が未だであれば、ステップＳ１１−１にて処理対象データベースの変更を行い、処理をステップＳ０７に戻す。
【００７４】
ステップＳ１２以降の処理は、全てのログデータがＳＳＵ（１０３）上のＨＬＦバッファ（１１２ａ，１１２ｂ），又は履歴ログファイル（ＨＬＦ−１（１２０ａ），ＨＬＦ−２（１２０ｂ））へ書き込まれ、不揮発化された場合の処理である。従って、先ず、ステップＳ１２において、トランザクション完結表示の設定を行う。ここでは、トランザクション完結点管理部（１１８）が、トランザクションファイル（１１５）に、トランザクションが完結した旨の表示を設定する。表示を設定した時点をトランザクション完結点とする。
【００７５】
ステップＳ１３は、データベースの書出しである。ここでは、各データベース（ＤＢ−１（１１９ａ），ＤＢ−２（１１９ｂ））に、更新用バッファ（１３１）上で更新された後のページを書出す。
【００７６】
ステップＳ１４は、トランザクション完結表示の初期化である。ここでは、トランザクションファイル（１１５）に設定した、トランザクション完結表示を初期化する。
【００７７】
ステップＳ１５は、応用プログラムへのＴＲＮ−ＥＮＤ通知である。ここでは、応用プログラムにトランザクションが終了した旨を通知する。
【００７８】
＜ログデータの分類取得処理の詳細＞
次に、図４に基づいて、このトランザクションの処理の中でのログデータの分類取得処理をより詳細に説明する。これは、図５のステップＳ０１からステップＳ１４に対応する。
（１）  応用プログラムがＲＥＡＤマクロ命令を発行する。これにより、端末（１０６）からの要求が読み出される。このＲＥＡＤマクロ命令の処理の中で、ＴＲＮ−ＳＴＡＲＴマクロ命令が発行される（図５のステップＳ０１に対応）。ＴＲＮ−ＳＴＡＲＴマクロ命令によりトランザクションが開始される。
【００７９】
（２）  応用プログラムがＧＥＴマクロ命令を発行する。ＧＥＴマクロ命令により、必要なデータベース（ＤＢ−１（１１９ａ））を独占的に獲得する。
（３）  データベース（ＤＢ−１（１１９ａ））のデータを更新するために、データが格納されているページを主記憶（１０１）に読み込む（図５のステップＳ０２に対応）。
【００８０】
（４）  応用プログラムが、データ変更のためのＭＯＤＩＦＹマクロ命令を発行する。
（５）  主記憶（１０１）の更新用バッファ（１３１）上で、データをＡからＡ’に変更する（図５のステップＳ０３に対応）。
（６）  （５）で更新したデータに関するログデータを、主記憶（１３１）のログデータバッファ（１３２）に転送する（図５のステップＳ０４に対応）。
【００８１】
（４）’〜（６）’第２のデータベース（ＤＢ−２（１１９ｂ））に関し、ＤＢ−１と同じ操作を行う。
（７）  応用プログラムが、ＷＲＩＴＥマクロ命令を発行する。ＷＲＩＴＥマクロ命令により、端末（１０６）に対し、処理結果を通知する。ＷＲＩＴＥマクロ命令の処理の中で、ＴＲＮ−ＥＮＤマクロ命令が発行される（図５のステップＳ０６に対応）。
【００８２】
（８）  主記憶（１０１）のログデータバッファ（１３２）に書き込まれているログデータのうち、データベース（ＤＢ−１（１１９ａ））に関するログデータを抽出して、主記憶（１０１）上のＨＬＦ−１の揮発型ＨＬＦバッファ（１１４ａ）に転送する（図５のステップＳ０７に対応）。
（９）  ＳＳＵ（１０３）上の不揮発型ＨＬＦバッファ（１１２ａ）が満杯であったら、或いは他の条件により、ＳＳＵ（１０３）上の不揮発型ＨＬＦバッファ（１１２ａ）のデータを、第２の外部記憶装置（１０５ａ）内の履歴ログファイル（１２０ａ）に書出す（図５のステップＳ０８及びステップＳ０９に対応）。
【００８３】
（１０）  ＨＬＦ−１の揮発型ＨＬＦバッファ（１１４ａ）のデータを、ＳＳＵ（１０３）上の不揮発型ＨＬＦバッファ（１１２ａ）に書出して、データを不揮発化する。
（８）’〜（１０）’  第２のデータベース（ＤＢ−２（１１９ｂ））に関し、ＤＢ−１と同じ操作を行う。
（１１）  トランザクション完結表示を、トランザクションファイル（１１５）に設定する。
【００８４】
（１２）  ＤＢ更新用バッファ（１３１）内の第１のデータベース（ＤＢ−１（１１９ａ））に関連するデータを、第１のデータベース（ＤＢ−１（１１９ａ））に書出す。
（１２）’第２のデータベース（ＤＢ−２（１１９ｂ））に関し、ＤＢ−１と同じ操作を行う。
（１３）  トランザクションファイル（１１５）のトランザクション完結表示を、初期化する。
【００８５】
以上の処理の結果、ＳＳＵ（１０３）上のＨＬＦバッファ（１１２ａ，１１２ｂ）に書き込まれたログデータは、次回以後の処理で、履歴ログファイル（１２０ａ，１２０ｂ）に書き出される。
【００８６】
＜データベース（ＤＢ）の復旧操作＞
データベースの復旧操作を以下に説明する。
データベース自体が障害になった場合には、障害となったデータベースを閉塞する。これにより、データベースが復旧するまで、応用プログラムが使用できないようにする。データベース読込み時にＩ／Ｏ障害が発生した場合は、データベース障害を検出した応用プログラムに、Ｉ／Ｏ障害が発生した旨を通知する。ＤＢ書込み時にＩ／Ｏ障害が発生した場合は、データベース障害を検出した応用プログラムに、トランザクションが成立した旨を通知する。障害となったデータベースは、データベース創成時に取得しておいたバックアップデータとデータベースのログデータが取得されている履歴ログファイル（ＨＬＦ）を使用して復旧する。
【００８７】
システムダウンが発生した場合には、そのシステムダウンの発生がトランザクション完結点の前か後かで、操作を異にする。即ち、トランザクション完結点より前の時点でシステムダウンが発生した場合には、先ず、システムを再起動する。この場合は、ＤＢを更新していないので、特別な操作は必要ない。これに対して、トランザクション完結点以降の時点でシステムダウンが発生した場合には、先ずシステムを再起動させる。この際、応用プログラムの起動条件が整う前に、ＳＳＵ（１０３）上のＨＬＦバッファ内のログデータを使用して、オペレーションシステム（ＯＳ）がデータベースの書出し処理を行う。このようにして、システムダウン直前の状態に、データベースを復旧させる。
【００８８】
【実施例２】
図７及び図８は、本発明によるログデータの分類取得装置の第２実施例を示す。図示は一部省略しているが、この第２実施例は第１実施例の構成を全て含んでいる。図７では、第１実施例と同じ機能を有する構成には、同じ符号を付している。それに加えて、第２実施例は、ユーザログデータを分類取得するための構成を有している。以下、第２実施例において追加した構成の説明を行う。
【００８９】
図７に示す状態では、主記憶（１０１）上に、第１のデータベース（ＤＢ−１（１１９ａ））にアクセスするとともにユーザログを設定する応用プログラム（Ｐ−２）がロードされている。
【００９０】
主記憶（１０１）上のユーザログバッファ（１３３）は、システムチューニングのための統計情報やユーザの課金情報などのユーザ情報を、ユーザログデータとして、トランザクション毎に取得して格納するバッファである。このユーザログバッファ（１３３）内に蓄積されたユーザログデータは、ログデータ取得部（１１１）によってログデータバッファ（１３２）に転送される。ここで、ユーザログデータの構成を説明する。図９に示すように、個々のユーザログデータは、制御部とデータ部から構成されている。制御部は、当該ログデータがユーザデータに関するログであることを示すログ種別表示部，データ部の長さを示すデータ長表示部，及び、当該ログデータを格納すべき履歴ログファイルを特定するＨＬＦ種別表示部から構成されている。データ部には、データベースユーザが任意に設定したデータ内容が記載される。ログデータバッファ１３２には、このようなユーザログデータ及びＤＢ用ログデータが、時系列的な順番で複数個書き込まれているのである。
【００９１】
分類部（１１０）は、ログデータバッファ（１３２）に格納されたログデータを分類条件に従って分類して、ＤＢ用のＨＬＦバッファ（１１４ａ）又はユーザログ用のＨＬＦバッファ（１１４ｃ）に転送する。即ち、分類部（１１０）は、ログデータの制御部内のＨＬＦ種別表示部を見て、その記載内容に依り転送先を振り分けるのである。なお、制御部のログ種別表示部又はデータ部のＤＢ名表示部の有無を見て、その記載内容に依り転送先を振り分けても良い。
【００９２】
主記憶（１０１）上のユーザログ用のＨＬＦバッファ（１４１ｃ）は、分類部（１１０）により分類されたユーザログデータを、一旦蓄積する。
ユーザログ用のＳＳＵ上のＨＬＦバッファ（１１２ｃ）には、主記憶（１０１）上のユーザログ用のＨＬＦバッファ（１１４ｃ）に蓄積されていたログデータの内容が、転送部（１１６）により転送され、不揮発化される。このようにして不揮発化されると、システムダウンが生じてもログデータは残る。従って、トランザクションのトランザクションの処理と同期して、ユーザログ用の履歴ログファイル（１２０ｃ）にログデータを書き出す必要はなくなる。そして、ユーザログ用のＨＬＦバッファ（１４１ｃ）から不揮発型ＨＬＦバッファ（１１２ｃ）への転送は、Ｉ／Ｏ処理が不要であるために極めて高速に行われる。不揮発性ＨＬＦバッファ（１１２ｃ）からユーザログ用履歴ログファイル（１２０ｃ）への書き出しは、不揮発型ＨＬＦバッファ（１１２ｃ）の中身が一杯になった時点で行えば足りる。よって、ユーザログファイル（１２０ｃ）への書き出し回数を可能な限り減らし、Ｉ／Ｏネックを軽減させるために、不揮発型ＨＬＦバッファ（１１２ｃ）の容量は、できるだけ大容量にすることが望ましい。
【００９３】
このユーザログ用のＳＳＵ上のＨＬＦバッファ（１１２ｃ）の使用量は、監視部（１１７）により監視される。そして、監視部（１１７）により使用量が一杯であると判断されると、ユーザログ用のＳＳＵ上のＨＬＦバッファ（１１２ｃ）の中身は、ログデータ書き出し部（１１３）によりユーザログ用ＨＬＦ（１２０ｃ）に書き出される。
【００９４】
ユーザログデータが最終的に格納されるユーザログ用履歴ログファイル（１２０ｃ）は、第２の外部記憶装置（１０５ｃ）上に構築されている。
【００９５】
＜トランザクションの処理の流れ＞
第２実施例におけるトランザクションの処理の流れを、図８に示したトランザクションの処理のフローチャートに沿って説明する。
【００９６】
ステップＳ２１は、ＴＲＮ−ＳＴＡＲＴマクロ発行である。ここでは、ＴＲＮ−ＳＴＡＲＴマクロの発行により、トランザクションが開始される。
【００９７】
ステップＳ２２は、データベース（ＤＢ−１（１１９ａ））の読込みである。ここでは、更新すべきデータが格納されているページを、主記憶（１０１）上の更新用バッファ（１３１）に読込む。
【００９８】
ステップＳ２３は、データの更新である。ここでは、更新用バッファ（１３１）上でデータを更新する。
ステップＳ２４は、ログデータバッファ（１３２）へのログデータ転送である。ここでは、ログデータ取得部（１１１）が、更新用バッファ（１３１）に残されているデータの中からデータベース更新に関するコマンドを抽出してＤＢ用のログデータを取得し、主記憶（１０１）上のログデータバッファ（１３２）に転送する。
【００９９】
ステップＳ２５は、トレース情報のユーザログへの設定である。すなわち、データベース（ＤＢ−１（１１９ａ））の更新をトレースして得たトレース情報を、ユーザログバッファ（１３３）に設定する。
【０１００】
ステップＳ２６は、ログデータバッファ（１３２）へのユーザログデータ転送である。ここでは、ログデータ取得部（１１１）が、ユーザログバッファ（１３３）に残されているデータの中からユーザログデータを取得し、主記憶（１０１）上のログデータバッファ（１３２）に転送する。
【０１０１】
ステップＳ２７は、ＴＲＮ−ＥＮＤマクロ発行である。ここでは、ＴＲＮ−ＥＮＤマクロ命令を発行する。これにより、応用プログラムは、オペレーションシステム（ＯＳ）に処理を渡す。
【０１０２】
ステップＳ２８は、ログデータの分類及び転送である。即ち、分類部１１０が、ログデータバッファ１３２に格納されているログデータの中から、データベース（ＤＢ−１（１１９ａ））に関するログデータを分類・抽出する。そして、抽出したＤＢ用のログデータを、主記憶（１０１）上のＨＬＦバッファ（１１４ａ）に転送する。
【０１０３】
ステップＳ２９は、ＤＢ用のＳＳＵ上のＨＬＦバッファ（１１２ａ）が満杯か否かのチェックである。ここでは、監視部（１１７）により、ＳＳＵ上のＨＬＦバッファ（１１２）が満杯か否かをチェックする。監視の結果、満杯であれば処理をステップＳ３０に進め、満杯でなければ処理をステップＳ３１に進める。
【０１０４】
ステップＳ３０は、ＤＢ用の履歴ログファイル（１２０ａ）への書出し処理要求である。ここでは、監視部（１１７）が、ＤＢ用のＳＳＵ上のＨＬＦバッファ（１１２ａ）の中身をＤＢ用の履歴ログファイル（１２０ａ）へ書出しする様、ログデータ書出部（１１３）に要求する。履歴ログファイル（１２０ａ）への書出し処理とトランザクションの処理は、非同期に動作する。従って、一旦書き出し処理を行えば、書き出し処理の完了如何に拘らず、処理をステップＳ３１に進めることができる。
【０１０５】
ステップＳ３１は、主記憶（１０１）上のＨＬＦバッファ（１１４ａ）に格納されたログデータをＳＳＵ（１０３）上のＨＬＦバッファ（１１２ａ）へ転送する転送処理である。ここでは、転送部１１６が、ＤＢ用のＳＳＵ上のＨＬＦバッファ（１１２ａ）に主記憶（１０１）上のＤＢ用のＨＬＦバッファ（１１４ａ）の内容を転送して、これを不揮発化する。主記憶（１０１）とＳＳＵ（１０３）とはバスラインで接続されているので、両者間のデータ転送は高速に行われる。
【０１０６】
ステップＳ３２は、ログデータの分類及び転送である。即ち、分類部１１０が、ログデータバッファ１３２に格納されているログデータの中から、ユーザログデータを分類・抽出する。そして、抽出したユーザログデータを、主記憶（１０１）上のＨＬＦバッファ（１１４ｃ）に転送する。
【０１０７】
ステップＳ３３は、ＳＳＵ上のＨＬＦバッファ（１１２）が満杯か否かのチェックである。ここでは、監視部（１１７）により、ユーザログ用のＳＳＵ上のＨＬＦバッファ（１１２ｃ）が満杯か否かをチェックする。監視の結果、満杯であれば処理をステップＳ３４に進め、満杯でなければ処理をステップＳ３５に進める。
【０１０８】
ステップＳ３４は、ユーザログ用の履歴ログファイル（１２０ｃ）への書出し処理要求である。ここでは、監視部（１１７）が、ユーザログ用のＳＳＵ上のＨＬＦバッファ（１１２ｃ）の中身をユーザログ用の履歴ログファイル（１２０ｃ）へ書出しする様、ログデータ書出部（１１３）に要求する。履歴ログファイル（１２０ｃ）への書出し処理とトランザクションの処理は、非同期に動作する。従って、一旦書き出し処理を行えば、書き出し処理の完了如何に拘らず、処理をステップＳ３５に進めることができる。
【０１０９】
ステップＳ３５は、主記憶（１０１）上のＨＬＦバッファ（１１４ｃ）に格納されたログデータをＳＳＵ（１０３）上のＨＬＦバッファ（１１２ｃ）へ転送する転送処理である。ここでは、転送部１１６が、ユーザデータ用のＳＳＵ上のＨＬＦバッファ（１１２ｃ）に主記憶（１０１）上のユーザデータ用のＨＬＦバッファ（１１４ｃ）の内容を転送して、これを不揮発化する。主記憶（１０１）とＳＳＵ（１０３）とはバスラインで接続されているので、両者間のデータ転送は高速に行われる。
【０１１０】
ステップＳ３６は、トランザクション完結表示の設定である。ここでは、トランザクション完結点管理部（１１６）が、トランザクションファイル（１１５）に、トランザクションが完結した旨の表示を設定する。表示を設定した時点をトランザクション完結点とする。
ステップＳ３７は、データベースの書出しである。ここでは、データベース（ＤＢ−１（１１９ａ））に、更新用バッファ（１３１）上で更新された後のページを書出す。
【０１１１】
ステップＳ３８は、トランザクション完結表示の初期化である。ここでは、トランザクションファイル（１１５）に設定した、トランザクション完結表示を初期化する。
【０１１２】
ステップＳ３９は、応用プログラムへのＴＲＮ−ＥＮＤ通知である。ここでは、応用プログラムにトランザクションが終了した旨を通知する。
【０１１３】
＜ログデータの分類取得処理の詳細＞
次に、図７に基づいて、このトランザクションの処理の中でのログデータの分類取得処理を、より詳細に説明する。これは、図８のステップＳ２１からステップＳ３８に対応する。
（１）  応用プログラムがＲＥＡＤマクロ命令を発行する。これにより、端末（１０６）からの要求が読み出される。このＲＥＡＤマクロ命令の処理の中で、ＴＲＮ−ＳＴＡＲＴマクロ命令が発行される（図８のステップＳ２１に対応）。ＴＲＮ−ＳＴＡＲＴマクロ命令によりトランザクションが開始される。
【０１１４】
（２）  応用プログラムがＧＥＴマクロ命令を発行する。ＧＥＴマクロ命令により、データベース（ＤＢ−１（１１９ａ））を独占的に獲得する。
（３）  データベース（ＤＢ−１（１１９ａ））のデータを更新するために、データが格納されているページを主記憶（１０１）に読み込む（図８のステップＳ２２に対応）。
（４）  応用プログラムが、データ変更のためのＭＯＤＩＦＹマクロ命令を発行する。
【０１１５】
（５）  主記憶（１０１）の更新用バッファ（１３１）上で、データをＡからＡ’に変更する（図８のステップＳ２３に対応）。
（６）  （５）で更新したデータに関するＤＢ用のログデータを、主記憶（１３１）のログデータバッファ（１３２）に転送する（図８のステップＳ２４に対応）。
（７）  ＤＢを更新したトレース情報をユーザログバッファ（１３３）に設定する（図８のステップＳ２５に対応）。
（８）  ユーザログデータ取得マクロ命令を発行する。
（９）  ユーザログがログデータバッファ（１３２）に転送される（図８のステップＳ２６に対応）。
【０１１６】
（１０）  応用プログラムが、ＷＲＩＴＥマクロ命令を発行する。ＷＲＩＴＥマクロ命令により、端末（１０６）に対し、処理結果を通知する。ＷＲＩＴＥマクロ命令の処理の中で、ＴＲＮ−ＥＮＤマクロ命令が発行される（図８のステップＳ２７に対応）。
（１１）  主記憶（１０１）のログデータバッファ（１３２）に書き込まれているログデータのうち、ＤＢ用のログデータを抽出して、主記憶（１０１）上にあるＤＢ用のＨＬＦバッファ（１１４ａ）に転送する（図８のステップＳ２８に対応）。
【０１１７】
（１２）  ＤＢ用のＳＳＵ上の不揮発型ＨＬＦバッファ（１１２ａ）が満杯であったら、或いは他の条件により、ＤＢ用のＳＳＵ上の不揮発型ＨＬＦバッファ（１１２ａ）のデータを、第２の外部記憶装置（１０５ａ）内のＤＢ用の履歴ログファイル（１２０ａ）に書出す（図８のステップＳ２９及びステップＳ３０に対応）。
（１３）  ＤＢ用のＨＬＦバッファ（１１４ａ）のデータを、ＤＢ用のＳＳＵ上の不揮発型ＨＬＦバッファ（１１２ａ）に書出して、データを不揮発化する（図８のステップＳ３１に対応）。
【０１１８】
（１１）’主記憶（１０１）のログデータバッファ（１３２）に書き込まれているログデータのうち、ユーザログデータを抽出して、主記憶（１０１）上にあるユーザログ用のＨＬＦバッファ（１１４ｃ）に転送する（図８のステップＳ３２に対応）。
（１２）’ユーザログ用のＳＳＵ上の不揮発型ＨＬＦバッファ（１１２ｃ）が満杯であったら、或いは他の条件により、ユーザログ用のＳＳＵ上の不揮発型ＨＬＦバッファ（１１２ｃ）のデータを、第２の外部記憶装置（１０５ａ）内のユーザログ用の履歴ログファイル（１２０ｃ）に書出す（図８のステップＳ３３及びステップＳ３４に対応）。
【０１１９】
（１３）’ユーザログ用のＨＬＦバッファ（１１４ｃ）のデータを、ユーザログ用のＳＳＵ上の不揮発型ＨＬＦバッファ（１１２ｃ）に書出して、データを不揮発化する（図８のステップＳ３５に対応）。
（１４）  トランザクション完結表示を、トランザクションファイル（１１５）に設定する。
（１５）  ＤＢ更新用バッファ（１３１）内のデータベース（ＤＢ−１（１１９ａ））に関連するデータを、データベース（ＤＢ−１（１１９ａ））に書出す。
【０１２０】
（１６）  トランザクションファイル（１１５）のトランザクション完結表示を、初期化する。
以上の処理の結果、ＳＳＵ（１０３）上のＨＬＦバッファ（１１２ａ，１１２ｃ）に書き込まれたログデータは、次回以後の処理で、履歴ログファイル（１２０ａ，１２０ｃ）に書き出される。
【０１２１】
【発明の効果】
（１）    本発明により、履歴ログファイルを複数設置して、履歴ログファイルの書出し処理の負荷を分散できる。よって、従来のログデータ取得処理方式で問題であった履歴ログファイルのＩ／Ｏネックを解消できる。これより、トランザクション性能の飛躍的向上が計れ、大規模なＤＢシステムの構築が可能になる。
【０１２２】
（２）    業務の規模が大きくなり、業務追加を行うと、履歴ログファイルのＩ／Ｏネックが原因で、トランザクション性能の低下を招いていた。しかし、本発明により、履歴ログファイルを追加するだけで、履歴ログファイルのＩ／Ｏネックによるトランザクション性能の低下を招かずに、業務追加を行うことが可能となる。
【０１２３】
（３）    さらに、ログデータを分類取得することにより、以下のサービスの提供も可能となる。
第１に、データベース（群）単位のＤＢ復旧操作である。即ち、従来は、一つの履歴ログファイルの全てがＤＢ復旧のために必須となる入力データであった。しかし、データベース（群）毎にログデータを取得するとこにより、データベース復旧のための入力データを、データベース（群）毎に独立して管理することが可能となった。また、復旧対象ＤＢのログデータの検索処理時間が短くなり、ＤＢ復旧操作の時間を短縮できる。
【０１２４】
第２に、ユーザデータの事前分類である。即ち、ユーザデータとログデータを分類して取得することにより、抽出操作が不必要なユーザデータ取得機能を実現できる。
【図面の簡単な説明】
【図１】本発明の原理図１
【図２】本発明の原理図２
【図３】第１実施例によるデータベースシステムの全体構成ブロック図
【図４】図３を更に詳細に示したブロック図
【図５】第１実施例によるトランザクションの処理フローを示した図
【図６】データベース用ログデータの構成説明図
【図７】第２実施例によるデータベースシステムを詳細に示したブロック図
【図８】第２実施例によるトランザクションの処理フローを示した図
【図９】ユーザログデータの構成説明図
【図１０】従来のシステム概略図
【図１１】従来のログデータ取得方式を示した図
【符号の説明】
１０１    主記憶装置
１０３    不揮発メモリ
１１０    分類手段
１１１    ログデータ取得手段
１１２    （不揮発型）履歴ログファイル・バッファ
１１３    ログデータ書出手段
１１４    揮発型履歴ログファイル・バッファ
１１５    トランザクションファイル
１１６    トランザクション完結点管理手段
１１９    データベース
１２０    履歴ログファイル
１３１    データベース更新用バッファ
１３２    ログデータファイル
【図１】
0003594248.tif 000002
【図２】
0003594248.tif 000003
【図３】
0003594248.tif 000004
【図４】
0003594248.tif 000005
【図５】
0003594248.tif 000006
【図６】
0003594248.tif 000007
【図７】
0003594248.tif 000008
【図８】
0003594248.tif 000009
【図９】
0003594248.tif 000010
【図１０】
0003594248.tif 000011
【図１１】
0003594248.tif 000012