(57)【要約】【課題】複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供する。【解決手段】マスタデータベース側で、トランザクション処理を実行し、トランザクション処理の更新データをミラーデータベースに反映するための制御情報を生成し、トランザクション処理が完了する前に、ミラーデータベースへ前記更新データと前記制御情報を含むデータを送信し、ミラーデータベース側で、マスタデータベースから更新データおよびトランザクション処理の更新データをミラーデータベースに反映するための制御情報を受信し、制御情報に基づいてトランザクション単位に前記更新データを組み立て、ミラーデータベースへの更新データをトランザクション単位に反映する。【選択図】　図１
2004133598.tif 000002
【特許請求の範囲】
【請求項１】
トランザクション処理による複数の第１データベースへの複数の更新データを、複数の第２データベースに反映する二重化制御システムにおいて、前記第１データベース側でコンピュータにより実行されるプログラムであって、
トランザクション処理を実行するステップと、
前記トランザクション処理の更新データを前記第２データベースに反映するための制御情報を生成するステップと、
前記トランザクション処理が完了する前に、前記第２データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させるプログラム。
【請求項２】
前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる請求項１に記載のプログラム。
【請求項３】
送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、
第１データベース上の全データを一括して送信するステップとを実行させる請求項２に記載のプログラム。
【請求項４】
複数の第１データベースへの更新データを、複数の第２データベースに反映する二重化制御システムにおいて、前記第２データベース側でコンピュータにより実行されるプログラムであって、
前記第１データベースから前記更新データおよび前記トランザクション処理の更新データを前記第２データベースに反映するための制御情報を受信するステップと、
前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、
前記第２データベースへの前記更新データをトランザクション単位に反映するステップとを実行させるプログラム。
【請求項５】
トランザクション単位で前記第２データベースの排他制御を開始するステップと、
前記第２データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる請求項４に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は基幹サーバ上にある複数のマスタデータベースのミラーデータベースを他サーバ上に展開し、基幹サーバ上と同等の参照系業務の運用を可能とする複数データベースのリアルタイム二重化制御システム（リアルタイムＤＢリプリケーションシステム）に関する。
【０００２】
【従来の技術】
近年、インターネットの利用者はかなりの勢いで増加し、ウェブサーバをはじめとするネットワークサービスへのアクセスも急激に増加している。その中で、著名なサーバへのアクセスはすでに一台のサーバマシンで処理することが困難になってきている。そこで、多くのアクセスが集中する著名なサーバでは、同一の機能を有する別のサーバ（ミラーサーバ）を設けて負荷分散を図っている。
【０００３】
ここで、サーバのコンテンツは日々更新されるが、元のサーバ（マスタサーバ）のファイルが更新された場合には、ミラーサーバの対応するファイルも同期させて更新（ミラーリング）する必要がある。
【０００４】
しかし、一般にマスターサーバ上のファイルの更新周期と、ミラーリングが行われる周期は一致しないため、マスターサーバ上では更新され、追加されたファイルがミラーサーバ上では更新されていない期間が存在するという問題が生じる。
【０００５】
これに対して、ミラーサーバを含む全サーバの内容を高速に同期させることができるとともに、同期に伴う負荷を減らすことができるミラーサーバの同期方法が提案されている。
【０００６】
【特許文献１】
特開平１１−１５４１１０号公報
【０００７】
【発明が解決しようとする課題】
このような従来技術においては、以下に示す問題が生じている。１トランザクションで複数のデータベースに対して、大量のデータ更新が行われた場合、トランザクションの完了を待ってから大量の更新データをネットワークを介して送信することになるため、マスタデータベースのデータ更新完了日時とミラーデータベースへの更新データ反映日時との時間差が更新データ量が多いほど大きくなる。
【０００８】
また、更新データ量の小さいトランザクションが大量に発生した場合、更新データを送信するための通信回数が多くなり、ネットワークの負荷が高くなる。
また、ミラーデータベースへの更新処理回数も多くなりＣＰＵ負荷も高くなる。
【０００９】
また、ネットワークの過負荷、ミラーデータベース更新側システムの異常（過負荷やシステムダウンなどによるＲＥＩＰＬ（Ｒｅ−Ｉｎｉｔｉａｌ　Ｐｒｏｇｒａｍ　Ｌｏａｄｅｒ）など）などで更新データが大量（マスタデータベースのデータ量より大）に滞留した場合、マスタデータベースとミラーデータベースの内容が一致するまで、長い時間がかかる。
【００１０】
また、複数のミラーデータベースを同時に参照するアプリケーションにおいて、トランザクション単位の整合性がとれた状態か否かをチェックする処理を開発する必要がある。
また、トランザクション単位に順番にデータ反映処理（ＤＢ間のコード変換、ＤＢ反映処理）を行う方式では、トランザクションの数分、コード変換処理およびＤＢ反映処理を起動する必要があるため、小さなデータを更新するトランザクションが大量に発生した場合、ＣＰＵ負荷が高くなる。
【００１１】
さらに、個々のデータベース単位に更新データを反映しているため、多くのデータベースの更新が同時に発生した場合、処理プロセスがＣＰＵ能力以上に起動され処理効率が悪くなる問題が発生する。
【００１２】
本発明は、このような従来技術の問題に鑑みてなされたものである。すなわち、本発明が解決しようとする課題は、複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供することである。
【００１３】
【課題を解決するための手段】
本発明は、上記課題を解決するために以下の手段を採用した。
【００１４】
本発明に係る二重化制御技術は、トランザクション処理による複数の第１データベースへの複数の更新データを、複数の第２データベースに反映する二重化制御システムにおいて、前記第１データベース側でコンピュータにより実行されるプログラムであって、トランザクション処理を実行するステップと、前記トランザクション処理の更新データを前記第２データベースに反映するための制御情報を生成するステップと、前記トランザクション処理が完了する前に、前記第２データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させることを特徴とする。
【００１５】
ここで、例えば第１データベースはマスタデータベースであり、第２データベースは、そのマスタデータベースに対応するミラーデータベースである。
【００１６】
このようにすると、トランザクションで複数のデータベースに対し、大量のデータ更新が実行された場合、トランザクションの完了を待たずにマスタデータベースの更新処理と並行して、更新データを送信することができる。そのため、ミラーデータベースへ更新データを反映するときの遅延時間を短縮できる。
【００１７】
また、本発明に係る二重化制御技術は、前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる。
【００１８】
このようにすると、更新データ量の小さいトランザクションを複数まとめて送信することができる。そのため、通信制御の負荷軽減と、ミラーデータベースへの一括反映が可能となる。
【００１９】
また、本発明に係る二重化制御技術は、送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、第１データベース上の全データを一括して送信するステップとを実行させる。
【００２０】
このようにすると、更新データを送信して個々に反映する場合と比較して、最新のミラーデータベースへ更新するまでの更新時間の短縮が可能となる。
【００２１】
また、本発明に係る二重化制御技術は、複数の第１データベースへの更新データを、複数の第２データベースに反映する二重化制御システムにおいて、前記第２データベース側でコンピュータにより実行されるプログラムであって、前記第１データベースから前記更新データおよび前記トランザクション処理の更新データを前記第２データベースに反映するための制御情報を受信するステップと、前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、前記第２データベースへの前記更新データをトランザクション単位に反映するステップとを実行させる。
【００２２】
また、本発明に係る二重化制御技術は、トランザクション単位で前記第２データベースの排他制御を開始するステップと、前記第２データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる。
【００２３】
このようにすると、例えば複数のミラーデータベースを同時に参照する複数のアプリケーションにおいて、整合性がとれたデータをトランザクション単位で参照できる。
【００２４】
また、本発明に係る二重化制御技術は、前記第２データベースへの更新処理を複数のプロセスで平行して行うステップを実行させる。
【００２５】
このようにすると、滞留している複数のトランザクションの更新データをまとめて処理することができる。そのため、例えばコード変換処理やデータベース更新処理のＣＰＵ負荷を軽減することができるともに、更新データの反映時間を短縮することができる。
【００２６】
さらに、本発明に係る二重化制御技術は、第２データベース数と同数のプロセスを実行できない場合、各プロセスの更新データの量が均等に近づくように、それぞれのプロセスが処理するデータベースを割り当てるステップを実行させる。
【００２７】
このようにすると、データの更新時間の短縮とトランザクション単位の更新を保証するためのミラーデータベースの排他処理における同時待ち時間を短縮することができる。
【００２８】
また、本発明はコンピュータに以上のいずれかの機能を実現させるプログラムを読み取り可能な記憶媒体に記憶したものであってもよい。
【００２９】
【発明の実施の形態】
以下に図面を参照にして、本発明の好適な実施の形態を説明する。
＜好適な実施の形態＞
以下、図１から図１６に基づいて本発明の好適な実施の形態に係る複数データベースの二重化制御システムについて説明する。図１は二重化制御のシステム構成を示す図であり、図２は業務アプリケーションの処理フローを示す図であり、図３はデータベース制御の処理フローを示す図であり、図４はデータベース制御処理における指示データの構成図であり、図５および図６は二重化データ採取・編集制御の処理フローを示す図であり、図７および図８は二重化データ採取・編集制御処理における指示データの構成図であり、図９は二重化データ送信制御の処理フローを示す図であり、図１０は二重化データ送信制御処理の指示データ構成図であり、図１１はマスタデータベース更新側のネットワーク制御の処理フローを示す図であり、図１２はミラーデータベース更新側のネットワーク制御の処理フローを示す図であり、図１３は二重化データ送信・組立制御の処理フローを示す図であり、図１４は二重化データ送信・組立制御処理の指示データの構成図であり、図１５は二重化データ反映制御の処理フローを示す図であり、図１６はデータベース更新の処理フローを示す図である。
＜二重化制御のシステム構成＞
図１を参照して、複数データベースの二重化制御システムのシステム構成を説明する。
【００３０】
本システムは、ネットワークを介して接続されるマスターデータベース更新システムとミラーデータベース更新システムとから構成される。
【００３１】
マスターデータベース更新システムは、業務アプリケーション部１と、ＤＢ制御処理部２と、リアルタイム二重化制御処理部３と、ネットワーク制御処理部４とを含む。そして、さらにリアルタイム二重化制御処理部３では、処理１として、二重化データ採取・編集制御処理が実行され、処理２として、二重化データ採取・編集制御処理が実行される。
【００３２】
ミラーデータベース更新システムは、ネットワーク制御処理部５と、二重化データ送信制御処理部６とを含む。そして、さらにリアルタイム二重化処理部６では、処理３として、二重化データ受信・組立制御処理が実行され、処理４として、二重化データ反映制御処理が実行され、処理５として、ＤＢ更新処理が実行される。
【００３３】
業務アプリケーション部１は、既存のユーザ作成プログラムであり、各業務の処理でマスタデータベース７（図１のマスタＤＢ１からＤＢｎ）を更新する。
【００３４】
そして、ＤＢ制御処理部２は、各システムが提供するデータベース７を更新するプログラムであり、データベース７の更新が発生した場合、更新データを二重化データ採取・編集制御処理部３１に通知する機能を持つ。
【００３５】
そして、二重化データ採取・編集制御処理部３１と二重化データ送信制御処理部３２は、複数データベースのリアルタイム二重化制御を実現するための新規プログラムを含む処理部である。これらは、以下で詳しく説明する。
【００３６】
そして、マスタデータベース更新システムとミラーデータベース更新システム上のネットワーク制御処理部４，５は、ネットワーク（ＬＡＮなど）を介してデータの受け渡しを行う各々のシステム（データベース更新システムおよびミラーデータベース更新システム）が標準に提供する通信プログラムを有する処理部である。
【００３７】
そして、二重化データ受信・組立制御処理部３３、二重化データ反映制御処理部３４とＤＢ更新制御処理部３５は、複数データベースのリアルタイム二重化制御を実現するためのプログラムを有する処理部である。これらは、以下で詳しく説明する。
【００３８】
次に、それぞれの処理部における処理について、図２から図１６を参照にして説明する。
＜業務アプリケーションの処理フロー＞
図２は、業務アプリケーション部１が実行するデータベース更新処理部分を抽出したフローチャートである。また、業務アプリケーション処理は、既存のユーザ作成プログラムで実行され、各業務の処理でマスタデータベース７を更新する。
【００３９】
最初に、業務アプリケーション部１はトランザクション開始処理を実行する（Ｓ２０１）。
【００４０】
そして、業務アプリケーション部１はＤＢ制御処理部２にトランザクションスタート指示を通知して、データベース制御処理を起動させる（Ｓ２０２）。なお、ＤＢ制御処理部２については、図３で詳しく説明する。
【００４１】
次に、業務アプリケーション部１は、ＤＢ１についてマスタデータベース更新処理を実行する（Ｓ２０３）。
【００４２】
そして、業務アプリケーション部１は、ＤＢ制御処理部２にＤＢ１の更新指示を通知して、データベース制御処理を起動させる（Ｓ２０４）。
【００４３】
以下、ＤＢ１からＤＢｎで示される各々のデータベースに関して、マスタデータベース更新処理を実行し（Ｓ２０５）、データベース制御処理を起動させ（Ｓ２０６）、同様の処理を繰り返す。
【００４４】
そして、業務アプリケーション部１はトランザクション終了処理を実行する（Ｓ２０７）。
【００４５】
最後に、業務アプリケーション部１はデータベース制御処理部２にトランザクションエンド指示を通知して、データベース制御処理を起動させて（Ｓ２０８）処理を終了する。
＜データベース制御の処理フロー＞
次に、業務アプリケーション処理部１によって起動させられたデータベース制御処理について説明する。
【００４６】
図３は、ＤＢ制御処理のフローチャートである。このデータベース制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムによって実行される。このプログラムをＤＢ制御処理部２と呼ぶ。
【００４７】
ＤＢ制御処理部２は、業務アプリケーション部１より依頼された各々の処理が実行される前に、依頼された要求の制御情報やＤＢ更新データをコピーし、二重化データ採取・編集制御処理部３１に通知する処理を実行する。
【００４８】
最初に、ＤＢ制御処理部２は業務アプリケーション部１により依頼された要求がトランザクションスタートであるか否かを判定する（Ｓ３０１）。
【００４９】
ここで、ＤＢ制御処理部２は、業務アプリケーション部１による要求がトランザクションスタート指示であると判定した場合には、図４に示すトランザクションスタート指示の情報を作成する（Ｓ３０２）。
【００５０】
そして、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１を起動する（Ｓ３０３）。次に、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１にトランザクション開始処理を実行させる（Ｓ３０４）。
【００５１】
一方Ｓ３０１で、ＤＢ制御処理部２は、業務アプリケーション部１により依頼された要求がトランザクションスタートでないと判定した場合には、業務アプリケーション部１による要求がＤＢ更新指示であるか否かを判定する（Ｓ３０５）。
【００５２】
ここで、ＤＢ制御処理部２は、業務アプリケーション部１による要求がＤＢ更新指示であると判定した場合には、図４に示すＤＢ更新指示の情報を作成する（Ｓ３０６）
そして、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１を起動する（Ｓ３０７）。それから、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１にマスタＤＢ更新処理を実行させる（Ｓ３０８）。ただし、このマスタＤＢ更新処理は既存の処理である。
【００５３】
一方Ｓ３０５で、ＤＢ制御処理部２は、業務アプリケーション部１により依頼された要求がＤＢ更新指示でないと判定した場合には、業務アプリケーション部１による要求がトランザクションエンドであるか否かを判定する（Ｓ３０９）。
【００５４】
ここで、ＤＢ制御処理部２は、業務アプリケーション部１による要求がトランザクションエンドであると判定した場合には、図４に示すトランザクションエンド指示の情報を作成する（Ｓ３１０）。
【００５５】
そして、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１を起動する（Ｓ３１１）。次に、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１にトランザクション終了処理を実行させる（Ｓ３１２）。
【００５６】
一方Ｓ３０９で、ＤＢ制御処理部２は、業務アプリケーション部１により依頼された要求がトランザクションエンドでないと判定した場合には、業務アプリケーション部１による要求が異常発生であるか否かを判定する（Ｓ３１３）。
【００５７】
ここで、ＤＢ制御処理部２は、業務アプリケーション部１による要求が異常発生であると判定した場合には、図４に示す異常終了指示の情報を作成する（Ｓ３１４）。
【００５８】
そして、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１を起動する（Ｓ３１５）。次に、ＤＢ制御処理部２は、二重化データ採取・編集処理部３１にマスタＤＢ復旧処理を実行させる（Ｓ３１６）。
【００５９】
一方Ｓ３１３で、ＤＢ制御処理部２は、業務アプリケーション部１により依頼された要求が異常発生でないと判定した場合には、処理を終了する。
【００６０】
ここで、図４を参照して、データベース制御処理における各々の指示データの構成について説明する。
【００６１】
トランザクションスタート指示のデータは、制御情報フィールドとデータ長とその他の情報フィールドから構成される。このデータは、二重化データ採取・編集制御処理部３１にトランザクションの開始を指示する。制御情報フィールドは８ビットで表され、先頭を１とする。トランザクションスタート指示のデータにおいて、制御情報フィールドの他のビットはＸで表され、いわゆる「ｄｏｎ’ｔ　ｃａｒｅ」である。データ長フィールドはその後に続くデータの長さを表し、ここではｎｎとする。その他の情報フィールドは、業務アプリケーション名、ミラーＤＢ更新システムの情報などのデータを含む。なお、ミラーＤＢ更新システムの情報は、複数のシステムに反映する場合には複数のシステムの情報を含む。
【００６２】
ＤＢ更新指示データは、制御情報、テーブル名長、更新テーブルの名前、データ長とＤＢ更新データの各フィールドから構成される。このデータは二重化データ採取・編集制御処理部３１にデータベースの更新を指示する。制御情報フィールドは８ビットで表され、５ビット目を１とする。テーブル名長フィールドはその後に続く更新テーブルの名前のデータ長を表し、ここではｔｔとする。更新テーブルとはデータベース上の更新されたテーブルをいう。データ長フィールドはその後に続くＤＢ更新データの長さを表し、ここではｎｎとする。
【００６３】
トランザクションエンド指示データは、トランザクション処理の終了を指示するため制御情報のみを含む。そのためデータ長は０である。制御情報フィールドは８ビットで表され、２ビット目を１とする。
【００６４】
異常終了指示データは、二重化データ採取・編集制御処理部３１に異常終了を通知するため制御情報のみを含む。そのためデータ長は０である。制御情報フィールドは８ビットで表され、８ビット目を１とする。
＜二重化データ採取・編集制御の処理フロー＞
図５及び図６は、二重化データ採取・編集制御処理のフローチャートである。この二重化データ採取・編集制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムによって実行される。このプログラムを二重化データ採取・編集制御処理部３１と呼ぶ。
【００６５】
まず図５を参照して、二重化データ採取・編集制御処理について説明する。
【００６６】
最初に、二重化データ採取・編集制御処理部３１はＤＢ制御処理部２により依頼された要求がトランザクションスタートであるか否かを判定する（Ｓ５０１）。ここで、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２による要求がトランザクションスタート指示であると判定した場合には、図７に示すトランザクション制御情報を制御表に設定する（Ｓ５０２）。そして、二重化データ採取・編集制御処理部３１は処理を終了する。
【００６７】
一方Ｓ５０１で、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２により依頼された要求がトランザクションスタートでないと判定した場合には、ＤＢ制御処理部２による要求がＤＢ更新指示であるか否かを判定する（Ｓ５０３）。
【００６８】
ここで、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２による要求がＤＢ更新指示であると判定した場合には、図７に示すような制御表に設定されているトランザクション制御情報を付加してＤＢ更新要求を作成して（Ｓ５０４）、処理を図６のＢに進める。
【００６９】
一方Ｓ５０３で、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２により依頼された要求がＤＢ更新指示でないと判定した場合には、ＤＢ制御処理部２による要求がトランザクションエンド指示であるか否かを判定する（Ｓ５０５）。
【００７０】
ここで、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２による要求がトランザクションエンド指示であると判定した場合には、図７に示すトランザクションエンド要求を作成し（Ｓ５０６）、処理を図６のＢに進める。
【００７１】
一方Ｓ５０５で、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２により依頼された要求がトランザクションエンド指示でないと判定した場合には、ＤＢ制御処理部２による要求が異常発生であるか否かを判定する（Ｓ５０７）。
【００７２】
ここで、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２による要求が異常発生であると判定した場合には、異常発生通知（トランザクションキャンセル通知）を作成し（Ｓ５０８）、処理を図６のＢに進める。
【００７３】
一方Ｓ５０５で、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２により依頼された要求が異常発生でないと判定した場合には、ＤＢ制御処理部２による要求がＤＢ反映完了通知であるか否かを判定する（Ｓ５０９）。
【００７４】
ここで、二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２による要求がＤＢ反映完了通知であると判定した場合には、送信が完了したデータをログファイルから削除し（Ｓ５１０）、処理を図６のＣに進める。
【００７５】
次に図６を参照して、二重化データ採取・編集制御処理を引き続き説明する。
【００７６】
図６のＢの処理は、ＤＢ更新要求（Ｓ５０４）、トランザクションエンド要求（Ｓ５０６）、および異常発生通知要求（Ｓ５０８）が作成された後に実行される。
【００７７】
まず、二重化データ採取・編集制御処理部３１は、作成した上記要求を保留キューの最後へキューイングし（Ｓ６０１）、ログファイルに格納する（Ｓ６０２）。この要求のキューイングについては、図７で説明する。
【００７８】
次に、二重化データ採取・編集制御処理部３１は送信可能状態か否かを判定する（Ｓ６０３）。このＳ６０３の処理は、送信が完了したデータをログファイルから削除した（Ｓ５１０）後にも実行される。なお、送信可能状態か否かの判定方法については、図７の＊１０に示すシステムの共有メモリの値をチェックして判定する。
【００７９】
ここで、二重化データ採取・編集制御処理部３１は、送信不可であると判定した場合には、処理を終了する。
【００８０】
一方、二重化データ採取・編集制御処理部３１は、送信可能であると判定した場合には、保留データが複数存在するか否かを判定する（Ｓ６０４）。ここで、二重化データ採取・編集制御処理部３１は、保留データが複数存在しないと判定した場合には、二重化データ送信制御部３２を起動し、ネットワーク制御部４に送信要求を依頼する（Ｓ６０７）。そして、二重化データ採取・編集制御処理部３１は、処理をＳ６０８に進める。
【００８１】
一方Ｓ６０４で、二重化データ採取・編集制御処理部３１は、保留データが複数存在すると判定した場合には、保留データ長が保留可能最大長（β）より長いか否かを判定する（Ｓ６０５）。ここで、二重化データ採取・編集制御処理部３１は、保留データ長が保留可能最大長（β）より長いと判定した場合、リアルタイム二重化処理の終了と再開処理を実施し（Ｓ６０９）、処理を終了する。
【００８２】
このＳ６０９の処理は、更新データが所定値を越えたとき、更新データの送信を中断し、マスタデータベースの全データを一括して送信し、ミラーデータベースを再度作り直す処理である。
【００８３】
まず、二重化データ採取・編集制御処理部３１は、ミラーデータベース更新システムに二重化処理の中断を通知する。この通知を受けて、ミラーデータベース更新システムでは、ミラーデータベースのデータが削除される。
【００８４】
次に、二重化データ採取・編集制御処理部３１は、マスタデータベースの更新データを一括して抽出し、ミラーデータベース更新システムに送信する。
【００８５】
そして、ミラーデータベース更新システムでは、一括して送信された更新データに基づいて、ミラーデータベースは再度作成される。
【００８６】
その後、二重化データ採取・編集制御処理部３１は、ミラーデータベース更新システムに二重化処理の再開を通知し、二重化処理を再開する。すなわち、二重化データ採取・編集制御処理部３１は、リアルタイム二重化処理の終了と再開処理を終了する。
【００８７】
一方Ｓ６０５で、二重化データ採取・編集制御処理部３１は、保留データ長が保留可能最大長（β）より長くないと判定した場合、
二重化データ採取・編集制御処理部３１は、要求（ＤＢ更新要求、トランザクションエンド要求、あるいは異常発生通知要求）をキューより取り出し最大送信データ長（α）の要求に組み立て直す（Ｓ６０６）。
【００８８】
そして、二重化データ採取・編集制御処理部３１は、二重化データ送信制御部３２を起動し、ネットワーク制御部４に送信要求を依頼する（Ｓ６０７）。
【００８９】
その後、二重化データ採取・編集制御処理部３１は、保留データがまだ存在するか否かを判定する（Ｓ６０８）。この処理は、Ｓ６０４の処理で、二重化データ採取・編集制御処理部３１が保留データは複数存在しないと判定して、ネットワーク制御部４に送信要求を依頼した（Ｓ６０７）後にも実行される。
【００９０】
ここで、二重化データ採取・編集制御処理部３１は、制御表の中に保留キューが存在しないと判定した場合には、処理を終了する。
【００９１】
一方、二重化データ採取・編集制御処理部３１は、制御表の中に保留キューがまだ存在すると判定した場合には、処理をＳ６０３に戻し、保留データが存在しなくなるまで繰り返す。
【００９２】
図７の＊５に示す制御表には、トランザクション情報として、保留キューの先頭と最後、業務アプリケーションの情報、相手システムの情報が設定される。すなわち、それぞれの情報のデータは、メモリなどの記憶領域に格納されており、制御表にはそのアドレス情報が含まれる。
【００９３】
また、この制御表はトランザクションスタート指示を受けて設定され、ログファイル上に格納される。なお、複数のミラーデータベースを作成する場合には相手システム情報フィールドをさらに追加する。
【００９４】
ここで業務アプリケーションの情報とは、アプリケーション名など更新したデータベース側のアプリケーションの情報をさす。
【００９５】
また相手システムの情報とは、システム名や最大送信データなどミラーデータベース側のシステム情報をさす。
【００９６】
ＤＢ更新要求データは、業務アプリケーション情報、相手システム情報、制御情報、テーブル名長、更新テーブルの名前、データ長、更新データから構成される。この要求データは、二重化データ採取・編集部３１がＤＢ制御処理部２からの指示に従って、図７の＊５の制御表を参照して作成する。ここで業務アプリケーション情報と相手システムは、ログファイル上に格納される制御表を参照して作成される。また、相手システム情報フィールドは、複数のミラーデータベースを作成する場合には追加される。
【００９７】
トランザクションエンド要求データは、業務アプリケーション情報、相手システム情報、制御情報から構成される。二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２からトランザクションエンド指示を受けて、制御表よりトランザクション情報をコピーし、トランザクションエンド要求データを作成する。
【００９８】
異常発生通知要求データは、業務アプリケーション情報、相手システム情報、制御情報から構成される。二重化データ採取・編集制御処理部３１は、ＤＢ制御処理部２から異常発生通知を指示を受けて、トランザクションをキャンセルすると共に、制御表よりトランザクション情報をコピーし、トランザクションエンド要求データを作成する。
【００９９】
次に、図７を参照して、制御表への保留キューのキューイングを説明する。
【０１００】
それぞれの要求は、制御表の保留キューの最後にキューイングされる。このとき、キューが空の場合には、そのままその要求を保留キューから取り出す。一方、キューが空でない、つまりキューに他の要求がある場合には、保留キューの最後にキューイングする。この処理は、図５での各要求（ＤＢ更新要求、トランザクションエンド要求、および異常発生要求）を作成した後、Ｓ６０１で実行される処理である。
【０１０１】
図８を参照して、二重化データ採取・編集制御処理部３１が図６のＳ６０３の処理で実行する送信可能状態の判定方法について説明する。
【０１０２】
二重化データ採取・編集制御処理部３１は、共有メモリの値で送信可能状態を判定する。この共有メモリは二重化データ採取・編集制御処理部３１と二重化データ送信制御処理３２との間でアクセスすることができる。
【０１０３】
本実施の形態においては、送信可な場合の共有メモリの値を「１」とし、送信不可な場合の共有メモリの値を「０」とする。なお、送信可能状態の初期値は「１」、すなわち送信可である。
【０１０４】
また、この送信可能状態は二重化データ送信制御部３２によって設定される。
【０１０５】
次に、保留キューからの各要求の取り出し方について説明する。この処理は図６のＳ６０６において実行される処理である。
【０１０６】
まず、保留キューが空の場合には、二重化データ採取・編集制御処理部３１は無条件に要求を取り出す。
【０１０７】
一方、保留キューが空でない、つまり保留キューに他の要求が存在する場合には、二重化データ採取・編集制御処理部３１は、各要求のデータ長を調べ、最大送信データ長（α）以下となる要求を複数まとめて取り出す。
【０１０８】
このため複数の要求が待たされていた場合、最大送信データ長となるように複数のデータを組み立てて送信することが可能となる。
＜二重化データ送信制御の処理フロー＞
図９は、二重化データ送信制御処理のフローチャートである。この二重化データ送信制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムである。このプログラムを二重化データ送信制御処理部３２と呼ぶ。
【０１０９】
二重化データ送信制御処理部３２は、二重化データ採取・編集制御処理部３１が依頼した各要求の送信をネットワーク制御部４に依頼する。
【０１１０】
また、ネットワーク制御部４が通知した各通知（送信完了、ＤＢ反映完了通知）を二重化データ採取・編集制御処理部３１に通知する。
【０１１１】
最初に、二重化データ送信制御処理部３２は依頼された要求が送信要求であるか否かを判定する（Ｓ９０１）。ここで、送信要求とは、二重化データ採取・編集制御処理部３１からのＤＢ更新要求、トランザクションエンド要求、異常発生通知要求のうちのいずれかをさす。
【０１１２】
ここで、二重化データ送信制御処理部３２は、要求が送信要求であると判定した場合には、ネットワーク制御処理部４を起動し、送信を依頼する（Ｓ９０２）。
【０１１３】
そして、二重化データ送信制御処理部３２は、ネットワーク制御処理部４が送信可能か否かを判定する（Ｓ９０３）。
【０１１４】
ここで、二重化データ送信制御処理部３２は、ネットワーク制御処理部４が送信可能であると判定した場合には、処理を終了する。
【０１１５】
一方Ｓ９０３で、二重化データ送信制御処理部３２は、ネットワーク制御処理部４が送信可能でないと判定した場合には、送信不可状態を設定して（Ｓ９０４）、処理を終了する。すなわち、ネットワーク制御処理部４への送信依頼が上限値に達したとして、二重化データ採取・編集制御処理部３１と二重化データ送信制御処理部３２との間でアクセスできる共有メモリ上の制御表に図１０に示すような送信不可を設定して制御を終了する。
【０１１６】
一方Ｓ９０１で、二重化データ送信制御処理部３２は、要求が送信要求でないと判定した場合には、受信情報が送信完了通知であるか否かを判定する（Ｓ９０５）。
【０１１７】
ここで、二重化データ送信制御処理部３２は、受信情報が送信完了通知であると判定した場合には、二重化データ採取・編集制御処理部３１と二重化データ送信制御処理部３２との間の共有メモリ上の制御表に送信可状態を設定し（Ｓ９０６）、二重化データ採取・編集制御処理を起動する（Ｓ９０７）。
【０１１８】
一方Ｓ９０５で、二重化データ送信制御処理部３２は、受信情報が送信完了通知でないと判定した場合には、受信情報がＤＢ反映完了通知であるか否かを判定する（Ｓ９０８）。
【０１１９】
ここで、二重化データ送信制御処理部３２は、受信情報がＤＢ反映完了通知であると判定した場合には、図１０に示すＤＢ反映完了通知を作成し（Ｓ９０９）、制御をＳ９０７の処理に進める。
【０１２０】
一方Ｓ９０８で、二重化データ送信制御処理部３２は、受信情報がＤＢ反映完了通知でないと判定した場合には、受信情報が送信不可通知であるか否かを判定する（Ｓ９１０）。
【０１２１】
ここで、二重化データ送信制御部３２は、受信情報が送信不可通知であると判定した場合には、送信不可状態を設定する（Ｓ９０４）。すなわち、ネットワークに異常が発生したとして、二重化データ採取・編集制御処理部３１と二重化データ送信制御処理部３２との間でアクセスできる共有メモリ上の制御表（図７の＊５）に図１０に示すような送信不可を設定する。
【０１２２】
そして、二重化データ送信制御処理部３２は、受信情報が送信可通知であるか否かを判定する（Ｓ９１１）。
【０１２３】
ここで、二重化データ送信制御処理部３２は、受信情報が送信可通知であると判定した場合には、二重化データ採取・編集制御処理部３１と二重化データ送信制御処理部３２との間でアクセスできる共有メモリ上の制御表に送信可状態を設定する（Ｓ９０６）。すなわち、ネットワークが復旧したとして、二重化データ採取・編集制御処理部３１と二重化データ送信制御処理部３２との間でアクセスできる共有メモリ上の制御表に図１０に示すような送信可を設定する。
【０１２４】
そして、二重化データ採取・編集制御処理を起動する（Ｓ９０７）。
【０１２５】
一方Ｓ９１１で、二重化データ送信制御処理部３２は、受信情報が送信可通知でないと判定した場合には、処理を終了する。
【０１２６】
次に、図１０を参照して、二重化データ送信制御処理における通知データについて説明する。
【０１２７】
送信完了通知は、二重化データ受信・組立制御処理部６３が二重化データ採取・編集制御処理部３１にネットワークを介して送信する通知であり、ミラーデータベース更新システムへの更新データの送信が完了したことを示す。
【０１２８】
ＤＢ反映完了通知は、ミラーデータベース更新システムが更新データの反映処理が完了したことを示す通知である。
【０１２９】
送信不可通知は、送信依頼が上限値に達したり、ネットワークに異常が発生したりしたときなどに設定される。この通知はミラーデータベース更新システムへの更新データの送信が不可状態であることを示す。
【０１３０】
送信可通知は、ネットワークに異常が発生した後、復旧できたときなどに設定される。この通知はミラーデータベース更新システムへの更新データの送信が可能状態であることを示す。
【０１３１】
ＤＢ反映完了通知は、ミラーデータベース更新システムから受信した通知がＤＢ反映完了通知であることを受けて、二重化データ採取・編集制御処理部３１にミラーデータベース更新システムのＤＢ反映処理が完了したことを示すための通知である。
＜ネットワーク制御の処理フロー＞
図１１および図１２を参照して、マスタデータベース更新側システムとミラーデータベース更新側システムのネットワーク制御処理部４，５について説明する。
【０１３２】
ネットワーク制御処理部４，５は、ネットワーク（ＬＡＮなど）を介してデータの受け渡しを行うため各々のシステム（データベース更新システムおよびミラーデータベース更新システム）が標準に提供する通信プログラムである
まず図１１を参照して、マスタデータベース更新側システムにおけるネットワーク制御処理部４について説明する。
【０１３３】
ネットワーク制御処理４は、二重化データ送信制御部３２から依頼されたデータをネットワーク経由で相手システム（ミラーデータベース更新側システムのネットワーク制御処理５）に送信する。
【０１３４】
また、ネットワーク制御処理４は、相手システム（ミラーデータベース更新側システムのネットワーク制御処理５）から受信したデータを二重化データ送信制御処理部３２に通知する。この相手システムから受信するデータは、相手システムの受信通知と相手側ＤＢへの反映完了を通知するためのデータである。
【０１３５】
さらに、ネットワーク制御処理４は、ネットワーク異常またはネットワーク復旧を二重化データ送信制御処理部３２に通知する。
次に図１２を参照して、ミラーデータベース更新側システムにおけるネットワーク制御処理部５について説明する。
【０１３６】
ネットワーク制御処理５は、相手システム（マスタデータベース更新側システムのネットワーク制御処理部５）から受信したデータを二重化データ受信・組立制御処理部６３に通知する。この相手システムから受信するデータは、トランザクションスタートデータ、ＤＢ更新データ、およびトランザクションエンドデータである。
【０１３７】
また、ネットワーク制御処理５は、ＤＢ更新データを受信したことをネットワーク経由で相手システム（マスタデータベース更新側システムのネットワーク制御処理４）に通知する。
【０１３８】
さらに、ネットワーク制御処理５は、二重化データ組立制御処理部６３から依頼されたデータをネットワーク経由で相手システム（マスタデータベース更新側システムのネットワーク制御処理４）に送信する。この依頼データはＤＢ反映が完了したことを通知するためのデータである。
＜二重化データ送信・組立制御の処理フロー＞
図１３は、二重化データ受信・組立制御処理のフローチャートである。この二重化データ受信・組立制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムである。このプログラムを二重化データ受信・組立制御処理部６３と呼ぶ。
【０１３９】
最初に、二重化データ受信・組立制御処理部６３は受信した情報が異常発生通知であるか否かを判定する（Ｓ１３０１）。
【０１４０】
ここで、二重化データ受信・組立制御処理部６３は、受信した情報が異常発生であると判定した場合には、組立処理中のデータを破棄する（Ｓ１３０２）。そして、二重化データ受信・組立制御処理部６３は、処理を終了する。
【０１４１】
一方Ｓ１３０１で、二重化データ受信・組立制御処理部６３は、受信した情報が異常発生でないと判定した場合には、トランザクションスタートであるか否かを判定する（Ｓ１３０３）。
【０１４２】
ここで、二重化データ受信・組立制御処理部６３は、受信した情報がトランザクションスタートであると判定した場合には、図１４の＊１７に示すデータ組立処理環境を設定する（Ｓ１３０４）。すなわち、二重化データ受信・組立制御処理部３６は、トランザクション単位の組立を行う環境を設定する。このデータ組立用の制御キューについては図１４で詳しく説明する。
【０１４３】
一方Ｓ１３０３で、二重化データ受信・組立制御処理部６３は、受信した情報がトランザクションスタートでないと判定した場合には、受信した情報がＤＢ更新データであるか否かを判定する（Ｓ１３０５）。
【０１４４】
ここで、二重化データ受信・組立制御処理部６３は、受信した情報がＤＢ更新データであると判定した場合には、データ組立処理を実施し、図１４の＊１７に示す組立キューにキュイングする（Ｓ１３０６）。
【０１４５】
一方Ｓ１３０５で、二重化データ受信・組立制御処理部６３は、受信した情報がＤＢ更新データでないと判定した場合には、受信した情報がトランザクションエンドであるか否かを判定する（Ｓ１３０７）。
【０１４６】
ここで、二重化データ受信・組立制御処理部６３は、受信した情報がトランザクションエンドであると判定した場合には、図４に示す組立キューのデータを結合し、保留キューにキューイングする（Ｓ１３０８）。
【０１４７】
そして、二重化データ受信・組立制御処理部６３は、ＤＢ更新処理中であるか否かを判定する（Ｓ１３０９）。
【０１４８】
ここで、ＤＢ更新処理中であると判定した場合には、処理を終了する。
【０１４９】
一方Ｓ１３０９で、二重化データ受信・組立制御処理部６３は、ＤＢ更新処理中ではないと判定した場合には、保留キューにキューイングし、データベースの反映を待機させ、処理をＳ１３１４に進める。
【０１５０】
そして、二重化データ受信・組立制御処理部６３は保留データを取り出す。このとき、保留データが複数ある場合には、組み立て最大サイズ（γ）に達するまで、複数のトランザクションのデータを結合する（Ｓ１３１４）。
【０１５１】
そして、二重化データ受信・組立制御処理部６３は、二重化データ反映制御処理部６４を起動させ、データの反映を依頼する（Ｓ１３１５）。そして、二重化データ受信・組立制御処理部６３は処理を終了する。
【０１５２】
一方Ｓ１３０７で、二重化データ受信・組立制御処理部６３は、受信した情報がトランザクションエンドでないと判定した場合には、受信した情報がＤＢ更新処理完了通知であるか否かを判定する（Ｓ１３１０）。
【０１５３】
ここで、二重化データ受信・組立制御処理部６３は、受信した情報がＤＢ更新処理完了通知でないと判定した場合には、処理を終了する。
【０１５４】
一方Ｓ１３１０で、二重化データ受信・組立制御処理部６３は、受信した情報がＤＢ更新処理完了通知であると判定した場合には、ＤＢ反映完了通知を作成する（Ｓ１３１１）。
【０１５５】
そして、二重化データ受信・組立制御処理部６３は、ネットワーク制御処理部５を起動し、送信を依頼する（Ｓ１３１２）。
【０１５６】
また、データ組立用の制御キューを作成して、保留キューにデータがあるか否かを判定する（Ｓ１３１３）。
【０１５７】
ここで、保留キューにデータがないと判定した場合には、二重化データ受信・組立制御処理部６３は処理を終了する。
【０１５８】
一方Ｓ１３１３で、保留キューにデータがあると判定した場合には、二重化データ受信・組立制御処理部６３は保留データを取り出す。このとき、保留データが複数ある場合には、組み立て最大サイズ（γ）に達するまで、複数のトランザクションのデータを結合する（Ｓ１３１４）。
【０１５９】
そして、二重化データ受信・組立制御処理部６３は、二重化データ反映制御処理部６４を起動させ、データの反映を依頼する（Ｓ１３１５）。そして、二重化データ受信・組立制御処理部６３は処理を終了する。
【０１６０】
図１４を参照して、データ組立用の制御キューの作成を説明する。
二重化データ受信・組立制御処理部６３は、トランザクションスタート通知を受けて、更新データの組立処理環境を設定する。すなわち、二重化データ受信・組立制御処理部６３は、トランザクションスタート通知により図１４の＊１７の制御キューを作成する。
【０１６１】
この制御キューは組立キューの先頭と最後、保留キューの先頭と最後、相手システム情報などから構成される。
【０１６２】
この組立キューはトランザクションエンド通知を受信するまでの間の一時待ち状態のキューである。そして、組立キューのデータはトランザクションエンド通知を受信することにより結合される。この結合されたデータはトランザクション単位の更新データとなり、保留キューへ移動される。
【０１６３】
また、保留キューはトランザクション単位に組み立てられた更新データが待ち状態のキューである。
＜二重化データ反映制御の処理フロー＞
図１５は、二重化データ反映制御処理のフローチャートである。この二重化データ反映制御処理は複数データベースのリアルタイム二重化制御を実現するプログラムにより実行される。このプログラムを二重化データ反映制御処理部４６と呼ぶ。
【０１６４】
最初に、二重化データ反映制御処理部６４は、受信した情報がＤＢ更新データの反映依頼であるか否かを判定する（Ｓ１５０１）。
【０１６５】
ここで、二重化データ反映制御処理部６４は、受信した情報がＤＢ更新データの反映依頼であると判定した場合には、ＤＢ更新データ数がＤＢ更新処理の起動リミットを越えたか否かを判定する（Ｓ１５０２）。すなわち、二重化データ反映制御処理部６４は、更新データに含まれるＤＢの数を調べる。そして、更新データの反映依頼を受けたＤＢの数がＤＢ更新処理部６４の起動リミット以下か否かを判定する。
【０１６６】
ここで、ＤＢ更新データ数がＤＢ更新処理の起動リミットを越えた場合には、データ長の大きい順にＤＢ更新データを並び替え（Ｓ１５０３）、１番小さいデータと２番目に小さいデータを結合する（Ｓ１５０４）。そして、Ｓ１５０２に戻って、ＤＢ更新データ数がＤＢ更新処理の起動リミットを越えるまで処理を繰り返す。
【０１６７】
一方Ｓ１５０２で、二重化データ反映制御処理部６４は、ＤＢ更新データ数がＤＢ更新処理の起動リミットを越えてないと判定した場合には、ＤＢ更新データを１つ取り出す（Ｓ１５０５）。そして、ＤＢ更新処理部６５を起動させる（Ｓ１５０６）。
【０１６８】
そして、ＤＢ更新データはまだあるか否かを判定する（Ｓ１５０７）。判定の結果、ＤＢ更新データがなければ、二重化データ反映制御処理部６４は処理を終了する。一方判定の結果、ＤＢ更新データがまだ存在するならば、二重化データ反映制御処理部６４は処理をＳ１５０５に戻して、ＤＢ更新データがなくなるまで繰り返す。
【０１６９】
一方Ｓ１５０１で、二重化データ反映制御処理部６４は、ＤＢ更新データの反映依頼でない判定した場合には、ＤＢ更新処理の完了通知であるか否かを判定する（Ｓ１５０８）。
【０１７０】
ここで、受信した情報がＤＢ更新処理の完了通知である場合には、二重化データ反映制御処理部６４は、全てのＤＢ更新処理が完了したか否かを判定する（Ｓ１５０９）。
【０１７１】
ここで、二重化データ反映制御処理部６４は、全てのＤＢ更新処理が完了したと判定した場合には、更新するＤＢの排他制御を解除する（Ｓ１５１０）。すなわち、トランザクション単位で複数データベースの更新処理の完了の同期を取るため、該当ＤＢすべての排他処理は、全てのプロセスが完了して解除する。
【０１７２】
そして、二重化データ反映制御処理部６４はＤＢ更新処理完了通知を作成する（Ｓ１５１１）。それから、二重化データ反映制御処理部６４は、二重化データ受信・組立制御処理部６３を起動し（Ｓ１５１２）、処理を終了する。
【０１７３】
一方Ｓ１５０８で、二重化データ反映制御処理部６４は、ＤＢ更新処理の完了通知でない判定した場合には、処理を終了する。
【０１７４】
またＳ１５０９で、二重化データ反映制御処理部６４は、全てのＤＢ更新処理が完了したと判定した場合には、処理を終了する。
＜データベース更新の処理フロー＞
図１６は、ＤＢ更新処理のフローチャートである。このＤＢ更新処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムにより実行される。このプログラムをＤＢ更新処理部６５と呼ぶ。なお、この処理は複数起動することができる。また、ＤＢ更新処理を起動する数は、システムの能力に依存するため、この処理能力はチューニング可能とする。
【０１７５】
また、ＤＢ更新処理部６５は二重化データ反映制御処理部６４により起動され、データベース毎にデータを取り出しコード変換とＤＢの更新処理を実行する。
【０１７６】
最初に、二重化データ反映制御処理部６４はＤＢ更新データを１つ取り出し（Ｓ１６０１）、コード変換処理を実行する（Ｓ１６０２）。
【０１７７】
そして、二重化データ反映制御処理部６４は、更新するＤＢの排他制御を開始する（Ｓ１６０３）。なお、トランザクション単位で複数データベースの更新処理の完了の同期を取るため、該当ＤＢすべての排他処理は、全てのプロセスが完了するまで解除しない。
【０１７８】
そして、二重化データ反映制御処理部６４は、ＤＢ更新を実行する（Ｓ１６０４）。
【０１７９】
まず、二重化データ反映制御処理部６４は、ＤＢ更新データはまだあるか否かを判定する（Ｓ１６０５）。
【０１８０】
ここで、二重化データ反映制御処理部６４は、ＤＢ更新データはまだあると判定した場合には、Ｓ１６０１に戻ってＤＢ更新データがなくなるまで処理を繰り返す。
【０１８１】
一方Ｓ１６０５で、ＤＢ更新データがないと判定した場合には、ＤＢ更新処理完了通知を作成する（Ｓ１６０６）。そして、二重化データ反映制御処理部６４は、二重化データ反映制御処理部６４を起動させ（Ｓ１６０７）、処理を終了する。
＜コンピュータ読み取り可能な記憶媒体＞
上記実施の形態のいずれかの処理をコンピュータに実行させるプログラムをコンピュータが読み取り可能な記憶媒体に記憶することができる。そして、コンピュータに、この記憶媒体のプログラムを読み込ませて実行させることにより、上記実施の形態に示した二重化処理の機能を提供させることができる。
【０１８２】
ここで、コンピュータが読み取り可能な記憶媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータから読み取ることができる記憶媒体をいう。このような記憶媒体のうちコンピュータから取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ＤＡＴ、８ｍｍテープ、メモリカード等がある。
【０１８３】
また、コンピュータに固定された記録媒体としてハードディスクやＲＯＭ（リード・オンリー・メモリ）等がある。
【０１８４】
なお、上記実施の形態は本発明の範囲をなんら限定するものではなく、当業者が理解できる範囲において適宜、各種の変形の態様があり得る。
＜その他＞
さらに、本実施の形態は以下の発明を開示する。
【０１８５】
（付記１）トランザクション処理による複数の第１データベースへの複数の更新データを、複数の第２データベースに反映する二重化制御システムにおいて、前記第１データベース側でコンピュータにより実行されるプログラムであって、
トランザクション処理を実行するステップと、
前記トランザクション処理の更新データを前記第２データベースに反映するための制御情報を生成するステップと、
前記トランザクション処理が完了する前に、前記第２データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させるプログラム。
【０１８６】
（付記２）更新処理の途中で異常が発生した場合、第１データベースを更新前の状態に復旧するステップと、
第２データベースに異常を通知するステップとを実行させる付記１に記載のプログラム。
【０１８７】
（付記３）前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる付記２に記載のプログラム。
【０１８８】
（付記４）送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、
第１データベース上の全データを一括して送信するステップとを実行させる付記３に記載のプログラム。
【０１８９】
（付記５）複数の第１データベースへの更新データを、複数の第２データベースに反映する二重化制御システムにおいて、前記第２データベース側でコンピュータにより実行されるプログラムであって、
前記第１データベースから前記更新データおよび前記トランザクション処理の更新データを前記第２データベースに反映するための制御情報を受信するステップと、
前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、
前記第２データベースへの前記更新データをトランザクション単位に反映するステップとを実行させるプログラム。
【０１９０】
（付記６）前記第２データベースへの前記更新データをトランザクション単位に反映する前記ステップは、
前記複数の第１データベース毎に前記データを取り出すステップと、
コード変換処理を実行するステップとをさらに実行させる付記５記載のプログラム。
【０１９１】
（付記７）トランザクション単位で前記第２データベースの排他制御を開始するステップと、
前記第２データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる付記６に記載のプログラム。
【０１９２】
（付記８）前記更新データが処理待ちである場合、前記更新データを結合するステップと、
前記結合した更新データを一括して処理するステップとを実行させる付記７に記載のプログラム。
【０１９３】
（付記９）前記第２データベースへの更新処理を複数のプロセスで平行して行うステップを実行させる付記８に記載のプログラム。
【０１９４】
（付記１０）第２データベース数と同数のプロセスを実行できない場合、各プロセスの更新データの量が均等に近づくように、それぞれのプロセスが処理するデータベースを割り当てるステップを実行させる付記９に記載のプログラム。
【０１９５】
【発明の効果】
以上で説明したように、本発明は、複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供することができる。
【図面の簡単な説明】
【図１】二重化制御のシステム構成を示す図である。
【図２】業務アプリケーションの処理フローを示す図である。
【図３】データベース制御の処理フローを示す図である。
【図４】データベース制御処理における指示データの構成図である。
【図５】二重化データ採取・編集制御の処理フローを示す図である。
【図６】二重化データ採取・編集制御の処理フローを示す図である。
【図７】二重化データ採取・編集制御処理における指示データの構成図である。
【図８】二重化データ採取・編集制御処理における指示データの構成図である。
【図９】二重化データ送信制御の処理フローを示す図である。
【図１０】二重化データ送信制御処理の指示データ構成図である。
【図１１】ネットワーク制御（マスタデータベース更新側）の処理フローを示す図である。
【図１２】ネットワーク制御（ミラーデータベース更新側）の処理フローを示す図である。
【図１３】二重化データ送信・組立制御の処理フローを示す図である。
【図１４】二重化データ送信・組立制御処理の指示データの構成図である。
【図１５】二重化データ反映制御の処理フローを示す図である。
【図１６】データベース更新の処理フローを示す図である。
【符号の説明】
１…業務アプリケーション部
２…ＤＢ制御処理部
３…マスタデータベース更新側システムのリアルタイム二重化処理部
３１…二重化データ採取・編集制御処理部
３２…二重化データ送信制御処理部
４…マスタデータベース更新側システムのネットワーク制御処理部
５…ミラーデータベース更新側システムのネットワーク制御処理部
６…ミラーデータベース更新側システムのリアルタイム二重化処理部
６３…二重化データ受信・組立制御処理部
６４…二重化データ反映制御処理部
６５…ＤＢ更新処理部
７…マスターデータベース
８…ミラーデータベース
【図１】
2004133598.tif 000003
【図２】
2004133598.tif 000004
【図３】
2004133598.tif 000005
【図４】
2004133598.tif 000006
【図５】
2004133598.tif 000007
【図６】
2004133598.tif 000008
【図７】
2004133598.tif 000009
【図８】
2004133598.tif 000010
【図９】
2004133598.tif 000011
【図１０】
2004133598.tif 000012
【図１１】
2004133598.tif 000013
【図１２】
2004133598.tif 000014
【図１３】
2004133598.tif 000015
【図１４】
2004133598.tif 000016
【図１５】
2004133598.tif 000017
【図１６】
2004133598.tif 000018