(57)【要約】【課題】  コミットメント処理中に障害が発生した場合そのコミットメント処理を代替手段で継続する分散トランザクションの障害復旧方法を提供する。【解決手段】  トランザクションのコミットメント処理中にサーバ処理手段３２がダウンした場合、生存管理手段３６２がそれを検出する。トランザクション復旧手段３５は、トランザクション情報管理テーブル３４１およびリソース情報管理テーブル３４２を参照して、サーバ処理手段３２で処理中だったトランザクションを引き継ぐ。２相コミットメントＴＸ制御手段３７２は、トランザクション情報の中にあるデータ更新状態から、データベースファイル３８上のデータを更新したことに対するコミットメント処理を継続する。コミットメント処理が完了すると、２相コミットメントＴＸ制御手段２７１に通知し、トランザクション情報管理テーブル２４１上のデータ更新状態を書き換える。【選択図】      図１
2005250998.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置と複数のサイトにそれぞれ備えたサーバ装置とをネットワークで接続し前記クライアント装置からのデータ更新要求に対して各サイトの前記サーバ装置が連携してデータの更新処理を行う分散トランザクションシステムであって、
前記サーバ装置は、
データを蓄積するデータベースと、
前記データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、
前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える、
ことを特徴とする分散トランザクションシステム。
【請求項２】
前記サーバ装置は、
２相コミットメント処理過程の状態を記憶する管理テーブルを有し、
前記サーバ処理手段は、
２相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、
前記代替手段は、
前記管理テーブルを参照して２相コミットメント処理を代替継続する手段を有する、
ことを特徴とする請求項１記載の分散トランザクションシステム。
【請求項３】
前記代替手段は、
前記サーバ処理手段の障害発生を検出する手段を有する、
ことを特徴とする請求項１または２記載の分散トランザクションシステム。
【請求項４】
前記代替手段は、
代替した処理結果を他のサーバ装置に送信する手段を有する、
ことを特徴とする請求項１，２または３記載の分散トランザクションシステム。
【請求項５】
クライアントからデータ更新要求を受けて複数のサーバ装置が連携しデータの更新処理を行う分散トランザクションの障害復旧方法であって、
サーバ処理手段は、
２相コミットメントの処理を行って２相コミットメント処理過程の状態を管理テーブルに記憶し、
代替手段は、
サーバ処理手段がダウンしたことを検出したときに前記管理テーブルを参照して前記サーバ処理手段が行っていた２相コミットメントの処理を代替継続する、
ことを特徴とする分散トランザクションの障害復旧方法。
【請求項６】
前記管理テーブルが２相コミットメント処理過程の状態として「２相処理中」を示していた場合に、
前記代替手段は、
サーバ処理手段が行っていた２相処理の続きを実施してデータ更新を確定する、
ことを特徴とする請求項５記載の分散トランザクションの障害復旧方法。
【請求項７】
前記管理テーブルが２相コミットメント処理過程の状態として「第１相未処理」あるいは「第１相処理中」を示していた場合に、
前記代替手段は、
データ更新前に採取され管理テーブルに格納されている更新前データ情報を使用してデータの更新をロールバックさせ、
「コミットメント処理失敗」として主サイトのサーバ装置に送信する、
ことを特徴とする請求項５記載の分散トランザクションの障害復旧方法。
【請求項８】
データを蓄積するデータベースと、
データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、
前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える、
ことを特徴とするサーバ装置。
【請求項９】
２相コミットメント処理過程の状態を記憶する管理テーブルを有し、
前記サーバ処理手段は、
２相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、
前記代替手段は、
前記管理テーブルを参照して２相コミットメント処理を代替継続する手段を有する、
ことを特徴とする請求項８記載のサーバ装置。
【請求項１０】
前記代替手段は、
前記サーバ処理手段の障害発生を検出する手段を有する、
ことを特徴とする請求項８または９記載のサーバ装置。
【請求項１１】
前記代替手段は、
代替した処理結果を他のサーバ装置に送信する手段を有する、
ことを特徴とする請求項８，９または１０記載のサーバ装置。
【請求項１２】
コンピュータに、
データ更新要求に基づきデータベースの更新処理を行うサーバ処理機能、
前記サーバ処理機能に障害が発生したときに前記データベースの更新処理を代替する代替機能、
を実現させるためのプログラム。
【請求項１３】
２相コミットメント処理過程の状態を管理テーブルに記憶する機能、
前記管理テーブルを参照して２相コミットメント処理を代替継続する機能、
を実現させるための請求項１２記載のプログラム。
【請求項１４】
前記サーバ処理機能の障害発生を検出する機能、
を実現させるための請求項１２または１３記載のプログラム。
【請求項１５】
代替した処理結果を他のサーバ装置に送信する機能、
を実現させるための請求項１２，１３または１４記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラムに関し、特に、障害発生時に代替手段で代替して処理を継続する分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラムに関する。
【背景技術】
【０００２】
分散型データベースでは、１トランザクションが処理されるにあたり、多数のサイトのデータベースをアクセスする。データベースをアクセスするときには、コミットメント制御が行われる。
【０００３】
このような分散型データベース処理におけるデータリカバリ方式の一例が特許文献１に示されている。特許文献１では、第１および第２の２相コミットメント指令を用いている。第１コミットメントに対する各サーバの処理状況をクライアントノードで管理する。２相のコミットメント指令を用いたコメットメント処理中に障害が発生した場合には、クライアントノードは、その管理している各サーバの処理状況を参照する。クライアントノードは、その参照結果に応じて各サーバに対して事前ジャーナルの廃棄または事前ジャーナルを用いたリカバリ処理のための処理を指令する。
【０００４】
２相コミットメント処理について概略説明する。２相コミットメント処理は、第１相処理と第２相処理とから成っている。第１相処理では、主サイトが各サイト（副サイト）にプリペアリクエストを発行する。各サイトはコミット可能か否かを主サイトに返答する。主サイトは、１つ以上のサイトからコミット不可の返答を受け取った場合、各サイトにロールバック操作を指示する。各サイトは、データの更新を破棄する。第２相処理では、主サイトが全サイトからコミット可能の返答を受け取った場合、各サイトにコミット操作を指示する。各サイトはコミット操作を実行し、特定データの更新を確定させる。各サイトはコミット操作の結果を主サイトに送信する。主サイトは全サイトからコミット完了の結果を受け取った場合に、該トランザクションの完了とする。
【０００５】
トランザクションはデータの更新処理によってデータの内容に矛盾が生じないようにするための管理単位である。一般的には、データベースへの接続からデータの更新、接続の切断といった一連の手続きをまとめてトランザクションと呼んでいる。
【０００６】
【特許文献１】特開平４−１９１９４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した背景技術には次のような問題点があった。
【０００８】
すなわち、データのコミットメント処理中に障害が発生した場合、クライアントノードからサーバノードに対してリカバリ処理を要求する。この時、クライアントノードに障害が発生すると、リカバリ処理要求をサーバノードに発行できず、コミットメント処理中のデータ更新が完了しないということである。そのため、後発のトランザクション処理に支障をきたす。また、クライアントノードとサーバノードとの間で通信障害などが起こると、リカバリ処理要求が失敗する。その通信障害が復旧しない限り、リカバリ処理要求がサーバノードに届かず、同様の問題が生じる。
【０００９】
本発明の目的は、上記の問題点を解決し、コミットメント処理中に障害が発生しても、そのコミットメント処理を代替手段で継続し、処理結果をサーバマシン間で共有することにより分散したデータの一貫性を保証する分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本願第１の発明の分散トランザクションシステムは、クライアント装置と複数のサイトにそれぞれ備えたサーバ装置とをネットワークで接続し前記クライアント装置からのデータ更新要求に対して各サイトの前記サーバ装置が連携してデータの更新処理を行う分散トランザクションシステムであって、前記サーバ装置は、データを蓄積するデータベースと、前記データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える。
【００１１】
本願第２の発明の分散トランザクションシステムは、第１の発明において前記サーバ装置は、２相コミットメント処理過程の状態を記憶する管理テーブルを有し、前記サーバ処理手段は、２相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、前記代替手段は、前記管理テーブルを参照して２相コミットメント処理を代替継続する手段を有する。
【００１２】
本願第３の発明の分散トランザクションシステムは、第１または第２の発明において前記代替手段は、前記サーバ処理手段の障害発生を検出する手段を有する。
【００１３】
本願第４の発明の分散トランザクションシステムは、第１，第２または第３の発明において前記代替手段は、代替した処理結果を他のサーバ装置に送信する手段を有する。
【００１４】
本願第５の発明の分散トランザクションの障害復旧方法は、クライアントからデータ更新要求を受けて複数のサーバ装置が連携してデータの更新処理を行う分散トランザクション処理の障害復旧方法であって、サーバ処理手段は、２相コミットメントの処理を行って２相コミットメント処理過程の状態を管理テーブルに記憶し、代替手段は、サーバ処理手段がダウンしたことを検出したときに前記管理テーブルを参照して前記サーバ処理手段が行っていた２相コミットメントの処理を代替継続する、ことを特徴とする。
【００１５】
本願第６の発明の分散トランザクションの障害復旧方法は、第５の発明において前記管理テーブルが２相コミットメント処理過程の状態として「２相処理中」を示していた場合に、前記代替手段は、サーバ処理手段が行っていた２相処理の続きを実施してデータ更新を確定する、ことを特徴とする。
【００１６】
本願第７の発明の分散トランザクションの障害復旧方法は、第５の発明において前記管理テーブルが２相コミットメント処理過程の状態として「第１相未処理」あるいは「第１相処理中」を示していた場合に、前記代替処理は、データ更新前に採取され管理テーブルに格納されている更新前データ情報を使用してデータの更新をロールバックさせ、「コミットメント処理失敗」として主サイトのサーバ装置に送信する、ことを特徴とする。
【００１７】
本願第８の発明のサーバ装置は、データを蓄積するデータベースと、データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える。
【００１８】
本願第９の発明のサーバ装置は、第８の発明において２相コミットメント処理過程の状態を記憶する管理テーブルを有し、前記サーバ処理手段は、２相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、前記代替手段は、前記管理テーブルを参照して２相コミットメント処理を代替継続する手段を有する。
【００１９】
本願第１０の発明のサーバ装置は、第８または第９の発明において前記代替手段は、前記サーバ処理手段の障害発生を検出する手段を有する。
【００２０】
本願第１１の発明のサーバ装置は、第８，第９または第１０の発明において前記代替手段は、代替した処理結果を他のサーバ装置に送信する手段を有する。
【００２１】
本願第１２の発明のプログラムは、コンピュータに、データ更新要求に基づきデータベースの更新処理を行うサーバ処理機能、前記サーバ処理機能に障害が発生したときに前記データベースの更新処理を代替する代替機能、を実現させる。
【００２２】
本願第１３の発明のプログラムは、第１２の発明において２相コミットメント処理過程の状態を管理テーブルに記憶する機能、前記管理テーブルを参照して２相コミットメント処理を代替継続する機能、を実現させる。
【００２３】
本願第１４の発明のプログラムは、第１２または第１３の発明において前記サーバ処理機能の障害発生を検出する機能、を実現させる。
【００２４】
本願第１５の発明のプログラムは、第１２，第１３または第１４の発明において代替した処理結果を他のサーバ装置に送信する機能、を実現させる。
【発明の効果】
【００２５】
本発明の効果は、コミットメント処理中に障害が発生してもその処理を継続できることである。その理由は、サーバマシン上でデータの更新状態を管理することによって、サーバ処理手段で障害が発生したとしてもその処理を同一サーバマシン内の代替手段で継続するようにしたからである。 
【発明を実施するための最良の形態】
【００２６】
本発明の特徴は、分散した複数のサーバマシンに点在するデータの一括更新を実施するトランザクション処理において、コミットメント処理中に障害が発生しても、そのコミットメント処理を代替手段で継続し、かつ処理結果をサーバマシン間で共有することである。これにより、分散したデータの一貫性を保証し、かつ分散トランザクションシステムの信頼性向上を実現することができる。 
より具体的に説明する。サーバマシンＡとサーバマシンＢが連携してサーバマシンＡのデータベースＡのデータとサーバマシンＢのデータベースＢのデータとを一括して更新する。この時、一般的に知られる２相コミットメント処理を実施する。例えば、トランザクションのコミットメント処理中にサーバマシンＢの処理手段Ｂがダウンした場合、サーバマシンＢ内の代替手段Ｂがそれを検出する。代替手段Ｂは処理手段Ｂが処理中だったトランザクション処理を引き継ぐ。代替手段Ｂは、データ更新状態等のトランザクション状況が格納されているトランザクション情報管理テーブルＢおよびリソース情報管理テーブルＢの情報をもとに、コミットメント処理を継続する。代替手段Ｂはコミットメント処理が完了すると、その通知をサーバマシンＡの処理手段Ａに送信する。処理手段Ａはトランザクション情報管理テーブルＡのデータ更新状態を書き換える。これによって、障害が発生してもトランザクションのコミットメント処理が正常に完了し、他サーバマシン間とのデータ一貫性を保つことができる。
【００２７】
次に、本発明を実施するための最良の形態の構成について、図面を参照して詳細に説明する。
図１は本発明の構成を示す図である。
【００２８】
図１を参照すると、本発明の一実施例は、クライアントマシン１と、サーバマシン２と、サーバマシン３と、を備えている。クライアントマシン１とサーバマシン２とサーバマシン３とは、お互いにＬＡＮ（ローカルエリアネットワーク）等のネットワーク４で接続されている。
【００２９】
クライアントマシン１は、プログラム制御で動作する情報処理装置である。クライアントマシン１は、アプリケーション１１と、通信手段１２と、を含む。
【００３０】
サーバマシン２は、プログラム制御で動作するサーバ装置である。サーバマシン２は、通信手段２１と、サーバ処理手段２２と、トランザクション処理実行手段２３と、トランザクション情報管理テーブル２４１と、リソース情報管理テーブル２４２と、トランザクション復旧手段２５と、生存管理手段２６１と、生存管理手段２６２と、２相コミットメントＴＸ（トランザクション）制御手段２７１と、２相コミットメントＴＸ制御手段２７２と、データベースファイル２８と、を含む。
【００３１】
サーバマシン３は、プログラム制御で動作するサーバ装置である。サーバマシン３は、通信手段３１と、サーバ処理手段３２と、トランザクション処理実行手段３３と、トランザクション情報管理テーブル３４１と、リソース情報管理テーブル３４２と、トランザクション復旧手段３５と、生存管理手段３６１と、生存管理手段３６２と、２相コミットメントＴＸ制御手段３７１と、２相コミットメントＴＸ制御手段３７２と、データベースファイル３８と、を含む。
【００３２】
各構成要素について説明する。なお、サーバマシン２とサーバマシン３は同様の構成であるので、ここではサーバマシン２の構成について説明する。
【００３３】
アプリケーション１１は、サーバマシン２に対して通信手段１２およびネットワーク４を介してデータベースファイルに対する更新処理要求を送信する。また、アプリケーション１１は、サーバマシン２から処理要求に対する結果を受信する。
【００３４】
通信手段１２は、サーバマシン２との間でデータの送受信を行う。
【００３５】
通信手段２１は、クライアントマシン１やサーバマシン３との間でデータの送受信を行う。
【００３６】
サーバ処理手段２２は、サーバマシン２上で動作し、クライアントマシン１からの処理要求の実行およびトランザクションの制御を行う。サーバ処理手段２２は、トランザクション処理実行手段２３と、生存管理手段２６１と、２相コミットメントＴＸ制御手段２７１と、を含む。
【００３７】
トランザクション処理実行手段２３は、データベースファイル２８上の特定データの更新や参照を行う。更に、トランザクション処理実行手段２３は、２相コミットメントＴＸ制御手段２７１に対してトランザクションの開始要求とトランザクションのコミットメント要求を発行する。
【００３８】
生存管理手段２６１は、サーバ処理手段２２が起動する時に、トランザクション復旧手段２５上の生存管理手段２６２に対してサーバ処理手段２２が起動したことを通知する機能を有する。また、生存管理手段２６１は、サーバ処理手段２２が起動した時に、サーバ処理手段２２のサーバ処理手段識別子を生存管理手段２６２に通知する。
【００３９】
２相コミットメントＴＸ制御手段２７１は、トランザクションの情報やデータの更新手続きの状態を管理する。２相コミットメントＴＸ制御手段２７１は、管理するこれらの情報を各々トランザクション情報管理テーブル２４１とリソース情報管理テーブル２４２に格納する。
【００４０】
ここで、１つのデータ更新を管理する単位を「リソース」と呼ぶことにする。リソースは、トランザクションの配下に登録される。トランザクションのコミットメント処理の延長でリソースで管理されるデータの更新確定処理が実施される。
【００４１】
リソース情報管理テーブル２４２は、図示されない記憶部に記憶され、リソースの情報が格納される。格納される情報は、データ更新状態，サーバ処理手段識別子，更新前データ情報および登録先のトランザクション識別子である。本発明の実施例においては、複数データベースファイル上の複数データを一括して更新するために、２相コミットメント指令を用いる。そのために、データ更新状態として、（Ｓ１）第１相未処理，（Ｓ２）第１相処理中，（Ｓ３）第１相処理完了，（Ｓ４）第２相処理中，（Ｓ５）第２相処理完了および（Ｓ６）コミットメント処理失敗の６種類が格納される。サーバ処理手段識別子は、サーバ処理手段を識別するものであり、サーバ処理手段がダウンした時にサーバ処理手段で動作していたトランザクションおよびリソースの情報を検索するキーとなる。更新前データ情報は、トランザクションをロールバックする際に、データの更新を無効にするために使用する情報である。更新を無効にするために、更新前データ情報を使用してデータベースファイルに書き込みが行われる（データの巻き戻しが行われる）。トランザクション識別子は、トランザクションを識別するものであり、トランザクションごとに割り振られ、リソースが登録されているトランザクションを識別するためのキーとなる。なお、リソース情報管理テーブルをＲ管理テーブルと称することがる。
【００４２】
トランザクション情報管理テーブル２４１は、図示されない記憶部に記憶され、トランザクションに関する情報が格納される。格納される情報は、サーバ処理手段情報とトランザクション情報である。サーバ処理手段情報はサーバ処理手段のサーバ処理手段識別子（１，…，ｎ）を含む。サーバ処理手段識別子はどのサーバ処理手段がダウンしたかをチェックするときのキーとして使用される。トランザクション情報はサーバ処理手段識別子（１〜ｎのいずれかが入る）とトランザクション識別子とリソースごとのデータ更新状態とを含む。トランザクション情報（Ｔ１）はサーバ処理手段識別子と対応づけされており、復旧が必要なトランザクション情報とリソース情報を取得できるようになっている。それぞれの役割はリソース情報管理テーブル２４２内に格納されるものと同様のものである。なお、トランザクション情報管理テーブルをＴ管理テーブルと称することがる。
【００４３】
トランザクション復旧手段２５は、サーバ処理手段２２がダウンした際にサーバ処理手段２２上で完了していないトランザクションを復旧して完了処理を継続する機能を有する。トランザクション復旧手段２５は、生存管理手段２６２と、２相コミットメントＴＸ制御手段２７２と、を含む。
【００４４】
生存管理手段２６２は、生存管理手段２６１から受け取ったサーバ処理手段２２のサーバ処理手段識別子をトランザクション情報管理テーブル２４１に登録する機能を有する。生存管理手段２６２は、サーバ処理手段の生存状態を常時管理する。そして、生存管理手段２６２は、サーバ処理手段ダウン時に、どのサーバ処理手段がダウンしたかをサーバ処理手段識別子を使用してチェックする。生存管理手段２６２は、例えば、サーバ処理手段２２との間でプロセス間通信等を使用してサーバ処理手段２２のダウンを検出する。
【００４５】
２相コミットメントＴＸ制御手段２７２は、生存管理手段２６２がサーバ処理手段２２のダウンを検出したときに、トランザクション情報管理テーブル２４１およびリソース情報管理テーブル２４２に格納されているトランザクション情報およびデータ更新情報を基に、コミットメント処理の継続を行う。
【００４６】
データベースファイル２８は、ユーザデータを格納する。なお、データベースファイルをＤＢと称することがる。
【００４７】
なお、サーバマシン２は、図示しない制御部を備えている。制御部は、サーバ処理手段２２とトランザクション復旧手段２５のどちらが動作しているかを示すアクティブフラグを有している。アクティブフラグは、通常はサーバ処理手段２２が動作していることを示している。生存管理手段２６２は、サーバ処理手段２２のダウンを検出したときに、アクティブフラグをトランザクション復旧手段２５が動作していることを示すように書き換える。サーバマシン２がクライアントマシン１からデータ更新要求を受信したとき、制御部はアクティブフラグを参照してサーバ処理手段２２とトランザクション復旧手段２５のどちらが動作しているかを判断する。例えば、サーバ処理手段２２が動作していると判断した場合、制御部はクライアントマシン１からのデータ更新要求をサーバ処理手段２２に送出する。
【００４８】
次に、本発明を実施するための最良の形態の動作について、図１〜図５を参照して詳細に説明する。
図２は正常に終了する場合の動作の流れ（その１）を示す図である。
図３は正常に終了する場合の動作の流れ（その２）を示す図である。
図４は異常が発生した場合の動作の流れ（ケース１）を示す図である。
図５は異常が発生した場合の動作の流れ（ケース３）を示す図である。
【００４９】
なお、本説明において、クライアントマシン１からサーバマシン２に処理要求を行うものとする。また、クライアントマシン１からの処理要求は、サーバマシン２のデータベースファイル２８とサーバマシン３のデータベースファイル３８とを更新するものとする。
【００５０】
以下の５つの場合の動作について説明する。
・正常に終了する場合の動作。
・異常が発生した場合の動作（ケース１：第２相処理中にサーバ処理手段３２に異常が発生）。
・異常が発生した場合の動作（ケース２：第１相処理完了の状態でサーバ処理手段３２に異常が発生）。
・異常が発生した場合の動作（ケース３：第１相未処理あるいは第１相処理中にサーバ処理手段３２に異常が発生）。
・異常が発生した場合の動作（ケース４：サーバ処理手段２２に異常が発生）。
【００５１】
（１）正常に終了する場合。すなわち、サーバ処理手段２２とサーバ処理手段３２が連携してトランザクションの開始からデータベースファイル２８上の特定データおよびデータベースファイル３８上の特定データの更新ならびにトランザクションのコミットメント処理によるデータの一括更新確定までが正常に実施された場合である。
【００５２】
図２〜図３を参照すると、先ず、アプリケーション１１がトランザクション処理実行手段２３に処理要求を発行する（ステップＳ１０１）。
【００５３】
トランザクション処理実行手段２３は２相コミットメントＴＸ制御手段２７１にトランザクションの開始を要求する。２相コミットメントＴＸ制御手段２７１は、ここで生成されるトランザクションを「Ｔ１」として管理し、Ｔ１の情報をトランザクション情報管理テーブル２４１に格納する（ステップＳ１０２）。
【００５４】
次に、トランザクション処理実行手段２３は、データベースファイル２８の特定データ更新を行う（ステップＳ１０３）。この更新手続きをまとめて「Ｒ１」と呼ぶことにする。
【００５５】
Ｒ１はトランザクションＴ１の配下に登録して管理される。先ず、２相コミットメントＴＸ制御手段２７１は、Ｒ１の情報をリソース情報管理テーブル２４２に登録し、データ更新状態を「第１相未処理」とする（ステップＳ１０４）。次に、２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１のＴ１情報の内容の一部としてＲ１のデータ更新状態を「第１相未処理」として登録する（ステップＳ１０５）。
【００５６】
次に、トランザクション処理実行手段２３は、トランザクション処理実行手段３３に対してデータベースファイル３８の特定データ更新を要求する（ステップＳ１０６）。
【００５７】
トランザクション処理実行手段３３は、データベースファイル３８の特定データ更新を行う。この更新手続きをまとめて「Ｒ２」と呼ぶことにする（ステップＳ１０７）。
【００５８】
Ｒ２はトランザクションＴ１の配下に登録して管理される。先ず、Ｒ１の場合と同様に、２相コミットメントＴＸ制御手段３７１は、Ｒ２の情報をリソース情報管理テーブル３４２に登録し、データ更新状態を「第１相未処理」とする（ステップＳ１０８）。次に、２相コミットメントＴＸ制御手段３７１は、トランザクション情報管理テーブル３４１にＴ１情報の内容の一部としてＲ２のデータ更新状態を「第１相未処理」として登録する。更に、２相コミットメントＴＸ制御手段３７１は、Ｒ２をＴ１に登録するために２相コミットメントＴＸ制御手段２７１に処理要求を発行する。２相コミットメントＴＸ制御手段２７１は、Ｒ２のデータ更新状態を「第１相未処理」としてトランザクション情報管理テーブル２４１のＴ１情報の内容の一部として格納する（ステップＳ１０９）。
【００５９】
トランザクション処理実行手段２３でＴ１のコミットメント処理を開始する（ステップＳ１１０）。
【００６０】
先ず、Ｒ１に対して、データベースファイル２８上の特定データについての第１相処理を開始する。２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるＲ１のデータ更新状態を「第１相処理中」にする（ステップＳ１１１）。その後、２相コミットメントＴＸ制御手段２７１は、Ｒ１に対して、データベースファイル２８上の特定データについての第１相処理を実施する（ステップＳ１１２）。第１相処理の完了時に、２相コミットメントＴＸ制御手段２７１は、リソース情報管理テーブル２４２内に格納されるＲ１のデータ更新状態を「第１相処理完了」にする（ステップＳ１１３）。その後、２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるＲ１のデータ更新状態を「第１相処理完了」にする（ステップＳ１１４）。
【００６１】
次に、Ｒ２に対して、データベースファイル３８上の特定データについての第１相処理を開始する（ステップＳ１１５）。先ず、２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるＲ２のデータ更新状態を「第１相処理中」にする（ステップＳ１１６）。２相コミットメントＴＸ制御手段２７１は、２相コミットメントＴＸ制御手段３７１に対してＲ２に関する第１相処理要求を実施する（ステップＳ１１７）。その後の手順は、Ｒ１に対する場合と同様である。
【００６２】
すなわち、２相コミットメントＴＸ制御手段３７１は、Ｒ２に対してデータベースファイル３８上の特定データについての第１相処理を実施する（ステップＳ１１８）。第１相処理の完了時に、２相コミットメントＴＸ制御手段３７１は、リソース情報管理テーブル３４２内に格納されるＲ２のデータ更新状態を「第１相処理完了」にする（ステップＳ１１９）。次に、２相コミットメントＴＸ制御手段３７１は、トランザクション情報管理テーブル３４１にＴ１情報の内容の一部としてＲ２のデータ更新状態を「第１相処理完了」として登録する。更に、２相コミットメントＴＸ制御手段３７１は、Ｒ２をＴ１に登録するために２相コミットメントＴＸ制御手段２７１に処理要求を発行する。２相コミットメントＴＸ制御手段２７１は、Ｒ２のデータ更新状態を「第１相処理完了」としてトランザクション情報管理テーブル２４１のＴ１情報の内容の一部として格納する（ステップＳ１２０）。
【００６３】
これで、Ｔ１全体としての第１相処理が完了となる。なお、Ｒ１とＲ２のいずれかの第１相処理が失敗して、データ更新状態が「コミットメント処理失敗」になった場合は、Ｔ１はロールバックさせる。Ｒ１とＲ２に対してもデータの巻き戻しをそれぞれの更新前データ情報を使用して実施する。なお、更新前データは、データ更新前に採取され、リソース情報管理テーブルに格納されている。
【００６４】
次に、第２相処理を開始する（ステップＳ１２１）。第２相処理の手続きも、第１相処理の場合と同様である。
【００６５】
先ず、Ｒ１に対してデータベースファイル２８上の特定データについての第２相処理を開始する。２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるＲ１のデータ更新状態を「第２相処理中」にする（ステップＳ１２２）。その後、２相コミットメントＴＸ制御手段２７１は、Ｒ１に対してデータベースファイル２８上の特定データについての第２相処理を実施する（ステップＳ１２３）。第２相処理の完了時に、２相コミットメントＴＸ制御手段２７１は、不要となったリソース情報管理テーブル２４２内に格納されるＲ１の情報を全て削除する（ステップＳ１２４）。その後、２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるＲ１のデータ更新状態を「第２相処理完了」にする（ステップＳ１２５）。
【００６６】
次に、Ｒ２に対してデータベースファイル３８上の特定データについての第２相処理を開始する（ステップＳ１２６）。先ず、２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるＲ２のデータ更新状態を「第２相処理中」にする（ステップＳ１２７）。２相コミットメントＴＸ制御手段２７１は、２相コミットメントＴＸ制御手段３７１に対してＲ２に関する第２相処理要求を実施する（ステップＳ１２８）。その後の手順は、Ｒ１に対する場合と同様である。
【００６７】
すなわち、２相コミットメントＴＸ制御手段３７１は、Ｒ２に対してデータベースファイル３８上の特定データについての第２相処理を実施する（ステップＳ１２９）。第２相処理の完了時に、２相コミットメントＴＸ制御手段３７１は、不要となったリソース情報管理テーブル３４２内に格納されるＲ２の情報を全て削除する（ステップＳ１３０）。次に、２相コミットメントＴＸ制御手段３７１は、トランザクション情報管理テーブル３４１にＴ１情報の内容の一部としてＲ２のデータ更新状態を「第２相処理完了」として登録する。更に、２相コミットメントＴＸ制御手段３７１は、Ｒ２をＴ１に登録するために２相コミットメントＴＸ制御手段２７１に処理要求を発行する。２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるＲ２のデータ更新状態を「第２相処理完了」にする（ステップＳ１３１）。
【００６８】
２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＴ１情報に格納されるリソースのデータ更新状態が全て（Ｒ１とＲ２が共に）「第２相処理完了」になったので、Ｔ１情報をトランザクション情報管理テーブル２４１からすべて削除する（ステップＳ１３２）。コミットメント処理完了である。
【００６９】
これで、Ｔ１全体の処理が完了となる。
【００７０】
（２）異常が発生した場合（ケース１）。すなわち、Ｔ１に登録されたＲ２に対する第２相処理中にサーバ処理手段３２がダウンした場合である。
【００７１】
図４を参照すると、先ず、サーバ処理手段３２がダウンすると生存確認手段３６２がそれを検出する（ステップＳ２０１）。
【００７２】
トランザクション復旧手段３５は、トランザクション情報管理テーブル３４１とリソース情報管理テーブル３４２からサーバ処理手段３２上で動作中であった処理中のトランザクション情報とリソース情報を全て検索する（ステップＳ２０２）。そして、トランザクション情報管理データ３４１で管理しているリソースごとのデータ更新状態を判断して、どこのリソースに対してどんな要求を行うかを判断する。本例では、トランザクション復旧手段３５は、Ｒ２のデータ更新状態が第２相処理中であることを認識する。そして、トランザクション復旧手段３５は、Ｒ２のデータ更新状態が第２相処理中であるためコミットメント処理中にサーバ処理手段３２がダウンしたと判断し、第２相処理すなわちデータ更新確定処理の続きを実施する（ステップＳ２０３）。
【００７３】
２相コミットメントＴＸ制御手段３７２は、リソース情報管理テーブル３４２に格納されたＲ２の情報を削除してデータの更新を確定させる（ステップＳ２０４）。その後、２相コミットメントＴＸ制御手段３７２は２相コミットメントＴＸ制御手段２７１に対して第２相処理が完了したことを通知する。２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１内のＲ２のデータ更新状態を「第２相処理完了」に更新する（ステップＳ２０５）。
【００７４】
２相コミットメントＴＸ制御手段２７１は、Ｔ１に登録されたＲ１とＲ２の第２相処理が全て完了したと判断すると、Ｔ１情報をトランザクション情報管理テーブル２４１から削除する（ステップＳ２０６）。コミットメント処理が完了し、Ｔ１全体の処理完了となる。
【００７５】
ステップＳ２０５に記載したように、２相コミットメントＴＸ制御手段３７２は２相コミットメントＴＸ制御手段２７１に対して第２相処理が完了したことを通知する。通知する際に、サーバマシン２とサーバマシン３との間で通信障害が発生した場合、２相コミットメントＴＸ制御手段３７２は通信障害が解決するまで一定時間ごとにこの通知を再発行する。通信障害が解決した時点で、２相コミットメントＴＸ制御手段２７１は、この通知を受信し、Ｔ１情報をトランザクション情報管理テーブル２４１から削除する。不要となったトランザクションの情報の保持を防ぐことができる。
【００７６】
（３）異常が発生した場合（ケース２）。すなわち、Ｔ１に登録されたＲ２が第１相処理完了の状態でサーバ処理手段３２がダウンした場合である。
【００７７】
前述した（２）と同様に、Ｒ２の情報がトランザクション復旧手段３５で復旧される。
【００７８】
２相コミットメントＴＸ制御手段３７２は、データをコミットメントするかロールバックするかの判断を、Ｔ１を開始した２相コミットメントＴＸ制御手段２７１に対して依頼する。２相コミットメントＴＸ制御手段２７１は、トランザクション情報管理テーブル２４１を参照して、Ｒ１とＲ２のデータ更新状態を確認し、それに応じた処理を２相コミットメントＴＸ制御手段３７２に指示する。２相コミットメントＴＸ制御手段３７２は、指示された処理をＲ２に対して実施する。すなわち、
（ａ）Ｒ１とＲ２がともに「第１相処理完了」の状態の場合、第１相処理は正常に完了している状態である。２相コミットメントＴＸ制御手段２７１はコミット指示を発行し、２相コミットメントＴＸ制御手段３７２は、コミット処理を行う。
（ｂ）Ｒ１が「コミットメント失敗」の状態の場合、２相コミットメントＴＸ制御手段２７１はロールバック指示を発行し、２相コミットメントＴＸ制御手段３７２は、ロールバック処理を行う。
等々。
【００７９】
その結果として、トランザクション情報管理テーブル２４１ならびにトランザクション情報管理テーブル３４１およびリソース情報管理テーブル３４２内の情報も更新される。
【００８０】
（４）異常が発生した場合（ケース３）。すなわち、Ｔ１に登録されたＲ２が第１相未処理あるいは第１相処理中にサーバ処理手段３２がダウンした場合である。
【００８１】
前述した（２）と同様に、Ｒ２の情報がトランザクション復旧手段３５で復旧される。
【００８２】
すなわち、図５を参照すると、２相コミットメントＴＸ制御手段３７２は、リソース情報管理テーブル３４２に格納されている更新前データ情報を使用してデータベースファイル３８のデータをロールバックさせる（ステップＳ４０１）。その後、２相コミットメントＴＸ制御手段３７２は、Ｒ２の情報をリソース情報管理テーブル３４２から削除し、２相コミットメントＴＸ制御手段２７１に対して通知する（ステップＳ４０２）。
【００８３】
２相コミットメントＴＸ制御手段２７１は、Ｒ２のデータ更新状態を「コミットメント処理失敗」としてトランザクション情報管理テーブル２４１に格納する（ステップＳ４０３）。
【００８４】
Ｒ２の第１相処理が失敗したので、Ｔ１はロールバックされる（ステップＳ４０４）。そこで、２相コミットメントＴＸ制御手段２７１は、リソース情報管理テーブル２４２に格納されている更新前データ情報を使用してデータベースファイル２８のデータをロールバックさせる。
【００８５】
（５）異常が発生した場合（ケース４）。すなわち、Ｔ１を開始したサーバ処理手段２２がダウンした場合である。
【００８６】
トランザクションの復旧の手順は、前述したサーバ処理手段３２がダウンした場合と同様である。
【００８７】
トランザクション復旧手段２５は、トランザクション情報管理テーブル２４１およびリソース情報管理テーブル２４２を参照してＴ１情報とＲ１情報を基に、Ｔ１情報内にあるＲ１とＲ２のデータ更新状態を確認する。そして、データ更新状態に応じてトランザクションの完了処理を実施する。すなわち、
（ａ）第２相処理完了のリソースに対しては、処理要求を行わない。
（ｂ）Ｒ１とＲ２の状態が共に第１相処理完了しているか或いは第２相処理中のものである場合は、コミットメント処理要求を継続する。
（ｃ）それ以外の状態である場合は、Ｔ１のロールバック処理を実施する。 
以上説明したように、サーバ処理手段の処理をトランザクション復旧手段で代行継続するようにしたので、以下のような効果を奏する。
【００８８】
第１に、コミットメント処理中に障害が発生してもその処理を自動的に継続できることである。その理由は、サーバマシン上でデータの更新状態を管理することによって、サーバ処理手段で障害が発生したとしても、その処理を同一サーバマシン内の代替手段で継続するようにしたからである。 
第２に、分散されたサーバマシン上で管理されるデータの一貫性が保証できることである。その理由は、あるサーバマシン上のサーバ処理手段で障害が発生し、トランザクションやデータ更新状況の復旧、継続処理を完了した際に、連携するトランザクションが動作する他サーバマシンへ通知するようにしたからである。この通知により、サーバマシン間でデータ更新状態に矛盾が生じないようになる。 
第３に、障害が発生してもデータ更新処理に時間を要さないため後発のトランザクションに与える影響を最小限にできることである。その理由は、コミットメント処理中にサーバ処理手段に障害が発生しても即座にトランザクション状態やデータ更新状態を基に、障害が発生したサーバマシン上で独自にデータの更新処理を継続して完了するようにしたからである。
【００８９】
なお、上述した実施例では、２台のサーバを用いてデータの更新を行う場合について説明したが、サーバマシンの数および更新するデータの数に制限はない。
【００９０】
次に、本発明の他の実施例について説明する。
【００９１】
上述した実施例では、クライアントマシン１からサーバマシン２に処理要求を行い、サーバマシン２が主サイトにとなって分散データベースの更新を制御している。他の実施例として、クライアントマシンはデータベースファイルを持ち、サーバマシンと同様な構成とする。そして、クライアントマシン上のアプリケーション部分からトランザクションの開始やデータベースファイルのデータ更新を他のサーバマシンに要求するようにしてもよい。
【００９２】
本発明による上述した実施の形態において、サーバ装置の処理動作を実行するためのプログラム等を、データとしてコンピュータの磁気ディスクや光ディスク等の記録媒体（図示せず）に記録するようにし、記録されたデータを読み出してサーバ装置を動作させるために用いる。このように、本発明によるサーバ装置を動作させるデータを記録媒体に記録させ、この記録媒体をインストールすることによりサーバ装置の機能が実現できるようになる。
【図面の簡単な説明】
【００９３】
【図１】本発明の構成を示す図
【図２】正常に終了する場合の動作の流れ（その１）を示す図
【図３】正常に終了する場合の動作の流れ（その２）を示す図
【図４】異常が発生した場合の動作の流れ（ケース１）を示す図
【図５】異常が発生した場合の動作の流れ（ケース３）を示す図
【符号の説明】
【００９４】
１    クライアントマシン
２    サーバマシン
３    サーバマシン
４    ネットワーク
１１    アプリケーション
１２    通信手段
２１    通信手段
２２    サーバ処理手段
２３    トランザクション処理実行手段
２５    トランザクション復旧手段
２８    データベースファイル
３１    通信手段
３２    サーバ処理手段
３３    トランザクション処理実行手段
３５    トランザクション復旧手段
３８    データベースファイル
２４１    トランザクション情報管理テーブル
２４２    リソース情報管理テーブル
２６１    生存管理手段
２６２    生存管理手段
２７１    ２相コミットメントＴＸ制御手段
２７２    ２相コミットメントＴＸ制御手段
３４１    トランザクション情報管理テーブル
３４２    リソース情報管理テーブル
３６１    生存管理手段
３６２    生存管理手段
３７１    ２相コミットメントＴＸ制御手段
３７２    ２相コミットメントＴＸ制御手段
【図１】
2005250998.tif 000003
【図２】
2005250998.tif 000004
【図３】
2005250998.tif 000005
【図４】
2005250998.tif 000006
【図５】
2005250998.tif 000007