(57)【特許請求の範囲】
【請求項１】
伝送路を介して接続された一対の計算機とデータベースとジャーナルファイルとを備え、
前記データベースを使用している一方の計算機が前記データベースの記憶データを更新する場合、更新データを一旦前記ジャーナルファイルに書込んだ後に、このジャーナルファイルに書込んだ更新データで前記データベースの記憶データを更新し、更新完了情報を前記ジャーナルファイルに書込み、
この一方の計算機に異常が生じた場合、他方の計算機で前記一方の計算機から前記ジャーナルファイルに書込まれた更新データのうち、前記データベースのデータ更新に未使用の更新データで前記データベースの記憶データを更新し、その後に前記他方の計算機が前記データベースの使用を開始する二重化計算機システムにおいて、
前記一方の計算機は、
前記更新データ及び更新完了情報を前記ジャーナルファイルに書込む毎に、この更新データ及び更新完了情報を前記他方の計算機へ転送する転送手段と、
前記ジャーナルファイルに更新データを書込んだときに、前記更新データを前記一方の計算機のリカバリーテーブル内に未使用の更新データとして書込み、前記ジャーナルファイルに更新完了情報を書込んだときに、前記更新完了情報で指定される、前記一方の計算機のリカバリーテーブルに内に記憶されている未使用の更新データをクリアする第１のリカバリーテーブル更新手段とを有し、
前記他方の計算機は、
前記一方の計算機から更新データ及び更新完了情報を受信し、
受信したデータが更新データの場合は、前記他方の計算機のリカバリーテーブル内に、前記更新データを未使用の更新データとして書込み、
受信したデータが更新完了情報の場合は、前記更新完了情報で指定される、前記他方の計算機のリカバリーテーブルに内に記憶されている未使用の更新データをクリアする第２のリカバリーテーブル更新手段と、
前記一方の計算機に異常が生じた場合、前記他方の計算機のリカバリーテーブルに記憶されている未使用の更新データで前記データベースの記憶データを更新するデータベース更新手段とを有する
ことを特徴とする二重化計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークにより複数の計算機が相互接続された分散処理システムの一部を構成する一対の計算機とデータベースとからなる二重化計算機システムに係わり、特に、一方の計算機がデータベースを使用して処理している時にこの一方の計算機に異常が生じた場合に、他方の計算機がこのデータベースを引継いで処理を継続する二重化計算機システムに関する。
【０００２】
【従来の技術】
複数の計算機が相互接続された分散処理システムにおいては、各計算機はそれぞれ自己に与えられた業務を実行する。そして、任意の１台の計算機に異常が生じて業務が中断することを未然に防止するために、各計算機に対して該当計算機の業務を代行する他の計算機を予め決めておき、該当計算機に異常が生じた場合には指定された他の計算機が業務を代行して実行するようにしている。このような関係を有した一対の計算機からなるシステムを二重化計算機システムと称する。
【０００３】
各計算機が行う業務のなかにはデータベースを使用した業務もある。このデータベースを使用した業務とはデータベースに記憶されている情報を読出て使用する業務の他に、このデータベースの記憶内容を更新する業務もある。このようなデータベースを用いて業務を行う計算機に異常が発生した場合は、この計算機の業務を代行する他の計算機は異常が発生した計算機からデータベースを引継いで、この引継いだデータベースを用いて業務を開始する。
【０００４】
このような一対の計算機とデータベースとを備えた二重化計算機システムは例えば図４に示すように構成されている。
伝送路１に対して一対の計算機２ａ，２ｂが接続されている。各計算機２ａ，２ｂ内には、各計算機２ａ，２ｂ個別のユーザアプリケーション（アプリケーション・プログラム）と各計算機２ａ，２ｂで共通するユーザアプリケーションからなる複数のユーザアプリケーション３ａ，３ｂを記憶するプログラムメモリ４ａ，４ｂと、データベース管理部７ａ，７ｂとが設けられている。そして、一方の計算機２ａ内にはデータベース５とジャーナルファイル６とが組込まれている。
【０００５】
このデータベース５とジャーナルファイル６はいずれの計算機２ａ，２ｂにも組込むことが可能であり、各計算機２ａ，２ｂに組込まれたデータベース管理部７ａ，７ｂにて書込処理及び読出処理が実施される。但し、同時に両方のデータベース管理部７ａ，７ｂからアクセスすることはできない。
【０００６】
各データベース管理部７ａ，７ｂは、ジャーナルファイル書込部８ａ，８ｂと、データベース書込部９ａ，９ｂと、リカバリーテーブル作成部１０ａ，１０ｂと、リカバリーテーブル１１ａ，１１ｂとで構成されている。なお、このデータベース管理部７ａ，７ｂ内には、データベース５の記憶内容を読出す図示しないデータベース読出部も組込まれている。
【０００７】
ジャーナルファイル６内には、図５（ａ）に示すように、データベース５に対する［Ｄ1 →Ａ（領域Ｄ1 のデータをデータＡに更新）］，［Ｄ2 →Ｂ］等の更新データ及び［（Ｄ1 →Ａ）完了］等の更新完了情報が発生順に時系列的に書込まれる。
【０００８】
リカバリーテーブル１１ａ，１１ｂ内には、図５（ｂ）に示すように、ある特定時点におけるジャーナルファイル６の記憶内容を整理した状態の更新データが書込まれる。すなわち、ジャーナルファイル６内には更新完了情報にてデータベース５に対する記憶内容の更新済みであると判明している更新データも存在するので、これらの処理済みの更新データを破棄して、未処理の更新データのみが記憶される。図５の例においては、［Ｄ2 →Ｂ］及び［Ｄ3 →Ｅ］の未処理の更新データのみがリカバリーテーブル１１ａ，１１ｂ内に書込まれる。
【０００９】
このような計算機２ａ，２ｂにおいてユーザアプリケーション３ａ．３ｂがデータベース５の記憶内容を更新する場合の処理手順を説明する。
今、データベース５を使用中の一方の計算機２ａにおける一つのユーザアプリケーション３ａがデータベース５の一つの領域Ｄ1 のデータをデータ［Ａ］に更新する更新要求をデータベース管理部７ａのジャーナルファイル書込部８ａへ更新データ［Ｄ1 →Ａ］として送出する。すなわち、ユーザアプリケーション３ａは更新データ［Ｄ1 →Ａ］をデータベース管理部７ａへ送出した時点で、データベース５に対する更新処理は終了したと判断して、次の業務を開始する。
【００１０】
データベース管理部７ａのジャーナルファイル書込部８ａは更新データ［Ｄ1 →Ａ］をデータベース書込部９ａへ送出するとともに、この更新データ［Ｄ1 →Ａ］を、図５（ａ）に示すように、ジャーナルファイル６に時系列的に書込む。データベース書込部９ａは更新データ［Ｄ1 →Ａ］に基づいてデータベース５の領域Ｄ1 のデータをデータ［Ａ］へ書替える。データベース書込部９ａは更新データ［Ｄ1 →Ａ］に対する更新処理（書替処理）が終了すると、更新完了情報［（Ｄ1 →Ａ）完了］をジャーナルファイル６に時系列的に書込む。
【００１１】
この場合、ユーザアプリケーション３ａの更新データ［Ｄ1 →Ａ］の出力処理と、データベース書込部９ａのデータベース５に対する更新処理（書替処理）とは非同期であるので、実際の更新処理（書替処理）が遅れる場合もある。
【００１２】
そして、例えば、一定期間経過した時点で、リカバリテーブル作成部１０ａが起動して、この時点におけるジャーナルファイル６の記憶内容に基づいて前述した手法でリカバリーテーブル１１ａを作成する。そして、このリカバリーテーブル１１ａに記憶された未処理の更新データを用いてデータベース５をまとめて更新する。そして、ジャーナルファイル６及びリカバリーテーブル１１ａの記憶内容をクリアする。
【００１３】
このようなデータベース５に対する更新処理を実施する計算機２ａに異常が生じて、データベース５を使用した業務が実行できなくなると、この計算機２ａはデータベース５を使用した業務を他方の計算機２ｂへ移管する。
【００１４】
データベース５を使用した業務を移管された計算機２ｂのデータベース管理部７ｂは、データベース５及びジャーナルファイル６に対するアクセスが可能となる。そして、データベース管理部７ｂのリカバリテーブル作成部１０ｂが起動して、この時点におけるジャーナルファイル６の記憶内容に基づいて前述した手法で自己のリカバリーテーブル１１ｂを作成する。そして、この自己のリカバリーテーブル１１ｂに記憶された未処理の更新データを用いてデータベース５をまとめて更新する。そして、ジャーナルファイル６及びリカバリーテーブル１１ｂの記憶内容をクリアする。
【００１５】
以上のデータベース管理部７ｂにおけるデータベース５の更新処理が終了すると、計算機２ｂの各ユーザアプリケーション３ｂはデータベース５を使用した業務処理を開始する。
【００１６】
【発明が解決しようとする課題】
しかしながら、図４に示す二重化計算機システムにおいても、まだ改良すべき次のような課題があった。
すなわち、計算機２ａの各ユーザアプリケーション３ａが頻繁にデータベース５に対する更新要求を発した場合、ジャーナルファイル６に多数の更新データ及び更新完了情報が書込まれる。計算機２ａにおけるリカバリーテーブル１１ａの作成直前に計算機２ａに異常が生じた場合は、ジャーナルファイル６に多数の更新データ及び更新完了情報が残存しているので、計算機２ｂのデータベース管理部７ｂのリカバリテーブル作成部１０ｂがリカバリーテーブル１１ｂを作成するための処理時間が増大する。
【００１７】
その結果、計算機２ａに異常が発生して、この計算機２ａにおけるデータベース５を使用した業務が、計算機２ｂに継承されて、計算機２ｂがデータベース５を使用した業務が開始されるまでの所要時間が長くなり、業務停止時間が長期化する懸念がある、
本発明はこのような事情に鑑みてなされたものであり、リカバリーテーブルを一度に作成するのではなくて、更新データ及び更新完了情報の発生する都度、リカバリーテーブルの記憶内容を更新していくことにより、データベースを使用している計算機に異常が発生した時に他の計算機にデータベースを使用する業務を短時間で継承でき、業務の停止時間を大幅に短縮でき、システム全体の信頼性を向上できる二重化計算機システムを提供することを目的とする。
【００１８】
【課題を解決するための手段】
本発明は、伝送路を介して接続された一対の計算機とデータベースとジャーナルファイルとを備え、前記データベースを使用している一方の計算機が前記データベースの記憶データを更新する場合、更新データを一旦前記ジャーナルファイルに書込んだ後に、このジャーナルファイルに書込んだ更新データで前記データベースの記憶データを更新し、更新完了情報を前記ジャーナルファイルに書込み、この一方の計算機に異常が生じた場合、他方の計算機で前記一方の計算機から前記ジャーナルファイルに書込まれた更新データのうち、前記データベースのデータ更新に未使用の更新データで前記データベースの記憶データを更新し、その後に前記他方の計算機が前記データベースの使用を開始する二重化計算機システムに適用される。
【００１９】
そして、上記課題を解消するために、本発明においては、一方の計算機に対して、前記更新データ及び更新完了情報を前記ジャーナルファイルに書込む毎に、この更新データ及び更新完了情報を前記他方の計算機へ転送する転送手段と、前記ジャーナルファイルに更新データを書込んだときに、前記更新データを前記一方の計算機のリカバリーテーブル内に未使用の更新データとして書込み、前記ジャーナルファイルに更新完了情報を書込んだときに、前記更新完了情報で指定される、前記一方の計算機のリカバリーテーブルに内に記憶されている未使用の更新データをクリアする第１のリカバリーテーブル更新手段とを付加している。
また、他方の計算機に対して、前記一方の計算機から更新データ及び更新完了情報を受信し、受信したデータが更新データの場合は、前記他方の計算機のリカバリーテーブル内に、前記更新データを未使用の更新データとして書込み、受信したデータが更新完了情報の場合は、前記更新完了情報で指定される、前記他方の計算機のリカバリーテーブルに内に記憶されている未使用の更新データをクリアする第２のリカバリーテーブル更新手段とを付加している。
【００２０】
このように構成された二重化計算機システムにおいては、データベースを使用している一方の計算機が正常状態においても、ジャーナルファイルに対する更新データ及び更新完了情報の書込みが発生する都度、この更新データ及び更新完了情報は他方の計算機へ転送される。他方の計算機はこの更新データ及び更新完了情報を用いてリカバリーテーブルの記憶内容を最新値に更新している。
【００２１】
したがって、データベースを使用している一方の計算機に異常が発生して、データベースを使用した業務が遂行できなくなると、他方の計算機が常に最新値に更新されているリカバリーテーブルの記憶内容を用いてデーターベースを直ちに更新する。すなわち、この他方の計算機は一方の計算機に異常が発生した時点で、リカバリーテーブルを作成する必要がない。
【００２２】
その結果、データベースを使用している計算機に異常が発生した時に他の計算機にデータベースを使用する業務を短時間で継承でき、業務の停止時間を極力短縮できる。
【００２７】
【発明の実施の形態】
以下、本発明の一実施形態を図面を用いて説明する。
図１は本発明の一実施形態の二重化計算機システムの概略構成を示すブロック図である。図４に示す従来の二重化計算機システムと同一部分には同一符号が付してある。したがって、重複する部分の詳細説明は省略されている。
【００２８】
伝送路１に対して一対の計算機２ａ，２ｂが接続されている。各計算機２ａ，２ｂ内には、複数のユーザアプリケーション３ａ，３ｂを記憶するプログラムメモリ４ａ，４ｂと、データベース管理部７ａ，７ｂとが設けられている。そして、一方の計算機２ａ内にはデータベース５とシャーナルファイル６とが組込まれている。
【００２９】
このデータベース５とジャーナルファイル６はいずれの計算機２ａ，２ｂに組込むことが可能であり、各計算機２ａ，２ｂに組込まれたデータベース管理部７ａ，７ｂにて書込処理及び読出処理が実施される。但し、両方のデータベース管理部７ａ，７ｂから同時にアクセスすることはできない。
【００３０】
データベース５を使用中の一方の計算機２ａのデータデータベース管理部７ａ内には、ジャーナルファイル書込部８ａ、データベース書込部９ａ、ジャーナル送信部１２、リカバリーテーブル更新部１３ａ、リカバリーテーブル１１ａ、データベース更新部１４ａ，リカバリーテーブル送信部１５等が組込まれている。
【００３１】
データベース５を使用中でない他方の計算機２ｂのデータデータベース管理部７ｂ内には、ジャーナルファイル書込部８ｂ、データベース書込部９ｂ、ジャーナル受信部１６、リカバリーテーブル更新部１３ｂ、リカバリーテーブル１１ｂ、データベース更新部１４ｂ，リカバリーテーブル送信部１７等が組込まれている。
【００３２】
前記ジャーナルファイル６は、図５（ａ）に示したように、各更新データと更新完了情報が時系列的に書込まれる。また、各リカバリーテーブル１１ａ，１１ｂ内には、図５（ｂ）に示したように、現在時点における未使用（未処理）の各更新データが書込まれる。そして、この実施形態においては、更新完了情報が入力されると。この更新完了情報が指定する未使用（未処理）の更新データがこのリカバリーテーブル１１ａ，１１ｂ内からクリアされる。すなわち。常時最新の未使用（未処理）の各更新データが記憶保持される。
【００３３】
そして、データベース５を使用中の一方の計算機２ａのデータベース管理部７ａは図２に示す流れ図に従って、データベース５に対する管理業務を実行する。
いずれかのユーザアプリケーション３ｂからデータベース５に対する更新データを指定した更新要求が入力すると（Ｐ１）、ジャーナルファイル書込部８ａはジャーナルファイル６へ更新データを時系列的に書込むと共に、この更新データをデータベース書込部９ａへ送信する（Ｐ２）。次に、ジャーナル送信部１２は、このジャーナルファイル６へ書込んだ更新データを伝送路１を介して他方の計算機２ｂへ転送する（Ｐ３）。さらに、リカバリーテーブル更新部１２は、このジャーナルファイル６へ書込んだ更新データを用いて、リカバリーテーブル１１ａの記憶内容を更新する（Ｐ４）。なお、更新データの場合は、この更新データがリカバリーテーブル１１ａ内に未使用（未処理）の更新データとして書込まれる。
【００３４】
そして、Ｐ５にて、データベース書込部９ａがデータベース５の記憶内容を入力した更新データで書替（更新）えると、データベース書込部９ａはジャーナルファイル６へ更新完了情報を書込む（Ｐ６）。次に、ジャーナル送信部１２は、このジャーナルファイル６へ書込んだ更新完了情報を伝送路１を介して他方の計算機２ｂへ転送する（Ｐ３）。さらに、リカバリーテーブル更新部１３ａは、このジャーナルファイル６へ書込んだ更新完了情報を用いて、リカバリーテーブル１１ａの記憶内容を更新する（Ｐ４）。なお、更新完了情報の場合は、リカバリーテーブル１１ａ内に記憶されている更新完了情報の指定する未使用（未処理）の更新データをクリアする（第１のリカバリーテーブル更新手段）。
【００３５】
また、例えば、規定の時間が経過すると（Ｐ７）、データベース更新部１４ａが起動して、リカバリーテーブル１１ａ内に記憶されてる未使用（未処理）の更新データでデータベース５の記憶内容を更新する（Ｐ８）。その後、ジャーナルファイル６及びリカバリーテーブル１１ａをクリアする。
【００３６】
また、Ｐ１０にて、他方の計算機２ｂに対する更新データと更新完了情報の送信異常が復旧すると、リカバリーテーブル送信部１５が起動して、自己の現在時点におけるリカバリーテーブル１１ａの記憶内容を他方の計算機２ｂへ送信する。
【００３７】
このように、データベース５を使用中の計算機２ａは、ジャーナルファイル６に対する更新データ及び更新終了情報の書込みが発生する都度、この更新データ及び更新終了情報を他方の計算機２ｂへ送信している。さらに、この計算機２ａは、自己内に設けられたリカバリーテーブル１１ａの記憶内容をジャーナルファイル６に対する更新データ及び更新終了情報の書込みが発生する都度、この更新データ及び更新終了情報で最新の記憶内容に書替えている。そして、送信異常か復旧した時点で、このリカバリーテーブル１１ａの記憶内容を他方の計算機２ｂへ送信している。
【００３８】
また、他方の計算機２ｂのデータベース管理部７ｂは図３に示す流れ図に従って、データベース５に対する管理業務を実行する。
データベース５を使用中の計算機２ａから伝送路１を介してジャーナルファイル６に書込んだ更新データ又は更新終了情報をジャーナル受信部１６が受信すると（Ｑ１）、リカバリーテーブル更新部１３ｂが起動して、この受信した更新データ又は更新終了情報で自己のリカバリーテーブル１１ｂの記憶内容を前述した手法で更新する（Ｑ２）（第２のリカバリーテーブル更新手段）。
【００３９】
また、データベース５を使用中の計算機２ａとの間に通信異常が発生して、この通信異常が復旧すると（Ｑ３）、計算機２ａからリカバリーテーブル１１ａの記憶内容をリカバリーテーブル受信部１７が受信するのを待つ（Ｑ４）。計算機２ａのリカバリーテーブル１１ａの記憶内容が受信されると、自己のリカバリーテーブル１１ｂの記憶内容をこの受信した計算機２ａのリカバリーテーブル１１ａの記憶内容に書替える（Ｑ５）。
【００４０】
そして、Ｑ６にてデータベース５を使用中の計算機２ａに異常が発生して、データベース５を使用した業務の実行が不可能になると、デーテベース更新部１４ｂが起動して、自己のリカバリーテーブル１１ｂの記憶内容を用いてデータベース５の未更新のデータを更新する（Ｑ７）。その後、自己のリカバリーテーブル１１ｂの記憶内容及びジャーナルファイル６の記憶内容をクリアする（Ｑ８）。
【００４１】
以上の使用計算機の変更に伴うデータベース５の更新処理が終了すると、この計算機２ｂは計算機２ａからデータベース５の引継処理を実施する（Ｑ９）。そして、計算機２ａからデータベース５を使用した業務の引継ぎを完了して、この計算機２ｂはデータベース５を使用した業務を開始する（Ｏ１０）。
【００４２】
このように、データベース５を使用中でない計算機２ｂは、データベース５を使用中の計算機２ａから更新データ及び更新終了情報を受信すると、この更新データ及び更新終了情報で自己のリカバリーテーブル１１ｂの記憶内容を最新値に更新している。そして、データベース５を使用中の計算機２ａに異常が発生すると、この自己のリカバリーテーブル１１ｂの記憶内容でデータベース５を最新の状態に更新している。この場合、従来システムにように、異常発生の検出時に自己のリカバリーテーブル１１ｂをジャーナルファイル６の記憶内容を用いて新たに作成する必要がない。
【００４３】
その結果、データベース５を使用している計算機２ａに異常が発生した時に他の計算機２ｂにデータベース５を使用する業務を短時間で継承でき、システム全体の業務停止時間を大幅に短縮できる。
【００４４】
また、データベース５を使用している計算機２ａがたとえ正常であっても、他方の計算機２ｂとの間の伝送路１に異常が発生すると、他方の計算機２ｂに対する更新データ及び更新完了情報が転送不能状態になる。この期間においては、他方の計算機２ｂのリカバリーテーブル１１ｂの記憶内容に対する更新処理が正常に実施されない。しかし、この期間においても、一方の計算機２ａのリカバリーテーブル１１ａは正常に更新されている。そして、異常復旧時に正常なリカバリーテーブル１１ａの記憶内容を他方の計算機２ｂへ送信している。
【００４５】
したがって、たとえ他方の計算機２ｂに対する更新データ及び更新完了情報の転送不能期間が発生しても、他方の計算機２ｂのリカバリーテーブル１１ｂは正常値を維持できる。よって、たとえ一時的な転送不能事態が発生したとしても、データベース５を使用している計算機２ａが異常発生した時に他方の計算機２ｂにデータベース５を使用する業務を正しくかつ短時間で継承できる。
【００４６】
なお、本発明は上述した実施形態システムに限定されるものではない。
実施形態システムにおいては、データベース５を使用する計算機２ａのデータベース管理部７ａにリカバリーテーブル１１ａを更新するリカバリーテーブル更部１３ａを設けて、リカバリーテーブル１１ａの記憶内容を常時最新値に維持するようにした。しかし、従来システムのように、規定時間経過した時点におけるデータベース５の更新時に、ジャーナルフィイル６の記憶内容を用いて一度に作成することも可能である。
【００４７】
【発明の効果】
以上説明したように、本発明の二重化計算機システムにおいては、データベースを使用している一方の計算機からジャーナルファイルに対する更新データ及び更新完了情報の書込みが発生する毎に、この更新データ及び更新完了情報を他方の計算機へ転送している。そして、他方の計算機においてデータベースの更新に必要なリカバリーテーブルを一度に作成するのではなくて、更新データ及び更新完了情報の発生する都度、リカバリーテーブルの記憶内容を更新していくようにしている。
【００４８】
したがって、データベースを使用している計算機に異常が発生した時に他の計算機にデータベースを使用する業務を短時間で継承でき、業務の停止時間を極力短縮でき、システム全体の信頼性を向上できる。
【００４９】
また、たとえ一時的な転送不能事態が発生したとしても、データベースを使用している計算機に異常が発生した時に他の計算機にデータベースを使用する業務を正しくかつ短時間で継承できる。
【図面の簡単な説明】
【図１】  本発明の一実施形態の二重化計算機システムの概略構成を示すブロック図
【図２】  同二重化計算機システムにおけるデータベースを使用する一方の計算機の動作を示す流れ図
【図３】  同二重化計算機システムにおけるデータベースを使用しない他方の計算機の動作を示す流れ図
【図４】  従来の二重化計算機システムの概略構成を示すブロック図
【図５】  二重化計算機システムに組込まれたジャーナルファイル及びリカバリーテーブルの記憶内容を示す図
【符号の説明】
１…伝送路
２ａ，２ｂ…計算機
３ａ，３ｂ…ユーザアプリケーション
５…データベース
６…ジャーナルファイル
７ａ，７ｂ…データベース管理部
８ａ，８ｂ…ジャーナルファイル書込部
８ａ，９ｂ…データベース書込部
１１ａ，１１ｂ…リカバリーテーブル
１２…ジャーナル送信部
１３ａ，１３ｂ…リカバリーテーブル更新部
１４ａ．１４ｂ…データベース更新部
１５…リカバリーテーブル送信部
１６…ジャーナル受信部
１７…リカバリーテーブル受信部
【図１】
0004131583.tif 000002
【図２】
0004131583.tif 000003
【図３】
0004131583.tif 000004
【図４】
0004131583.tif 000005
【図５】
0004131583.tif 000006