(57)【特許請求の範囲】
【請求項１】
データを記憶する第１の記憶手段と、
上位装置からの指示にしたがって第１のデータを前記第１の記憶手段に記憶する第１の正系処理手段と、
前記第１の正系処理手段が前記第１のデータを前記第１の記憶手段に記憶することを抑止する第１の抑止手段と、
を備える第１のサーバと、
データを記憶する第２の記憶手段と、
前記第１のサーバからの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する副系処理手段と、
前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理手段と、
前記第１のサーバからの要求の受付けを抑止する第２の抑止手段と、
第２の問合せを行なう第２の問合せ手段と、
を備える第２のサーバと、
前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバに対して処理停止を指示するとともに前記第２のサーバに対して前記第２の正系処理手段の実行を指示する調停手段と、
を備え、
前記第１のサーバは、前記調停手段からの処理停止の指示に応じて、前記第１の正系処理手段の動作を停止し、
前記第２のサーバは、前記第１のサーバ−前記第２のサーバ間の通信に異常を検出すると、前記第１のサーバからの要求の受付けを抑止し、前記第１のサーバからの要求の受付けを抑止した後に前記調停手段に前記第２の問合せを行い、前記調停手段からの実行の指示に応じて、前記第２の正系処理手段の動作を行う、
ことを特徴とするデータベースシステム。
【請求項２】
前記第１のサーバは、第１の問合せを行う第１の問合せ手段をさらに備え、
前記調停手段は、前記第１のサーバから前記第１の問合せを受けると、前記第２のサーバに対して処理停止を指示するとともに前記第１のサーバに対して前記第１の正系処理手段の実行を指示し、
前記第１のサーバは、前記第１のサーバ−前記第２のサーバ間の通信に異常を検出すると、前記第１の抑止手段を実行し、前記第１の抑止手段を実行した後に前記調停手段に前記第１の問合せを行い、前記調停手段からの実行の指示に応じて、前記第１の正系処理手段の動作を行い、
前記第２のサーバは、前記調停手段からの処理停止の指示に応じて、前記第２の正系処理手段の動作を停止する、
ことを特徴とする請求項１に記載のデータベースシステム。
【請求項３】
前記第１のサーバは、
前記第１の正系処理手段が動作している正系運用状態、動作を停止して前記調停手段からの指示を待っている正系待ち状態、または、前記第２のサーバで前記副系処理手段が実行されることなく前記第１の正系処理手段が動作している蓄積正系状態を示す第１の状態情報を記憶する第１の状態情報記憶手段と、
前記第１の状態情報を前記調停手段に通知する第１の通知手段と、
をさらに備え、
前記第１のサーバ−前記第２のサーバ間の通信に異常を検出して前記第１の抑止手段を実行すると、前記正系運用状態から前記正系待ち状態に移行し前記調停手段に前記第１の問合せを行い、前記調停手段からの実行の指示に応じて、前記蓄積正系状態に移行し、
前記第２のサーバは、
前記副系処理手段が動作している副系運用状態、動作を停止して前記調停手段からの指示を待っている副系待ち状態、または、前記第２の正系処理手段が動作している昇格正系運用状態を示す第２の状態情報を記憶する第２の状態情報記憶手段と、
前記第２の状態情報を前記調停手段に通知する第２の通知手段と、
をさらに備え、
前記第１のサーバ−前記第２のサーバ間の通信に異常を検出して前記第２のサーバからの要求の受付けを抑止すると、前記副系運用状態から前記副系待ち状態に移行し前記調停手段に前記第２の問合せを行い、前記調停手段からの実行の指示に応じて、前記昇格正系運用状態に移行し、
前記調停手段は、
前記第１のサーバから通知される前記第１の状態情報と、前記第２のサーバから通知される前記第２の状態情報と、を記憶する第３の記憶手段をさらに備え、
前記第１の問合せまたは前記第２の問合せを受けると、前記第３の記憶手段に記憶されている前記第１のサーバまたは前記第２のサーバの状態に基づいて、前記第１のサーバおよび第２のサーバに対して指示を行なう、
ことを特徴とする請求項２に記載のデータベースシステム。
【請求項４】
前記調停手段は、
前記第１のサーバが前記正系運用状態、かつ、前記第２のサーバが前記副系運用状態である通常状態を検出したときに有効を設定する通常状態捕捉情報を記憶する通常状態捕捉情報記憶手段と、
前記第１のサーバおよび前記第２のサーバに対して指示を行なったときに有効を設定する指示済情報を記憶する指示済情報記憶手段と、
をさらに備え、
前記第１のサーバから前記第１の問合せを受けると、前記第２のサーバが前記副系待ち状態であって前記通常状態捕捉情報および前記指示済情報が有効のときには、前記第１のサーバに対して停止を指示し、
前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバが前記正系待ち状態であって前記通常状態捕捉情報および前記指示済情報が有効のときには、前記第２のサーバに対して停止を指示する、
ことを特徴とする請求項３に記載のデータベースシステム。
【請求項５】
第１のサーバに、
上位装置からの指示にしたがって第１のデータを第１の記憶手段に記憶する第１の正系処理と、
前記第１のサーバと通信可能に接続する第２のサーバとの通信に異常を検出すると、前記上位装置からの指示にしたがって前記第１のデータを前記第１の記憶手段に記憶すること、を抑止する第１の抑止処理と、
前記第１のサーバと前記第２のサーバの動作を調停する調停手段からの処理停止の指示に応じて、前記第１の正系処理の実行を停止する処理と、
を実行させ、
前記第２のサーバに、
前記第１のサーバからの指示にしたがって前記第１のデータを第２の記憶手段に記憶する副系処理と、
前記第１のサーバと前記第２のサーバとの通信に異常を検出すると、前記第１のサーバからの要求の受付けを抑止する第２の抑止処理と、
前記第２の抑止処理の実行により前記第１のサーバからの要求の受付けを抑止した後に前記調停手段に第２の問合せを行なう第２の問合せ処理と、
前記調停手段からの実行の指示に応じて、前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理を実行する処理と、
を実行させ、
前記調停手段に、前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバに対して処理停止を指示するとともに前記第２のサーバに対して前記第２の正系処理の実行を指示する処理、
を実行させることを特徴とするデータベース制御方法。
【請求項６】
データを記憶する第２の記憶手段と、
データを記憶する第１の記憶手段と、上位装置からの指示にしたがって第１のデータを前記第１の記憶手段に記憶する第１の正系処理手段と、前記第１の正系処理手段が前記第１のデータを前記第１の記憶手段に記憶することを抑止する第１の抑止手段と、を備え、処理停止の指示に応じて前記第１の正系処理手段の動作を停止する第１のサーバからの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する副系処理手段と、
前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理手段と、
前記第１のサーバからの要求の受付けを抑止する第２の抑止手段と、
第２の問合せを行なう第２の問合せ手段と、
を備え、
前記第１のサーバとの通信に異常を検出すると、前記第１のサーバからの要求の受付けを抑止し、
前記第２の問合せを受けると前記第１のサーバに対して処理停止を指示するとともに前記第２の正系処理手段の実行を指示する調停手段に、前記第１のサーバからの要求の受付けを抑止した後に前記第２の問合せを行い、前記調停手段からの実行の指示に応じて、前記第２の正系処理手段の動作を行う、
ことを特徴とするデータベース装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムおよびデータベース制御方法に関する。
【背景技術】
【０００２】
正系と副系など複数の系を持たせてデータベースを冗長化したデータベースシステムでは、各系のデータベースを調停する装置がないと、利用者が系の切り替えを判断して手動で切り替えを行なう必要がある。以下、各系の動作を調停する装置を「調停装置」という。
【０００３】
一方、調停装置を備えるデータベースシステムでは、調停装置と各系のデータベースとの間のネットワーク障害やデータベース自身の繁忙の可能性があるため、系を切り替える前に、正系のデータベースが停止していることを利用者が目視で行っている。
【０００４】
上記技術に関連して、データベースの管理方法に依存せずに、且つ実用上オンラインサービスを停止させずにデータベースを移行できるようにするデータベース再構成装置が知られている。
【０００５】
また、主センタのデータベース装置が使用不能となったときに運用対象を副センタのデータベース装置へ切り替える作業を速やかに行い、全件複写を行わずに復旧後の運用対象を主センタのデータベース装置に戻すデータベースシステムが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−０４１８８８号公報
【特許文献２】特開２００７−２９３８２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データベースを複数の系で冗長化し、かつ、各系がデータベースを記憶する記憶媒体を独立して持つデータベースシステムでは、正系または副系がダウンしたときに、複数の系のデータベースで同時に更新処理が可能とならないようにする必要がある。複数の系のデータベースで同時に更新処理が可能となった状態を「スプリットブレイン状態」という。
【０００８】
この場合、正系と副系とが互いを監視し、相手の状態変化に応じて自らの状態遷移を決定する必要がある。しかし、正系−副系間を通信可能に接続する系間パスに異常が生じた場合、相手の状態変化を検出することができないため、自らの状態遷移を決定することが不可能となる、という問題があった。
【０００９】
この問題を解決するために、各系の状態を調停する調停装置を利用することが考えられる。
図１は、正系をなす第１のＤＢサーバ１０１およびデータベース１０２と、副系をなす第２のＤＢサーバ１０３およびデータベース１０４と、各系の状態を調停する調停装置１０５と、を備えるデータベースシステム１００を示す図である。図１に記載の番号（１）〜（５）は、以下の（１）〜（５）の記載に対応する。
【００１０】
第１のＤＢサーバ１０１は、データベース１０２を管理・制御する。例えば、第１のＤＢサーバ１０１は、データベース１０２の系の状態等を管理・制御する。同様に、第２のＤＢサーバ１０３は、データベース１０４を管理・制御する。例えば、第２のＤＢサーバ１０３は、データベース１０４の系の状態等を管理・制御する。
【００１１】
また、第１のＤＢサーバ１０１および第２のＤＢサーバ１０３は、データベースの更新を制御するために使用する更新抑止フラグを備える。更新抑止フラグに「有効」が設定されている場合、データベースへの更新が抑止される。また、更新抑止フラグに「無効」が設定されている場合、データベースへの更新が可能となる。
【００１２】
図１では、第１のＤＢサーバ１０１は正系であるから、更新フラグが「無効」に設定されている。また、第２のＤＢサーバ１０３は副系であるから、更新フラグが「有効」に設定されている。
【００１３】
（１）例えば、第１のＤＢサーバ１０１−第２のＤＢサーバ１０３間を通信可能に接続するネットワークに断線等の異常が生じて、第１のＤＢサーバ１０１−第２のＤＢサーバ１０３間が通信不能な状態になった場合を考える。
【００１４】
（２）この場合、第１のＤＢサーバ１０１−第２のＤＢサーバ１０３間が通信不能な状態になったことを検出すると、第２のＤＢサーバ１０３は、調停装置１０５に対して、状態遷移問合せを行う。
【００１５】
（３）すると、調停装置１０５は、第１のＤＢサーバ１０１に対して、停止指示を行う。
（４）同時に、調停装置１０５は、第２のＤＢサーバ１０３に対して、副系から正系に切り替えるための昇格正系指示を行う。
【００１６】
（５）昇格正系指示を受けると、第２のＤＢサーバ１０３は、更新抑止フラグを「有効」から「無効」に変更する。以後、第２のＤＢサーバ１０３が第１のＤＢサーバ１０１の運用を引き継いで正系として動作する。
【００１７】
（６）ここで、第２のＤＢサーバ１０３が第１のＤＢサーバ１０１の運用を引き継いで正系として動作するためには、正系として動作している第１のＤＢサーバ１０１が停止状態、すなわち、更新抑止フラグが「有効」に設定されている状態であることが必要である。しかし、第２のＤＢサーバ１０３が第１のＤＢサーバ１０１の運用を引き継いで正系として動作するまでに、第１のＤＢサーバ１０１が動作を停止しないと、正系と副系はスプリットブレイン状態となる。このように、スプリットブレイン状態となることを防止できない場合があるという課題がある。
【００１８】
本データベースシステムは、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、スプリットブレイン状態になることなく系を切り替えることを可能にすることである。
【課題を解決するための手段】
【００１９】
本データベースシステムの１つの観点によれば、以下に示す第１のサーバ、第２のサーバおよび調停手段を備える。
第１のサーバは、第１の記憶手段と、第１の正系処理手段と、第１の抑止手段と、を備える。
【００２０】
そして、第１の記憶手段は、データを記憶する記憶手段である。また、第１の正系処理手段は、上位装置からの指示にしたがって第１のデータを前記第１の記憶手段に記憶する。また、第１の抑止手段は、前記第１の正系処理手段が前記第１のデータを前記第１の記憶手段に記憶することを抑止する。
【００２１】
また、第２のサーバは、第２の記憶手段と、副系処理手段と、第２の正系処理手段と、第２の抑止手段と、第２の問合せ手段と、を備える。
そして、第２の記憶手段は、データを記憶する記憶手段である。また、副系処理手段は、前記第１のサーバからの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する。また、第２の正系処理手段は、前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する。また、第２の抑止手段は、前記第１のサーバからの要求の受付けを抑止する。また、第２の問合せ手段は、第２の問合せを行なう。
【００２２】
調停手段は、前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバに対して処理停止を指示するとともに前記第２のサーバに対して前記第２の正系処理手段の実行を指示する。
【００２４】
以上の構成において、前記第１のサーバは、前記調停手段からの指示に応じて、前記第１の正系処理手段の動作を停止する。
【００２５】
また、前記第２のサーバは、前記第１のサーバ−前記第２のサーバ間の通信に異常を検出すると、前記第１のサーバからの要求の受付けを抑止し、前記第１のサーバからの要求の受付けを抑止した後に前記調停手段に前記第２の問合せを行い、前記調停手段からの実行の指示に応じて、前記第２の正系処理手段の動作を行う。
【発明の効果】
【００２６】
本データベースシステムによると、スプリットブレイン状態になることなく系を切り替えることができる。
【図面の簡単な説明】
【００２７】
【図１】調停装置を備えるデータベースシステムを説明する図である。
【図２】第１の実施例に係るデータベースシステムを説明する図である。
【図３】第２の実施例に係るデータベースシステムの構成例を示す図である。
【図４】第２の実施例に係る正系および副系の起動処理を示すフローチャートである。
【図５】第２の実施例に係る正系のトランザクション処理を示すフローチャートである。
【図６】第２の実施例に係る副系のトランザクション処理を示すフローチャートである。
【図７】第２の実施例に係る系の異常検出処理を示すフローチャートである。
【図８】第２の実施例に係る系の受信デーモンの処理を示すフローチャートである。
【図９】第２の実施例に係る調停装置の処理を示すフローチャートである。
【図１０】第２の実施例に係るデータベースシステムの正常時の動作を説明する図である。
【図１１】第２の実施例に係るデータベースシステムにネットワーク切断が生じた場合の正系の動作を説明する図である。
【図１２】第２の実施例に係るデータベースシステムにネットワーク切断が生じた場合の正系の動作を説明する図である。
【図１３】第３の実施例に係るデータベースシステムの構成例を示す図である。
【図１４】第３の実施例に係る各系の系状態と系状態の遷移を示す図である。
【図１５】第３の実施例に係る調停装置が系状態表に保持する系状態と系状態の遷移を示す図である。
【図１６】第３の実施例に係る系の異常検出処理を示すフローチャートである。
【図１７】第３の実施例に係る系の受信デーモンの処理を示すフローチャートである。
【図１８】第３の実施例に係る調停装置の処理を示すフローチャートである。
【図１９】第３の実施例に係る調停装置の「正系からの問合せに対する判定処理」（ステップＳ１８０８）を示すフローチャートである。
【図２０】第３の実施例に係る調停装置の「副系からの問合せに対する判定処理」（ステップＳ１８０９）を示すフローチャートである。
【図２１】第３の実施例に係るデータベースシステムの動作を説明する図である。
【図２２】調停装置の再起動時による系への指示矛盾を説明する図である。
【図２３】第４の実施例に係るデータベースシステムの構成例を示す図である。
【図２４】第４の実施例に係る調停装置の処理を示すフローチャートである。
【図２５】第４の実施例に係る調停装置の「正系からの問合せに対する判定処理」（ステップＳ２４１０）を示すフローチャートである。
【図２６】第４の実施例に係る調停装置の「副系からの問合せに対する判定処理」（ステップＳ２４１１）を示すフローチャートである。
【図２７】第４の実施例に係るデータベースシステムの具体的な処理を説明する図である。
【図２８】第４の実施例に係る調停装置が、副系から状態遷移問合せを受けた場合に一定時間正系からの状態遷移問合せを待ち合わせる処理（ステップＳ２６０５）を備えるデータベースシステムの具体的な処理を説明する図である。
【図２９】第４の実施例に係る調停装置が、副系から状態遷移問合せを受けた場合に一定時間正系からの状態遷移問合せを待ち合わせる処理（ステップＳ２６０５）を備えるデータベースシステムの具体的な処理を説明する図である。
【図３０】第４の実施例に係るデータベースシステムの起動時の処理を説明する図である。
【図３１】ネットワークの断線等の異常により、データベースシステムの両系が停止する問題を説明する図である。
【図３２】第２乃至第４の実施例に係る第１のＤＢサーバ、第２のＤＢサーバおよび調停装置を実現する装置の具体的な構成例を示す図である。
【発明を実施するための形態】
【００２８】
以下、本データベーステーブルの実施形態の一例について、図２〜図３２に基づいて説明する。
【実施例１】
【００２９】
図２は、本実施例に係るデータベースシステム２００を説明する図である。
データベースシステム２００は、第１のサーバ２１０と、第２のサーバ２２０と、調停手段２３０と、を備える。そして、第１のサーバ２１０、第２のサーバ２２０および調停手段２３０は、互いに通信可能に接続している。
【００３０】
第１のサーバ２１０は、第１の記憶手段２１１と、第１の正系処理手段２１２と、第１の抑止手段２１３と、第１の問合せ手段２１４と、を備える。
第１の記憶手段２１１は、データを記憶する記憶手段である。例えば、第１の記憶手段２１１にはデータベースを記憶させることができる。以下、第１の記憶手段２１１に記憶する任意のデータを「第１のデータ」という。
【００３１】
第１の正系処理手段２１２は、上位装置からの指示にしたがって第１のデータを第１の記憶手段２１１に記憶する。例えば、第１の正系処理手段２１２は、上位装置からの指示にしたがって、第１の記憶手段２１１に記憶されるデータベーステーブルに対してデータの追加、削除または変更などを含む一連の更新処理を行なう。
【００３２】
第１の抑止手段２１３は、第１の抑止手段２１３が第１のデータを第１の記憶手段２１１に記憶することを抑止する。
第１の問合せ２１４は、調停手段２３０に対して第１の問合せを行なう。第１の問合せとは、例えば、第１のサーバ２１０の今後の動作についての問合せである。
【００３３】
また、第２のサーバ２２０は、第２の記憶手段２２１と、副系処理手段２２２と、第２の抑止手段２２３と、第２の問合せ手段２２４と、第２の正系処理手段２２５と、を備える。
【００３４】
第２の記憶手段２２１は、データを記憶する記憶手段である。例えば、第２の記憶手段２２１にはデータベースを記憶させることができる。
副系処理手段２２２は、第１のサーバ２１０からの要求にしたがって第１のデータを第２の記憶手段２２１に記憶する。例えば、副系処理手段２２２は、第１のサーバ２１０からの要求にしたがって、第２の記憶手段２２１に記憶されるデータベーステーブルに対してデータの追加、削除または変更などを含む一連の更新処理を行なう。この処理により、第１の記憶手段２１１に記憶したデータと同じ第１のデータを第２の記憶手段２２１に記憶することができる。
【００３５】
第２の抑止手段２２３は、第１のサーバ２１０からの要求の受付けを抑止する。この処理により、副系処理手段２２２が第１のデータを第２の記憶手段２２１に記憶することを抑止することができる。
【００３６】
第２の問合せ手段２２４は、調停手段２３０に対して第２の問合せを行なう。第２の問合せとは、例えば、第２のサーバ２２０の今後の動作についての問合せである。
第２の正系処理手段２２５は、上位装置からの指示にしたがって第１のデータを第２の記憶手段２２１に記憶する。例えば、第２の正系処理手段２２５は、上位装置からの指示にしたがって、第２の記憶手段２２１に記憶されるデータベーステーブルに対してデータの追加、削除または変更などを含む一連の更新処理を行なう。
【００３７】
調停手段２３０は、第１のサーバ２１０から第１の問合せを受けると、第２のサーバ２２０に対して処理停止を指示するとともに第１のサーバ２１０に対して第１の正系処理手段２１２の実行を指示する。また、調停手段２３０は、第２のサーバ２２０から第２の問合せを受けると、第１のサーバ２１０に対して処理停止を指示するとともに第２のサーバ２２０に対して第２の正系処理手段２２５の実行を指示する。
【００３８】
以上の構成において、第１のサーバ２１０は、第２のサーバ２２０が副系処理手段２２２を実行して第１のデータを第２の記憶手段２２１に記憶すると、第１の正系処理手段２１２を実行して第１のデータを第１の記憶手段２１１に記憶する。
【００３９】
また、第１のサーバ２１０は、第１のサーバ２１０−第２のサーバ２２０間の通信に異常を検出すると、第１の抑止手段２１３により第１の正系処理手段２１２の実行を抑止する。そして、第１のサーバ２１０は、調停手段２３０に対して第１の問合せを行なう。
【００４０】
調停手段２３０から第１の正系処理手段２１２の実行の指示を受けると、第１のサーバ２１０は、第１の正系処理手段２１２の実行を開始する。また、調停手段２３０から処理停止の指示を受けると第１のサーバ２１０は処理を停止する。
【００４１】
また、第２のサーバ２２０は、第１のサーバ２１０−第２のサーバ２２０間の通信に異常を検出すると、第２の抑止手段２２３により副系処理手段２２２の実行を抑止する。そして、第２のサーバ２２０は、調停手段２３０に対して第２の問合せを行なう。
【００４２】
調停手段２３０から第２の正系処理手段２２５に実行の指示を受けると、第２のサーバ２２０は、第２の正系処理手段２２５の実行を開始する。また、調停手段２３０から処理停止の指示を受けると第２のサーバ２２０は処理を停止する。
【００４３】
以上のように、第１のサーバ２１０−第２のサーバ２２０間の通信に異常を検出すると、第２のサーバ２２０は、第２の抑止手段２２３を実行して第１のサーバ２１０からの要求の受付けを抑止する。したがって、副系処理手段２２２により第１のデータが第２の記憶手段２２１に記憶される処理が抑止される。
【００４４】
一方、第１のサーバ２１０は、第２のサーバ２２０が副系処理手段２２２を実行して第１のデータを第２の記憶手段２２１に記憶すると、第１の正系処理手段２１２を実行して第１のデータを第１の記憶手段２１１に記憶する。したがって、第１の正系処理手段２１２により第１のデータが第１の記憶手段２１１に記憶される処理も抑止される。
【００４５】
その結果、調停手段２３０からの処理停止の指示が何らかの理由で第１のサーバ２１０に通知されない期間に、第１のサーバ２１０が第１の正系処理手段２１２を実行する状態、すなわち、スプリットブレイン状態を防止することができる。したがって、データベースシステム２００は、スプリットブレイン状態になることなく第１のサーバ２１０から第２のサーバ２２０に系を切り替えることができる。
【実施例２】
【００４６】
図３は、本実施例に係るデータベースシステム３００の構成例を示す図である。
図３に示すデータベースシステム３００は、第１のＤＢ（データベース）サーバ３１０と、第２のＤＢ（データベース）サーバ３２０と、調停装置３３０と、を備える。第１のＤＢサーバ３１０と第２のＤＢサーバ３２０と調停装置３３０は、ネットワークを介して互いに通信可能に接続している。ただし、第１のＤＢサーバ３１０と第２のＤＢサーバ３２０と調停装置３３０は、専用線等を介して互いに通信可能に接続してもよい。
【００４７】
図３に示すデータベースシステム３００は、第１のＤＢサーバ３１０が正系、第２のＤＢサーバ３２０が副系の状態にある場合を示している。第１のＤＢサーバ３１０、第２のＤＢサーバ３２０および調停装置３３０は、例えば、図３２で示す構成の情報処理装置に所定のプログラムを実行させることで実現できる。
【００４８】
第１のＤＢサーバ３１０は、データベースに使用するＤＢ（データベース）記憶装置３１１を備える。このＤＢ記憶装置３１１は、例えば、図３２に示す外部記憶装置３２０５によって実現できる。
【００４９】
正系として動作する第１のＤＢサーバ３１０は、ホストコンピュータ３０６からの要求に応じて、例えば、ＤＢ記憶装置３１１に記憶されるデータベーステーブルに対してデータの追加、削除、変更または検索などを含む一連の更新処理を行なう。第１のＤＢサーバ３１０は、この一連の更新処理をログとしてＤＢ記憶装置３１１等に記憶する。以下、この一連の更新処理を「トランザクション処理」といい、そのトランザクション処理のログを「更新ログ」という。
【００５０】
また、第１のＤＢサーバ３１０は、ホストコンピュータ３０６からコミット依頼を受けると、トランザクション処理の内容をデータベースに永続的に反映させるコミット処理を行なう。また、第１のＤＢサーバ３１０は、ホストコンピュータ３０６からロールバック依頼を受けると、先にコミット処理が行なわれた時の状態にデータベースの状態を復元するロールバック処理を実行する。
【００５１】
また、第１のＤＢサーバ３１０は、更新抑止フラグ３１２と受信拒否フラグ３１３とを、例えば、図３２に示すメモリ３２０２等に備える。
更新抑止フラグ３１２は、データベースの更新制御に使用する情報である。例えば、更新抑止フラグ３１２が「無効」に設定されている場合、第１のＤＢサーバ３１０は、データベースの更新を行なうが、更新抑止フラグ３１２が「有効」に設定されている場合、第１のＤＢサーバ３１０は、データベースの更新を行なわない。
【００５２】
受信拒否フラグ３１３は、正系から送られる更新ログやコミット依頼などの受信制御に使用する情報である。第１のＤＢサーバ３１０が正系として動作する場合、受信拒否フラグ３１３は使用されない。この場合、受信拒否フラグ３１３は、必須の情報ではない。図３では、受信拒否フラグ３１３が「−」となっているが、これは受信拒否フラグ３１３が未使用であることを意味している。
【００５３】
第２のＤＢサーバ３２０は、データベースに使用するＤＢ（データベース）記憶装置３２１を備える。このＤＢ記憶装置３２１は、例えば、図３２に示す外部記憶装置３２０５によって実現できる。
【００５４】
副系として動作する第２のＤＢサーバ３２０は、正系として動作する第１のＤＢサーバ３１０から更新ログを受信する。すると、第２のＤＢサーバ３２０は、更新ログにしたがって、例えば、ＤＢ記憶装置３２１に記憶されるデータベーステーブルに対してデータの追加、削除、変更または検索などを含む一連の更新処理、すなわちトランザクション処理を行なう。第２のＤＢサーバ３２０は、この更新処理を更新ログとしてＤＢ記憶装置３２１等に記憶する。
【００５５】
また、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０からコミット依頼を受けると、トランザクション処理の内容をデータベースに永続的に反映させるコミット処理を行なう。また、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０からロールバック依頼を受けると、先にコミット処理が行なわれた時の状態を復元するロールバック処理を実行する。
【００５６】
また、第２のＤＢサーバ３２０は、更新抑止フラグ３２２と受信拒否フラグ３２３とを、例えば、図３２に示すメモリ３２０２等に備える。
更新抑止フラグ３２２は、データベースの更新制御に使用する情報である。例えば、更新抑止フラグ３２２が「無効」に設定されている場合、第２のＤＢサーバ３２０は、データベースの更新を行なうが、更新抑止フラグ３２２が「有効」に設定されている場合、第２のＤＢサーバ３２０は、データベースの更新を行なわない。
【００５７】
受信拒否フラグ３２３は、正系から送られる更新ログやコミット依頼などの受信制御に使用する情報である。例えば、受信拒否フラグ３２３が「無効」に設定されている場合、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０から送られる更新ログやコミット依頼などを受信する。また、受信拒否フラグ３１３が「有効」に設定されている場合、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０から送られる更新ログやコミット依頼などを受信しない。
【００５８】
調停装置３０５は、第１のＤＢサーバ３１０および第２のＤＢサーバ３２０の状態に応じて、停止指示などの状態遷移指示を行なって、第１のＤＢサーバ３１０および第２のＤＢサーバ３２０の状態を調停する。
【００５９】
ホストコンピュータ３０６は、例えば、任意の業務サービスを提供するアプリケーションを実行する。そして、ホストコンピュータ３０６は、アプリケーションにしたがって、第１のサーバ３１０または第２のサーバ３２０に対して所望のトランザクション処理やコミット処理などを要求する。
【００６０】
本実施例に係るデータベースシステム３００において、正系は必要に応じて以下の状態間を遷移することができる。
【００６１】
図４は、本実施例に係る正系および副系の起動処理を示すフローチャートである。なお、第１のＤＢサーバ３１０の起動処理と第２のＤＢサーバ３２０の起動処理は同じ処理なので、図４には、第１のＤＢサーバ３１０についての処理のみを示す。
【００６２】
第１のＤＢサーバ３１０に電源が投入されると、第１のＤＢサーバ３１０は、起動処理を開始する（ステップＳ４００）。
ステップＳ４０１において、第１のＤＢサーバ３１０は、調停装置３３０とネットワーク接続を確立する。ネットワーク接続の確立に成功すると（ステップＳ４０２  ＹＥＳ）、第１のＤＢサーバ３１０は、処理をステップＳ４０３に移行する。また、ネットワーク接続の確立に失敗すると（ステップＳ４０２  ＮＯ）、第１のＤＢサーバ３１０は、処理をステップＳ４０６に移行して異常終了する。
【００６３】
ステップＳ４０３において、第１のＤＢサーバ３１０は、調停装置３３０に対して、系の状態を通知する系の状態通知を送信する。
ステップＳ４０４において、第１のＤＢサーバ３１０は、ステップＳ４０３での系の状態通知の送信が成功したか否かを判別する。例えば、第１のＤＢサーバ３１０は、系の状態通知に対する調停装置３３０からＡＣＫ（ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）の有無により、系の状態通知の送信の成否を判別することができる。
【００６４】
系の状態通知の送信が成功すると（ステップＳ４０４  ＹＥＳ）、第１のＤＢサーバ３１０は、系の受信処理を行なう受信デーモンを起動する（ステップＳ４０５）。そして、第１のＤＢサーバ３１０は、起動処理を正常に終了する（ステップＳ４０７）。また、系の状態通知の送信に失敗すると（ステップＳ４０４  ＮＯ）、第１のＤＢサーバ３１０は、ステップＳ４０６に移行して異常終了する。なお、系の受信デーモンの処理については、図８で説明する。
【００６５】
図５は、本実施例に係る正系のトランザクション処理を示すフローチャートである。なお、図５には、第１のＤＢサーバ３１０が正系、第２のＤＢサーバ３２０が副系として動作している場合における正系のトランザクション処理を示す。
【００６６】
第１のＤＢサーバ３１０は、起動処理が完了すると（ステップＳ５００）、ホストコンピュータ３０６からの依頼受信待ち状態となる（ステップＳ５０１）。そして、ホストコンピュータ３０６から依頼を受信すると、第１のＤＢサーバ３１０は、処理をステップＳ５０２に移行する。
【００６７】
ステップＳ５０２において、ホストコンピュータ３０６からの依頼が更新処理依頼であると判断すると（ステップＳ５０２  ＹＥＳ）、第１のＤＢサーバ３１０は、処理をステップＳ５０３に移行する。
【００６８】
ステップＳ５０３において、第１のＤＢサーバ３１０は、例えば、図３２に示すメモリ３２０２等に備わる更新抑止フラグ３１２を参照する。そして、更新抑止フラグ３１２が「無効」に設定されている場合（ステップＳ５０３  ＹＥＳ）、第１のＤＢサーバ３１０は、ホストコンピュータ３０６からの更新処理依頼にしたがってデータベースの更新処理、すなわちトランザクション処理を行なう（ステップＳ５０４）。
【００６９】
ステップＳ５０５において、トランザクション処理が完了すると、第１のＤＢサーバ３１０は、更新処理依頼とともに、ステップＳ５０４で行なった更新処理によるデータベースの更新内容を記憶した更新ログを、副系である第２のＤＢサーバ３２０に送信する。すると、第１のＤＢサーバ３１０は、ステップＳ５１４に移行する。そして、第１のＤＢサーバ３１０は、ステップＳ５０１から処理を再開する。
【００７０】
ステップＳ５０３において、更新抑止フラグ３１２が「有効」に設定されている場合（ステップＳ５０３  ＮＯ）、第１のＤＢサーバ３１０は、処理をステップＳ５０６に移行する。すると、第１のＤＢサーバ３１０は、データベースのロールバック処理を行なう。そして、第１のＤＢサーバ３１０は、ホストコンピュータ３０６に対して更新処理が失敗した旨のコミット応答を送信する。
【００７１】
一方、ステップＳ５０２において、ホストコンピュータ３０６からの依頼がコミット処理理依頼であると判断すると（ステップＳ５０２  ＮＯ）、第１のＤＢサーバ３１０は、副系である第２のＤＢサーバ３２０に対して、コミット依頼を送信する（ステップＳ５０７）。すると、第１のＤＢサーバ３１０は、コミット処理依頼に対する副系からの応答待ち状態となる（ステップＳ５０８）。このときの応答を「コミット応答」という。
【００７２】
ステップＳ５０９において、コミット応答のタイムアウト、または、正系−副系間のネットワーク異常、を検出することなくコミット応答を受信すると（ステップＳ５０９  ＮＯ）、第１のＤＢサーバ３１０は、処理をステップＳ５１０に移行する。
【００７３】
ステップＳ５１０において、コミット処理結果が正常であった場合、すなわち、コミット処理が正常終了した場合（ステップＳ５１０  ＮＯ）、第１のＤＢサーバ３１０は、データベースに対してコミット処理を行なう。そして、第１のＤＢサーバ３１０は、ホストコンピュータ３０６に対してコミット処理が成功した旨のコミット応答を送信する。
【００７４】
一方、ステップＳ５０９において、コミット応答のタイムアウト、または、正系−副系間のネットワーク異常、を検出すると（ステップＳ５０９  ＹＥＳ）、第１のＤＢサーバ３１０は、図７に示す異常検知時の処理を実行する（ステップＳ５１２）。そして、第１のＤＢサーバ３１０は、処理をステップＳ５１３に移行する。
【００７５】
また、ステップＳ５１０において、コミット処理結果が異常であった場合、すなわち、コミット処理が異常終了した場合（ステップＳ５１０  ＹＥＳ）、第１のＤＢサーバ３１０は、処理をステップＳ５１３に移行する。
【００７６】
ステップＳ５１３において、第１のＤＢサーバ３１０は、データベースのロールバック処理を行なう。そして、第１のＤＢサーバ３１０は、ホストコンピュータ３０６に対してコミット処理が失敗した旨のコミット応答を送信する。
【００７７】
以上の処理が終了すると、第１のＤＢサーバ３１０は、ステップＳ５１４に移行する。そして、第１のＤＢサーバ３１０は、ステップＳ５０１から処理を再開する。
【００７８】
図６は、本実施例に係る副系のトランザクション処理を示すフローチャートである。なお、図６には、第１のＤＢサーバ３１０が正系、第２のＤＢサーバ３２０が副系として動作している場合における正系のトランザクション処理を示す。
【００７９】
第２のＤＢサーバ３２０は、起動処理が完了すると（ステップＳ６００）、第１のＤＢサーバ３１０からの依頼受信待ち状態となる（ステップＳ６０１）。そして、第１のＤＢサーバ３１０から依頼を受信すると、第２のＤＢサーバ３２０は、処理をステップＳ６０２に移行する。
【００８０】
ステップＳ６０２において、第２のＤＢサーバ３２０は、例えば、図３２に示すメモリ３２０２等に備わる受信拒否フラグ３２３を参照する。受信拒否フラグ３２３が「有効」に設定されている場合（ステップＳ６０２  ＮＯ）、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０にエラー応答を返し、異常終了する（ステップＳ６０３）。また、受信拒否フラグ３２３が「無効」に設定されている場合（ステップＳ６０２  ＹＥＳ）、第２のＤＢサーバ３２０は、処理をステップＳ６０４に移行する。
【００８１】
ステップＳ６０４において、第１のＤＢサーバ３１０からの依頼が更新処理依頼であると判断すると（ステップＳ６０４  ＹＥＳ）、第２のＤＢサーバ３２０は、処理をステップＳ６０５に移行する。そして、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０から更新処理依頼とともに受信した更新ログにしたがってデータベースの更新処理、すなわちトランザクション処理を行なう（ステップＳ６０５）。すると、第２のＤＢサーバ３２０は、ステップＳ６０１から処理を再開する。
【００８２】
一方、ステップＳ６０４において、第１のＤＢサーバ３１０からの依頼がコミット処理理依頼であると判断すると（ステップＳ６０４  ＮＯ）、第２のＤＢサーバ３２０は、処理をステップＳ６０６に移行する。そして、ネットワークに異常がなければ（ステップＳ６０６  ＮＯ）、データベースに対してコミット処理を行なう（ステップＳ６０７）。
【００８３】
ステップＳ６０８において、コミット処理結果が正常であった場合、すなわち、コミット処理が正常終了した場合（ステップＳ６０８  ＮＯ）、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０に対してコミット処理が成功した旨のコミット応答を送信する（ステップＳ６０９）。
【００８４】
また、ステップＳ６０８において、コミット処理結果が異常であった場合、すなわち、コミット処理が異常終了した場合（ステップＳ６０８  ＹＥＳ）、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０に対してコミット処理が失敗した旨のコミット応答を送信する（ステップＳ６１０）。
【００８５】
一方、ステップＳ６０６において、ネットワークに異常を検出すると（ステップＳ６０６  ＹＥＳ）、第２のＤＢサーバ３２０は、図７に示す系の異常検知時の処理を行なう（ステップＳ６１１）。
【００８６】
以上の処理が終了すると、第２のＤＢサーバ３２０は、ステップＳ６１２に移行する。そして、第２のＤＢサーバ３２０は、ステップＳ６０１から処理を再開する。
【００８７】
図７は、本実施例に係る系の異常検出処理を示すフローチャートである。なお、図７に示す処理は、正系および副系が同一の処理を行なう場合のフローチャートを示している。以下、第１のＤＢサーバ３１０または第２のＤＢサーバ３２０を総じて「ＤＢサーバ」といい、ＤＢサーバを主体として説明する。
【００８８】
ＤＢサーバは、起動処理が完了するとネットワーク異常等の異常監視を開始する（ステップＳ７０１）。そして、ＤＢサーバは、異常を検知すると（ステップＳ７０２）、処理をステップＳ７０３に移行する。
【００８９】
ステップＳ７０３において、ＤＢサーバが正系の場合（ステップＳ７０３  ＹＥＳ）、ＤＢサーバは、正系に備わる更新抑止フラグ、例えば、更新抑止フラグ３１２を「有効」に設定する（ステップＳ７０４）。そして、ＤＢサーバは、調停装置３３０に対して、状態遷移問合せを行なう（ステップＳ７０５）。
【００９０】
また、ステップＳ７０３において、ＤＢサーバが副系の場合（ステップＳ７０３  ＮＯ）、ＤＢサーバは、副系に備わる受信拒否フラグ、例えば、受信拒否フラグ３２３を「有効」に設定する（Ｓ７０６）。そして、ＤＢサーバは、調停装置３３０に対して、状態遷移問合せを行なう（ステップＳ７０５）。
【００９１】
以上の処理が終了すると、ＤＢサーバは、ステップＳ７０７に移行して異常検出処理を終了する、または、ステップＳ７０１に移行して異常監視を再開する。
なお、図７では、正系および副系が同一の処理を行なう場合のフローチャートを示したが、正系は、ステップＳ７０１、Ｓ７０２、Ｓ７０４およびＳ７０５を順に実行し、副系は、ステップＳ７０１、Ｓ７０２、Ｓ７０６およびＳ７０５を順に実行してもよいのは当然である。
【００９２】
図８は、本実施例に係る系の受信デーモンの処理を示すフローチャートである。なお、図８に示す処理は、正系および副系が同一の処理を行なう場合のフローチャートを示している。なお、図７と同様に、第１のＤＢサーバ３１０または第２のＤＢサーバ３２０を総じて「ＤＢサーバ」といい、ＤＢサーバを主体として以下説明する。
【００９３】
ＤＢサーバは、起動処理が完了すると（ステップＳ８００）、調停装置３３０からの指示待ち状態となる（ステップＳ８０１）。そして、調停装置３３０から指示を受信すると、ＤＢサーバは、処理をステップＳ８０２に移行する。
【００９４】
ステップＳ８０２において、受信した指示が状態遷移指示の場合（ステップＳ８０２  ＹＥＳ）、ＤＢサーバは、処理をステップＳ８０３に移行する。そして、状態遷移指示が後述する蓄積正系指示の場合（ステップＳ８０３  ＹＥＳ）、ＤＢサーバは、蓄積正系運用状態に移行する（ステップＳ８０４）。
【００９５】
また、ステップＳ８０２において、受信した指示が状態遷移指示でない場合（ステップＳ８０２  ＮＯ）、ＤＢサーバは、処理をステップＳ８０５に移行する。そして、状態遷移指示が後述する昇格正系指示の場合（ステップＳ８０５  ＹＥＳ）、ＤＢサーバは、昇格正系運用状態に移行する（ステップＳ８０６）。
【００９６】
ステップＳ８０４またはＳ８０６の処理を開始すると、ＤＢサーバは、処理をステップＳ８０７に移行する。そして、ＤＢサーバは、自身に備わる更新抑止フラグ、例えば、更新抑止フラグ３１２または更新抑止フラグ３２２を「無効」に設定する（ステップＳ８０７）。
【００９７】
また、ステップＳ８０５において、状態遷移指示が昇格正系指示でない場合（ステップＳ８０５  ＮＯ）、ＤＢサーバは、処理をステップＳ８０８に移行する。そして、状態遷移指示が停止指示である場合（ステップＳ８０８  ＹＥＳ）、ＤＢサーバは、系の処理を停止する（ステップＳ８０９）。また、状態遷移指示が停止指示でない場合（ステップＳ８０８  ＮＯ）、ＤＢサーバは、ステップＳ８０１から処理を再開する。
【００９８】
一方、ステップＳ８０２において、受信した指示が状態遷移指示でない場合（ステップＳ８０２  ＮＯ）、ＤＢサーバは、調停装置３３０がダウンしたと判断し、処理をステップＳ８１０に移行する。この場合、ＤＢサーバは、ユーザからの指示待ち状態となる（ステップＳ８１０）。
【００９９】
ステップＳ８１１において、例えば、図３２に示す入力装置３２０３を介して、ユーザからの指示をうけると（ステップＳ８１１  ＹＥＳ）、ＤＢサーバは、ユーザが指示したコマンドを実行する。ユーザは、ＤＢサーバにコマンドを実行させることによって、強制的に各系の状態を所望の状態、例えば、蓄積正系運用状態や昇格正系運用状態、停止状態などの状態に切り替えることができる。また、ユーザからの指示でない指示を受けると（ステップＳ８１１  ＮＯ）、ＤＢサーバは、調停装置３３０に対して、状態遷移問合せを再送信する（ステップＳ８１３）。そして、ＤＢサーバは、ステップＳ８０１から処理を再開する。
【０１００】
ステップＳ８０７またはＳ８１２の処理が終了すると、ＤＢサーバは、受信処理を終了する（ステップＳ８１４）、または、ステップＳ８０１から処理を再開する。
【０１０１】
図９は、本実施例に係る調停装置３３０の処理を示すフローチャートである。
調停装置３３０に電源が投入されると、調停装置３３０は、必要な初期化処理を実行した後、処理をステップＳ９０１に移行する。すると、調停装置３３０は、各系に対して、調停装置３３０の起動処理が完了した旨の起動通知を送信する（ステップＳ９０１）。そして、調停装置３３０は、各系から状態通知などを受信する受信処理を開始する（ステップＳ９０２）。
【０１０２】
ステップＳ９０２において、系から問合せ等を受けると、調停装置３３０は、処理をステップＳ９０３に移行する。系から状態遷移問合せを受けると（ステップＳ９０３  ＹＥＳ）、調停装置３３０は、処理をステップＳ９０４に移行する。そして、ステップＳ９０２で受信した状態遷移問合せが正系からの問合せの場合（ステップＳ９０４  ＹＥＳ）、調停装置３３０は、副系に対して、停止指示を通知する（ステップＳ９０５）。さらに、調停装置３３０は、正系に対して、蓄積正系指示を通知する（ステップＳ９０６）。
【０１０３】
一方、ステップＳ９０４において、ステップＳ９０２で受信した状態遷移問合せが副系からの問合せの場合（ステップＳ９０４  ＮＯ）、調停装置３３０は、正系に対して、停止指示を通知する（ステップＳ９０７）。さらに、調停装置３３０は、副系に対して、昇格正系指示を通知する（ステップＳ９０８）。
【０１０４】
ステップＳ９０２で受信したものが系からの状態遷移問合せでない場合（ステップＳ９０３  ＮＯ）、調停装置３３０は、ステップＳ９０２から処理を再開する。同様に、ステップＳ９０６またはＳ９０８の処理が終了すると、調停装置３３０は、ステップＳ９０２から処理を再開する。
【０１０５】
以上に説明したデータベースシステム３００の通常時と、ネットワーク断線時と、について具体的に説明する。
図１０は、本実施例に係るデータベースシステム３００の正常時の動作を説明する図である。なお、図１０に記載の（１）〜（６）は、以下に記載する（１）〜（６）に対応する。
【０１０６】
（１）所定のトランザクション処理が正常に終了すると、ホストコンピュータ３０６は、第１のＤＢサーバ３１０に対してコミット依頼を通知する。（２）コミット依頼を受信すると、第１のＤＢサーバ３１０は、第２のＤＢサーバ３２０に対してコミット依頼を通知する（ステップＳ５０７）。
【０１０７】
（３）第１のＤＢサーバ３１０からコミット処理を受信すると、第２のＤＢサーバ３２０は、ＤＢ記憶装置３２１に対してコミット処理を実行する（ステップＳ６０７）。（４）コミット処理が正常に終了すると、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０に対してコミット処理が正常に終了した旨のコミット応答を通知する（ステップＳ６０９）。
【０１０８】
（５）第２のＤＢサーバ３２０からコミット処理が正常に終了した旨のコミット応答を受信すると、第１のＤＢサーバ３１０は、ＤＢ記憶装置３１１に対してコミット処理を実行する（ステップＳ５１１）。そして、第１のＤＢサーバ３１０は、ホストコンピュータ３０６に対してコミット処理が成功した旨のコミット応答を通知する。
【０１０９】
図１１は、本実施例に係るデータベースシステム３００にネットワーク切断が生じた場合の正系の動作を説明する図である。なお、図１１に記載の（１）〜（１０）は、以下に記載する（１）〜（１０）に対応する。
【０１１０】
（１）所定のトランザクション処理が正常に終了すると、ホストコンピュータ３０６は、第１のＤＢサーバ３１０に対してコミット依頼を通知する。（２）コミット依頼を受信すると、第１のＤＢサーバ３１０は、第２のＤＢサーバ３２０に対してコミット依頼を通知する（ステップＳ５０７）。
【０１１１】
（３）ここで、第１のＤＢサーバ３１０−第２のＤＢサーバ３２０間を通信可能に接続するネットワークに断線が生じたと仮定する。（４）ネットワークに断線等の異常を検出すると、第１のＤＢサーバ３１０は、第２のＤＢサーバ３２０からコミット応答を受信することができなくなる。
【０１１２】
（５）ネットワークまたは副系に異常が発生したと判断すると（ステップＳ５０９  ＹＥＳ）、第１のＤＢサーバ３１０は、更新抑止フラグ３１２を「有効」に設定する（ステップＳ７０４）。（６）その後、第１のＤＢサーバ３１０は、ＤＢ記憶装置３１１に対して、ロールバック処理を行ない前回コミットした状態にＤＢ記憶装置３１１の状態を復元し、（７）ホストコンピュータ３０６に対して、コミット処理が失敗した旨のコミット異常応答を通知する（ステップＳ５１３）。
【０１１３】
（８）また、第１のＤＢサーバ３１０は、更新抑止フラグ３１２を「有効」に設定すると、調停装置３３０に対して、状態遷移問合せを行なう（ステップＳ７０５）。（９）正系である第１のＤＢサーバ３１０から状態遷移問合せを受信すると（ステップＳ９０４  ＹＥＳ）、調停装置３３０は、副系である第２のＤＢサーバ３２０に対して停止指示を通知する（ステップＳ９０５）。停止指示を受けた第２のＤＢサーバ３２０は、ＤＢサーバとしての動作に必要なプロセス等を停止する（ステップＳ８０９）。また、（１０）調停装置３３０は、正系である第１のＤＢサーバ３１０に対して蓄積正系指示を通知する（ステップＳ９０６）。蓄積正系指示を受けた第１のＤＢサーバ３１０は、蓄積正系運用状態に遷移する（ステップＳ８０４）。
【０１１４】
図１２は、本実施例に係るデータベースシステム３００にネットワーク切断が生じた場合の正系の動作を説明する図である。図１２に記載の（１）〜（７）は、以下に記載する（１）〜（７）に対応する。
【０１１５】
（１）図１１と同様に、第１のＤＢサーバ３１０−第２のＤＢサーバ３２０間を通信可能に接続するネットワーに断線が生じたと仮定する。なお、ネットワークの断線には、完全に通信不能な状態のみでなく断続的に通信不能な状態となる場合も含まれるものとする。（２）ネットワークに断線等の異常を検出すると、第２のＤＢサーバ３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ７０６）。
【０１１６】
（３）第１のＤＢサーバ３１０が、第２のＤＢサーバ３２０に対して、更新ログまたはコミット依頼を通知しても、（４）受信拒否フラグ３２３が「有効」に設定されているので、第２のＤＢサーバ３２０は、更新ログやコミット依頼を受信拒否する（ステップＳ６０３）。
【０１１７】
（５）受信拒否フラグ３２３を「有効」に設定すると、第２のＤＢサーバ３２０は、調停装置３３０に対して、状態遷移問合せを行なう（ステップＳ７０５）。
（６）副系である第２のＤＢサーバ３２０から状態遷移問合せを受信すると（ステップＳ９０４  ＮＯ）、調停装置３３０は、正系である第１のＤＢサーバ３１０に対して停止指示を通知する（ステップＳ９０７）。停止指示を受けた第１のＤＢサーバ３１０は、ＤＢサーバとしての動作に必要なプロセス等を停止する（ステップＳ８０９）。また、（７）調停装置３３０は、副系である第２のＤＢサーバ３２０に対して昇格正系指示を通知する（ステップＳ９０８）。昇格正系指示を受けた第２のＤＢサーバ３２０は、昇格正系運用状態に移行する（ステップＳ８０６）。
【０１１８】
以上のように、ネットワークに断線等の異常が生じると、第２のＤＢサーバ３２０は、第１のＤＢサーバ３１０からの更新ログやコミット依頼を受信拒否するので、更新処理やコミット処理も行なわれない。したがって、第２のＤＢサーバ３２０の更新処理やコミット処理の成功を待って更新処理やコミット処理を行なう第１のＤＢサーバ３１０でも、更新処理やコミット処理が行なわれない。
【０１１９】
その結果、調停装置３３０からの停止指示が何らかの理由で第１のＤＢサーバ３１０に通知されない期間に、第１のＤＢサーバ３１０のＤＢ記憶装置３１１に対して、更新処理やコミット処理が行なわれる状態、すなわち、スプリットブレイン状態を防止できる。したがって、データベースシステム３００は、スプリットブレイン状態になることなく系を切り替えることができる。
【実施例３】
【０１２０】
図１３は、本実施例に係るデータベースシステム１３００の構成例を示す図である。
図１３に示すデータベースシステム１３００は、第１のＤＢ（データベース）サーバ１３１０と、第２のＤＢ（データベース）サーバ１３２０と、調停装置１３３０と、を備える。第１のＤＢサーバ１３１０と第２のＤＢサーバ１３２０と調停装置１３３０は、ネットワークを介して互いに通信可能に接続している。ただし、第１のＤＢサーバ１３１０と第２のＤＢサーバ１３２０と調停装置１３３０は、専用線等を介して互いに通信可能に接続してもよい。
【０１２１】
図１３に示すデータベースシステム１３００は、第１のＤＢサーバ１３１０が正系、第２のＤＢサーバ１３２０が副系の状態にある場合を示している。第１のＤＢサーバ１３１０、第２のＤＢサーバ１３２０および調停装置１３３０は、例えば、図３２で示す構成の情報処理装置に所定のプログラムを実行させることで実現できる。
【０１２２】
図１３に示すデータベースシステム１３００は、図３に示したデータベースシステム３００の構成を全て含んでいる。そこで、図３と重複する構成には、図３と同じ符号を示し、その具体的な説明については省略する。
【０１２３】
第１のＤＢサーバ１３１０は、ホストコンピュータ３０６の要求に応じて、ＤＢ記憶装置３１１に記憶されるデータベーステーブルに対してデータの追加、削除、変更または検索などを含む一連の更新処理、すなわちトランザクション処理を行なう。このとき、第１のＤＢサーバ１３１０は、トランザクション処理の更新ログをＤＢ記憶装置３１１等に記憶する。
【０１２４】
また、第１のＤＢサーバ１３１０は、ホストコンピュータ３０６からコミット依頼を受けると、トランザクション処理の内容をデータベースに永続的に反映させるコミット処理を行なう。また、第１のＤＢサーバ１３１０は、ホストコンピュータ３０６からロールバック依頼を受けると、先にコミット処理が行なわれた時の状態にデータベースの状態を復元するロールバック処理を実行する。
【０１２５】
また、第１のＤＢサーバ１３１０は、図３に示した構成に加えて、系状態情報１３１１を備える。この系状態情報１３１１は、現在動作している系、すなわち第１のＤＢサーバ１３１０の状態を示す情報である。系の状態については、図１４に示す。
【０１２６】
第２のＤＢサーバ１３２０は、副系として動作する場合、正系として動作する第１のＤＢサーバ１３１０から更新ログを受信する。すると、第２のＤＢサーバ１３２０は、更新ログにしたがって、例えば、ＤＢ記憶装置１３２１に記憶されるデータベーステーブルに対してデータの追加、削除、変更または検索などを含む一連の更新処理、すなわちトランザクション処理を行なう。このとき、第２のＤＢサーバ１３２０は、この更新処理を更新ログとしてＤＢ記憶装置１３２１等に記憶する。
【０１２７】
また、第２のＤＢサーバ１３２０は、第１のＤＢサーバ１３１０からコミット依頼を受けると、トランザクション処理の内容をデータベースに永続的に反映させるコミット処理を行なう。また、第２のＤＢサーバ１３２０は、第１のＤＢサーバ１３１０からロールバック依頼を受けると、先にコミット処理が行なわれた時の状態までロールバックする。
【０１２８】
また、第２のＤＢサーバ１３２０は、図３に示した構成に加えて、系状態情報１３２１を備える。この系状態情報１３２１は、現在動作している系、すなわち第２のＤＢサーバ１３２０の状態を示す情報である。系の状態については、図１４に示す。
【０１２９】
調停装置１３３０は、第１のＤＢサーバ１３１０および第２のＤＢサーバ１３２０の状態に応じて、停止指示などの状態遷移指示を行なって、第１のＤＢサーバ１３１０および第２のＤＢサーバ１３２０の状態を調停する。
【０１３０】
調停装置１３３０は、各系から通知される系状態情報を系毎に記憶する系状態表１３３１と、調停装置１３３０と接続し調停する対象のＤＢサーバ、図１３では第１のＤＢサーバ１３１０と第２のＤＢサーバ１３２０を記憶するサーバリスト１３３２と、を備える。
【０１３１】
なお、系状態表１３３１は、調停装置１３３０に備わるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性メモリに保持してもよいし、調停装置１３３０に備わるＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）や磁気ディスク装置等の不揮発性メモリに保持してもよい。ただし、系状態表１３３１を揮発性メモリに保持する場合、調停装置１３３０は、系状態表１３３１を保持する揮発性メモリを初期化することなく再起動処理を行なう必要がある。再起動しても系状態表１３３１の内容を保持するためである。
【０１３２】
図１４は、本実施例に係る各系の系状態と系状態の遷移を示す図である。
正系には、「正系運用状態」、「正系待ち状態」および「蓄積正系運用状態」がある。
起動直後から正系として正常に動作している状態を「正系運用状態」という。
【０１３３】
動作を停止して調停装置１３３０からの状態遷移指示を待っている状態を「正系待ち状態」という。例えば、図１３に示す第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を接続するネットワークの異常、または、副系に異常を検出すると、正系は、「正系運用状態」から「正系待ち状態」に遷移する。
【０１３４】
副系が存在しない状態で正系として正常に動作している状態を「蓄積正系運用状態」という。例えば、調停装置１３３０から蓄積正系運用状態への遷移指示を受けると、正系は、「正系待ち状態」から「蓄積正系運用状態」に遷移する。以下、蓄積正系運用状態への遷移指示を「蓄積正系指示」という。
【０１３５】
副系には、「副系運用状態」、「副系待ち状態」および「昇格正系運用状態」がある。
起動直後から副系として正常に動作している状態を「副系運用状態」という。
動作を停止して調停装置１３３０からの状態遷移指示を待っている状態を「副系待ち状態」という。例えば、図１３に示す第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を接続するネットワークの異常、または、副系に異常を検出すると、副系は、「副系運用状態」から「副系待ち状態」に遷移する。
【０１３６】
本来副系として正常に動作していたが正系として動作している状態を「昇格正系運用状態」という。例えば、調停装置１３３０から昇格正系運用状態への遷移指示を受けると、副系は、「副系待ち状態」から「昇格正系運用状態」に遷移する。以下、昇格正系運用状態への遷移指示を「昇格正系指示」という。
【０１３７】
図１５は、本実施例に係る調停装置１３３０が系状態表１３３１に保持する系状態と系状態の遷移を示す図である。
調停装置１３３０が系状態表１３３１に保持する系状態には、「不明状態」と、「正系運用状態」、「正系待ち状態」および「蓄積正系運用状態」と、「副系運用状態」、「副系待ち状態」および「昇格正系運用状態」と、がある。
【０１３８】
調停装置１３３０が起動してから正系または副系と接続が確立するまでは、正系・副系の状態を知ることができない。この状態を「不明状態」とする。したがって、調停装置１３３０が再起動される、その時の状態に関わらず「不明状態」に遷移する。
【０１３９】
調停装置１３３０が正系との接続を確立すると、調停装置１３３０は、系状態表１３３１に保持する正系についての系状態を「正系運用状態」に設定する。同様に、調停装置１３３０が副系との接続を確立すると、調停装置１３３０は、系状態表１３３１に保持する副系についての系状態を「副系運用状態」に設定する。
【０１４０】
正系からの系状態の定期的な通知により正系が「正系待ち状態」であることが通知されると、または、正系に対して片側正系運用状態指示をすると、調停装置１３３０は、正系についての系状態を「正系運用状態」から「正系待ち状態」に設定する。同様に、副系からの系状態の定期的な通知により正系が「副系待ち状態」であることが通知されると、または、副系に対して昇格正系運用状態指示をすると、調停装置１３３０は、副系についての系状態を「副系運用状態」から「副系待ち状態」に設定する。
【０１４１】
正系からの系状態の定期的な通知により正系が「蓄積正系運用状態」であることが通知されると、調停装置１３３０は、正系についての系状態を「正系運用状態」または「正系待ち状態」から「蓄積正系運用状態」に設定する。同様に、副系からの系状態の定期的な通知により正系が「昇格正系運用状態」であることが通知されると、調停装置１３３０は、副系についての系状態を「副系運用状態」または「副系待ち状態」から「昇格正系運用状態」に設定する。
【０１４２】
ここで、データベースシステム１３００における正系および副系の起動処理は、図４に示した処理と同様である。また、データベースシステム１３００における正系のトランザクション処理は、図５に示した処理と同様である。また、データベースシステム１３００における副系のトランザクション処理は、図６に示した処理と同様である。したがって、これらの処理の説明は省略する。
【０１４３】
図１６は、本実施例に係る系の異常検出処理を示すフローチャートである。
ＤＢサーバは、起動処理が完了するとネットワーク異常等の異常監視を開始する（ステップＳ１６０１）。そして、ＤＢサーバは、異常を検知すると（ステップＳ１６０２）、処理をステップＳ１６０３に移行する。
【０１４４】
ステップＳ１６０３において、ＤＢサーバが正系の場合（ステップＳ１６０３  ＹＥＳ）、ＤＢサーバは、正系に備わる更新抑止フラグ、例えば、更新抑止フラグ３１２を「有効」に設定する（ステップＳ１６０４）。そして、ＤＢサーバは、正系に備わる系状態情報、例えば、系状態情報１３１１に「正系待ち状態」を設定する（ステップＳ１６０５）。
【０１４５】
また、ステップＳ１６０３において、ＤＢサーバが副系の場合（ステップＳ１６０３  ＮＯ）、ＤＢサーバは、副系に備わる受信拒否フラグ、例えば、受信拒否フラグ３２３を「有効」に設定する（ステップＳ１６０６）。そして、ＤＢサーバは、副系に備わる系状態情報、例えば、系状態情報１３２１に「副系待ち状態」を設定する（ステップＳ１６０７）。
【０１４６】
以上の処理が終了すると、ＤＢサーバは、調停装置３３０に対して、状態遷移問合せを行なう（ステップＳ１６０８）。そして、ＤＢサーバは、ステップＳ１６０７に移行して異常検出処理を終了する、または、ステップＳ１６０１に移行して異常監視を再開する。
【０１４７】
なお、図１６では、正系および副系が同一の処理を行なう場合のフローチャート示した。しかし、正系が、ステップＳ１６０１、Ｓ１６０２、Ｓ１６０４、Ｓ１６０５およびＳ１６０８を順に実行し、副系が、ステップＳ１６０１、Ｓ１６０２、Ｓ１６０６、Ｓ１６０７およびＳ１６０８を順に実行してもよいのは当然である。
【０１４８】
図１７は、本実施例に係る系の受信デーモンの処理を示すフローチャートである。
ＤＢサーバは、起動処理が完了すると（ステップＳ１７００）、調停装置３３０からの指示待ち状態となる（ステップＳ１７０１）。そして、調停装置３３０から指示を受信すると、ＤＢサーバは、処理をステップＳ１７０２に移行する。
【０１４９】
ステップＳ１７０２において、受信した指示が状態遷移指示の場合（ステップＳ１７０２  ＹＥＳ）、ＤＢサーバは、処理をステップＳ１７０３に移行する。状態遷移指示が蓄積正系指示の場合（ステップＳ１７０３  ＹＥＳ）、ＤＢサーバは、蓄積正系運用状態に移行する（ステップＳ１７０４）。そして、ＤＢサーバは、自身に備わる系状態情報、例えば、系状態情報１３１１に「蓄積正系運用状態」を設定する（ステップＳ１７０５）。
【０１５０】
また、状態遷移指示が蓄積正系指示でない場合（ステップＳ１７０３  ＮＯ）、ＤＢサーバは、ステップＳ１７０６に移行する。そして、状態遷移指示が昇格正系指示である場合（ステップＳ１７０６  ＹＥＳ）、ＤＢサーバは、昇格正系運用状態に移行する（ステップＳ１７０７）。そして、ＤＢサーバは、自身に備わる系状態情報、例えば、系状態情報１３１１に「昇格正系運用状態」を設定する（ステップＳ１７０８）。
【０１５１】
また、ステップＳ１７０２において、受信した指示が状態遷移指示でない場合（ステップＳ１７０２  ＮＯ）、ＤＢサーバは、処理をステップＳ１７０６に移行する。ステップＳ１７０６において、状態遷移指示が昇格正系指示の場合（ステップＳ１７０６  ＹＥＳ）、ＤＢサーバは、昇格正系運用状態に移行する（ステップＳ１７０７）。そして、ＤＢサーバは、自身に備わる系状態情報、例えば、系状態情報１３２１に「昇格正系運用状態」を設定する（ステップＳ１７０８）。
【０１５２】
ステップＳ１７０５またはＳ１７０８の処理が終了すると、ＤＢサーバは、処理をステップＳ１７０９に移行する。そして、ＤＢサーバは、自身に備わる更新抑止フラグ、例えば、更新抑止フラグ３１２または更新抑止フラグ３２２を「無効」に設定する（ステップＳ１７０９）。
【０１５３】
また、ステップＳ１７０６において、状態遷移指示が昇格正系指示でない場合（ステップＳ１７０６  ＮＯ）、ＤＢサーバは、処理をステップＳ１７１０に移行する。状態遷移指示が停止指示である場合（ステップＳ１７１０  ＹＥＳ）、ＤＢサーバは、系を停止する（ステップＳ１７１１）。また、状態遷移指示が停止指示でない場合（ステップＳ１７１０  ＮＯ）、ＤＢサーバは、ステップＳ１７０１から処理を再開する。
【０１５４】
一方、ステップＳ１７０２において、受信した指示が状態遷移指示でない場合（ステップＳ１７０２  ＮＯ）、ＤＢサーバは、調停装置１３３０がダウンしたと判断し、処理をステップＳ１７１２に移行する。この場合、ＤＢサーバは、ユーザからの指示待ち状態となる（ステップＳ１７１２）。
【０１５５】
ステップＳ１７１３において、例えば、図３２に示す入力装置３２０３を介して、ユーザからの指示をうけると（ステップＳ１７１３  ＹＥＳ）、ＤＢサーバは、ユーザが指示したコマンドを実行する。ユーザは、ＤＢサーバにコマンドを実行させることによって、強制的に各系の状態を所望の状態、例えば、蓄積正系運用状態や昇格正系運用状態などの状態に切り替えることができる。また、ユーザからの指示でない指示を受けると（ステップＳ１７１３  ＮＯ）、ＤＢサーバは、調停装置１３３０に対して、状態遷移問合せを再送信する（ステップＳ１７１５）。そして、ＤＢサーバは、ステップＳ１７０１から処理を再開する。
【０１５６】
ステップＳ１７０９またはＳ１７１４の処理が終了すると、ＤＢサーバは、受信処理を終了する（ステップＳ１７１６）、または、ステップＳ１７０１から処理を再開する。
【０１５７】
図１８は、本実施例に係る調停装置１３３０の処理を示すフローチャートである。
調停装置１３３０に電源が投入されると、調停装置１３３０は、起動処理を開始する（ステップＳ１８００）。起動処理が完了すると、調停装置１３３０は、調停装置として動作するために必要な初期化処理を実行する（ステップＳ１８０１）。例えば、調停装置１３３０は、系状態表１３３１を初期化する。このとき、調停装置１３３０は、系状態表１３３１に保持する第１のＤＢサーバ１３１０の系状態情報と第２のＤＢサーバ１３２０の系状態情報とに「不明状態」を設定する。
【０１５８】
初期化が完了すると、調停装置１３３０は、調停装置１３３０の起動処理が完了した旨の起動通知を送信する（ステップＳ１８０２）。そして、調停装置１３３０は、各系から状態通知などを受信する受信処理を開始する（ステップＳ１８０３）。
【０１５９】
ステップＳ１８０３において、系から状態通知等を受けると、調停装置１３３０は、処理をステップＳ１８０４に移行する。系から状態通知を受けると（ステップＳ１８０４  ＹＥＳ）、調停装置１３３０は、系からの状態通知にしたがって系状態情報１３１１を更新する（ステップＳ１８０５）。
【０１６０】
系から状態通知でなく状態遷移問合せを受けると（ステップＳ１８０６  ＹＥＳ）、調停装置１３３０は、処理をステップＳ１８０７に移行する。ステップＳ１８０３で受信した状態遷移問合せが正系からの問合せの場合（ステップＳ１８０７  ＹＥＳ）、調停装置１３３０は、正系からの問合せに対する判定処理を行う（ステップＳ１８０８）。この「正系からの問合せに対する判定処理」については、図１９に示す。
【０１６１】
また、ステップＳ１８０３で受信した状態遷移問合せが副系からの問合せの場合（ステップＳ１８０７  ＮＯ）、調停装置１３３０は、副系からの問合せに対する判定処理を行う（ステップＳ１８０９）。この「副系からの問合せに対する判定処理」については、図２０に示す。
【０１６２】
一方、ステップＳ１８０３で受信したものが系から状態通知でなく状態遷移問合せでもない場合（ステップＳ１８０６  ＮＯ）、調停装置１３３０は、ステップＳ１８０３から処理を再開する。同様に、ステップＳ１８０５、Ｓ１８０８またはＳ１８０９の処理が終了すると、調停装置１３３０は、ステップＳ１８０２から処理を再開する。
【０１６３】
図１９は、本実施例に係る調停装置１３３０の「正系からの問合せに対する判定処理」（ステップＳ１８０８）を示すフローチャートである。
ステップＳ１９０１において、調停装置１３３０は、系状態表１３３１から副系である第２のＤＢサーバ１３２０の状態を取得する。そして、取得した副系の状態が「不明状態」の場合（ステップＳ１９０２  ＹＥＳ）、調停装置１３３０は、正系に指示不可能である旨を通知する（ステップＳ１９０３）。また、取得した副系の状態が「不明状態」以外の状態である場合（ステップＳ１９０２  ＮＯ）、調停装置１３３０は、処理をステップＳ１９０４に移行する。
【０１６４】
ステップＳ１９０４において、調停装置１３３０は、ステップＳ１９０１で取得した副系の状態を判定する。副系の状態が「副系運用状態」の場合、調停装置１３３０は、処理をステップＳ１９０５に移行する。すると、調停装置１３３０は、副系に対して停止指示を行う（ステップＳ１９０５）。そして、調停装置１３３０は、系状態表１３３１に保持する正系の状態を「正系待ち状態」に設定し（ステップＳ１９０６）、正系に対して蓄積正系指示を行う（ステップＳ１９０７）。
【０１６５】
また、ステップＳ１９０４において、副系の状態が「副系待ち状態」の場合、調停装置１３３０は、処理をステップＳ１９０８に移行する。すると、調停装置１３３０は、副系に対して停止指示を行う（ステップＳ１９０８）。そして、調停装置１３３０は、正系に対して蓄積正系指示を行う（ステップＳ１９０９）。
【０１６６】
また、ステップＳ１９０４において、副系の状態が「昇格正系運用状態」の場合、調停装置１３３０は、処理をステップＳ１９１０に移行する。すると、調停装置１３３０は、正系に対して停止指示を行う（ステップＳ１９１０）。
【０１６７】
以上の処理が終了すると、調停装置１３３０は、処理をステップＳ１９１１に移行し、「正系からの問合せに対する判定処理」を終了する。
【０１６８】
図２０は、本実施例に係る調停装置１３３０の「副系からの問合せに対する判定処理」（ステップＳ１８０９）を示すフローチャートである。
ステップＳ２００１において、調停装置１３３０は、系状態表１３３１から正系である第１のＤＢサーバ１３１０の状態を取得する。そして、取得した正系の状態が「不明状態」の場合（ステップＳ２００２  ＹＥＳ）、調停装置１３３０は、副系に指示不可能である旨を通知する（ステップＳ２００３）。また、取得した正系の状態が「不明状態」以外の状態である場合（ステップＳ２００２  ＮＯ）、調停装置１３３０は、処理をステップＳ２００４に移行する。
【０１６９】
ステップＳ２００４において、調停装置１３３０は、ステップＳ２００１で取得した正系の状態を判定する。正系の状態が「正系運用状態」の場合、調停装置１３３０は、処理をステップＳ２００５に移行する。すると、調停装置１３３０は、一定期間だけ、正系からの状態遷移問合せを待ち合わせる。一定期間経過しても正系から状態遷移問合せを受信しない場合、調停装置１３３０は、タイムアウトを検出する。
【０１７０】
タイムアウトを検出しない場合（ステップＳ２００６  ＮＯ）、調停装置１３３０は、処理をステップＳ２０１３に移行して「副系からの問合せに対する判定処理」を終了する。また、タイムアウトを検出すると（ステップＳ２００６  ＹＥＳ）、調停装置１３３０は、正系に対して停止指示を行う（ステップＳ２００７）。そして、調停装置１３３０は、系状態表１３３１が保持する副系の系状態を「副系待ち状態」に設定し（ステップＳ２００８）、副系に対して昇格正系指示を行う。
【０１７１】
また、ステップＳ２００４において、正系の状態が「正系待ち状態」の場合、調停装置１３３０は、処理をステップＳ２０１０に移行する。すると、調停装置１３３０は、副系に対して停止指示を行う（ステップＳ２０１０）。そして、調停装置１３３０は、正系に対して蓄積正系指示を行う（ステップＳ２０１１）。
【０１７２】
また、ステップＳ２００４において、正系の状態が「蓄積正系運用状態」の場合、調停装置１３３０は、処理をステップＳ２０１２に移行する。すると、調停装置１３３０は、副系に対して停止指示を行う（ステップＳ２０１２）。
【０１７３】
以上の処理が終了すると、調停装置１３３０は、処理をステップＳ２０１３に移行し、「副系からの問合せに対する判定処理」を終了する。
【０１７４】
図２１は、本実施例に係るデータベースシステム１３００の動作を説明する図である。図２１に記載の（１）〜（２５）は、以下に記載する（１）〜（２５）に対応する。
【０１７５】
（１）正系である第１のＤＢサーバ１３１０は、調停装置１３３０に対して、第１のＤＢサーバ１３１０が「正系運用状態」である旨の状態通知を行う。第１のＤＢサーバ１３１０は、状態通知を、一定期間毎に行う。
【０１７６】
（２）正系である第１のＤＢサーバ１３１０から「正系運用状態」である旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１に保持する第１のＤＢサーバ１３１０の状態を「正系運用状態」に設定する（ステップＳ１８０５）。
【０１７７】
（３）一方、副系である第２のＤＢサーバ１３２０は、調停装置１３３０に対して、第２のＤＢサーバ１３２０が「副系運用状態」である旨の状態通知を行う。第２のＤＢサーバ１３２０は、状態通知を、一定期間毎に行う。
【０１７８】
（４）副系である第２のＤＢサーバ１３２０から「副系運用状態」である旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１に保持する第２のＤＢサーバ１３２０の状態を「副系運用状態」に設定する（ステップＳ１８０５）。
【０１７９】
（５）ここで、第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を通信可能に接続するネットワークに断線が生じたと仮定する。（６）ネットワークに断線等の異常を検出すると、副系である第２のＤＢサーバ１３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ１６０６）。さらに、（７）第２のＤＢサーバ１３２０は、系状態情報１３２１を「副系運用状態」から「副系待ち状態」に変更する（ステップＳ１６０７）。そして、（８）第２のＤＢサーバ１３２０は、調停装置１３３０に対して状態遷移問合せを行う（ステップＳ１６０８）。
【０１８０】
（９）副系である第２のＤＢサーバ１３２０から状態遷移問合せを受けると（ステップＳ１８０７  ＮＯ）、調停装置１３３０は、正系である第１のＤＢサーバ１３１０を評価する（ステップＳ１８０９）。そして、（１０）評価にしたがって、調停装置１３３０は、第１のＤＢサーバ１３１０に対して停止指示を行う（ステップＳ２００７）。
【０１８１】
（１１）また、調停装置１３３０は、状態遷移問合せとともに通知された系状態情報１３２１にしたがって、系状態表１３３１に保持する第１のＤＢサーバ１３１０の状態を「副系待ち状態」に設定する（ステップＳ２００８）。そして、（１２）調停装置１３３０は、副系である第２のＤＢサーバ１３２０に対して、昇格正系指示を行う（ステップＳ２００９）。
【０１８２】
（１３）昇格正系指示を受けると、第２のＤＢサーバ１３２０は、昇格正系運用状態に移行する（ステップＳ１７０７）。そして、第２のＤＢサーバ１３２０は、更新抑止フラグ３２２を「無効」に設定する（ステップＳ１７０９）。また、（１４）第２のＤＢサーバ１３２０は、系状態情報１３２１を、「昇格正系運用状態」に変更する（ステップＳ１７０８）。
【０１８３】
（１５）ここで、調停装置１３３０がダウンした場合について考える。（１６）この場合、ユーザからの指示などに応じて、調停装置１３３０は再起動する。すると、（１７）副系である第２のＤＢサーバ１３２０は、第２のＤＢサーバ１３２０が「副系待ち状態」である旨の状態通知を行う。
【０１８４】
（１８）副系である第２のＤＢサーバ１３２０から「副系待ち状態」でる旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１に保持する第２のＤＢサーバ１３２０の状態を「副系待ち状態」に設定する（ステップＳ１８０５）。
【０１８５】
一方、（１９）ネットワークに断線等の異常を検出すると、第１のＤＢサーバ１３１０は、更新抑止フラグ３１２を「有効」に設定する（ステップＳ１６０４）。そして、（２０）第１のＤＢサーバ１３１０は、系状態情報１３１１を「正系運用状態」から「正系待ち状態」に変更する（ステップＳ１６０５）。さらに、（２１）第１のＤＢサーバ１３１０は、調停装置１３３０に対して状態遷移問合せを行う（ステップＳ１６０８）。
【０１８６】
（２２）正系である第１のＤＢサーバ１３１０から状態遷移問合せを受けると、調停装置１３３０は、副系である第２のＤＢサーバ１３２０を評価する（ステップＳ１８０８）。そして、（２３）評価にしたがって、調停装置１３３０は、第１のＤＢサーバ１３１０に対して停止指示を行う（ステップＳ１９１０）。
【０１８７】
（２４）副系である第２のＤＢサーバ１３２０から「昇格正系運用状態」である旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１に保持する第２のＤＢサーバ１３２０の状態を「昇格正系運用状態」に設定する（ステップＳ１８０５）。
【０１８８】
以上に説明した処理により、図２２に示す調停装置１３３０の再起動による系への指示矛盾を抑止することが可能となる。なお、図２２は、データベースシステム１３００が解決することができる問題の一例を示すものであって、図２２に示す問題のみを解決できる旨を示すものではない。例えば、第２の実施例で示した効果も得られることは当然である。
【０１８９】
図２２は、調停装置１３３０の再起動時による系への指示矛盾を説明する図である。図２２に記載の（１）〜（１１）は、以下に記載する（１）〜（１１）に対応する。
（１）第１のＤＢサーバ３１０−第２のＤＢサーバ３２０間を通信可能に接続するネットワーに断線が生じたと仮定する。（２）ネットワークに断線等の異常を検出すると、第２のＤＢサーバ３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ７０６）。（３）受信拒否フラグ３２３を「有効」に設定すると、第２のＤＢサーバ３２０は、調停装置３３０に対して、状態遷移問合せを行なう（ステップＳ７０５）。
（４）副系である第２のＤＢサーバ３２０から状態遷移問合せを受信すると（ステップＳ９０４  ＮＯ）、調停装置３３０は、正系である第１のＤＢサーバ３１０に対して停止指示を通知する（ステップＳ９０７）。停止指示を受けた第１のＤＢサーバ３１０は、ＤＢサーバとしての動作に必要なプロセス等を停止する（ステップＳ８０９）。また、（５）調停装置３３０は、副系である第２のＤＢサーバ３２０に対して昇格正系指示を通知する（ステップＳ９０８）。（６）昇格正系指示を受けた第２のＤＢサーバ３２０は、更新抑止フラグ３２２を無効に設定し、昇格正系運用状態に移行する（ステップＳ８０６）。
【０１９０】
（７）ここで、調停装置３３０がダウンした場合を考える。（８）調停装置３３０がダウンした場合、調停装置３３０は、手動でまたは自動で再起動処理を行なう。
（９）調停装置３３０の再起動完了後に、第１のＤＢサーバ３１０から状態遷移問合せを受信すると（ステップＳ９０４  ＹＥＳ）、（１０）調停装置３３０は、副系である第２のＤＢサーバ３２０に対して停止指示を通知する（ステップＳ９０５）。また、（１１）調停装置３３０は、正系である第１のＤＢサーバ３１０に対して蓄積正系指示を通知する（ステップＳ９０６）。このように調停装置３３０が動作するのは、再起動前により、各系に対して通知した指示が喪失してしまうからである。
【０１９１】
以上のように、第１のＤＢサーバ３１０は、調停装置３３０から（１１）蓄積正系指示を受けて更新可能な状態になっている。そして、第２のＤＢサーバ３２０は、調停装置３３０から（５）昇格正系指示を受けて更新可能な状態になっている。その結果、データベースシステム３００は、スプリットブレイン状態となっている。
【０１９２】
一方、本実施例に係るデータベースシステム１３００は、調停装置１３３０に各系の状態を記憶する系状態表１３３１を備える。そして、調停装置１３３０は、正系からの状態遷移問合せを受信すると副系の状態を評価し（図１９、ステップＳ１９０４）、副系からの状態遷移問合せを受信すると正系の状態を評価する（図２０、ステップＳ２００４）。そして、調停装置１３３０は、評価結果にしたがって、例えば、図２１（２３）に示したように状態遷移指示を行なう。その結果、調停装置１３３０が再起動しても、図２２に示した指示矛盾を抑止することが可能となる。
【実施例４】
【０１９３】
図２３は、本実施例に係るデータベースシステム２３００の構成例を示す図である。
図２３に示すデータベースシステム２３００は、第１のＤＢサーバ１３１０と、第２のＤＢサーバ１３２０と、調停装置２３３０と、を備える。第１のＤＢサーバ１３１０と第２のＤＢサーバ１３２０と調停装置２３３０は、ネットワークを介して互いに通信可能に接続している。ただし、第１のＤＢサーバ１３１０と第２のＤＢサーバ１３２０と調停装置２３３０は、専用線等を介して互いに通信可能に接続してもよい。
【０１９４】
図２３に示すデータベースシステム２３００は、第１のＤＢサーバ１３１０が正系、第２のＤＢサーバ１３２０が副系の状態にある場合を示している。第１のＤＢサーバ１３１０、第２のＤＢサーバ１３２０および調停装置２３３０は、例えば、図３２で示す構成の情報処理装置で実現できる。
【０１９５】
図２３に示すデータベースシステム２３００は、図１３に示したデータベースシステム１３００の構成を全て含んでいる。そこで、図１３と重複する構成には、図１３と同じ符号を示し、その具体的な説明については省略する。
【０１９６】
第１のＤＢサーバ１３１０およぎ第２のＤＢサーバ１３２０の構成、動作等については、図１３、図１４、図１６および図１７に示したとおりである。
調停装置２３３０は、第１のＤＢサーバ１３１０および第２のＤＢサーバ１３２０の状態に応じて、停止指示などの状態遷移指示を行なって、第１のＤＢサーバ１３１０および第２のＤＢサーバ１３２０の状態を調停する。
【０１９７】
調停装置２３３０は、各系から通知される系状態情報を記憶する系状態表１３３１と、調停装置２３３０と接続し調停する対象のＤＢサーバ、図２３では第１のＤＢサーバ１３１０と第２のＤＢサーバ１３２０を記憶するサーバリスト１３３２と、を備える。
【０１９８】
さらに、調停装置２３３０は、データベースシステム２３００が通常状態であることを検出したことを示す通常状態捕捉フラグ２３３１と、系に対して状態遷移指示済みであることを示す状態遷移指示済フラグ２３３２と、を備える。
【０１９９】
ここで、データベースシステム２３００が「通常状態」とは、正系である第１のＤＢサーバ１３１０が正系運用状態、かつ、副系である第２のＤＢサーバ１３２０が副系運用状態、すなわち、冗長化された状態でデータベースシステム２３００が運用されている状態をいう。
【０２００】
系状態表１３３１、通常状態捕捉フラグ２３３１および状態遷移指示済フラグ２３３２は、調停装置２３３０に備わるＲＡＭ等の揮発性メモリに保持してもよいし、調停装置２３３０に備わるＥＰＲＯＭや磁気ディスク装置等の不揮発性メモリに保持してもよい。ただし、調停装置２３３０は、系状態表１３３１、通常状態捕捉フラグ２３３１または状態遷移指示済フラグ２３３２を保持する揮発性メモリを初期化することなく再起動処理を行なう必要がある。再起動しても系状態表１３３１、通常状態捕捉フラグ２３３１および状態遷移指示済フラグ２３３２の内容を保持するためである。
【０２０１】
図２４は、本実施例に係る調停装置２３３０の処理を示すフローチャートである。
調停装置２３３０に電源が投入されると、調停装置２３３０は、起動処理を開始する（ステップＳ２４００）。起動処理が完了すると、調停装置２３３０は、調停装置として動作するために必要な初期化処理を実行する（ステップＳ２４０１）。例えば、調停装置２３３０は、系状態表１３３１を初期化する。このとき、調停装置２３３０は、系状態表１３３１に保持する第１のＤＢサーバ１３１０の系状態情報と第２のＤＢサーバ１３２０の系状態情報とに「不明状態」を設定する。
【０２０２】
初期化が完了すると、調停装置２３３０は、調停装置２３３０の起動処理が完了した旨の起動通知を送信する（ステップＳ２４０２）。
ステップＳ２４０３において、系から状態通知等を受けると、調停装置２３３０は、処理をステップＳ２４０４に移行する。系から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、調停装置２３３０は、系からの状態通知にしたがって系状態情報１３１１を更新する（ステップＳ２４０５）。
【０２０３】
ステップＳ２４０６において、調停装置２３３０は、系状態情報１３１１を参照し、データベースシステム２３００が通常状態、すなわち、正系の第１のＤＢサーバ１３１０が正系運用状態、かつ、副系の第２のＤＢサーバ１３２０が副系運用状態、であるか否かを判別する。
【０２０４】
データベースシステム２３００が通常状態である場合（ステップＳ２４０６  ＹＥＳ）、通常状態捕捉フラグ２３３１を「有効」に設定する（ステップＳ２４０７）。そして、調停装置２３３０は、テップＳ２４０３から処理を再開する。また、データベースシステム２３００が通常状態でない場合も（ステップＳ２４０６  ＮＯ）、調停装置２３３０から処理を再開する。
【０２０５】
一方、系から状態通知でなく状態遷移問合せを受けると（ステップＳ２４０４  ＮＯ、ステップＳ２４０８  ＹＥＳ）、調停装置２３３０は、処理をステップＳ２４０９に移行する。そして、ステップＳ２４０３で受信した状態遷移問合せが正系からの問合せの場合（ステップＳ２４０９  ＹＥＳ）、調停装置２３３０は、正系からの問合せに対する判定処理を行う（ステップＳ２４１０）。この「正系からの問合せに対する判定処理」については、図２５に示す。
【０２０６】
また、ステップＳ２４０３で受信した状態遷移問合せが副系からの問合せの場合（ステップＳ２４０９  ＮＯ）、調停装置２３３０は、副系からの問合せに対する判定処理を行う（ステップＳ２４１１）。この「副系からの問合せに対する判定処理」については、図２６に示す。
【０２０７】
また、ステップＳ２４０３で受信したものが系から状態通知でなく状態遷移問合せでもない場合（ステップＳ２４０８  ＮＯ）、調停装置２３３０は、ステップＳ２４０３から処理を再開する。同様に、ステップＳ２４１０およびＳ２４１１の処理が終了すると、調停装置２３３０は、ステップＳ２４０３から処理を再開する。
【０２０８】
図２５は、本実施例に係る調停装置２３３０の「正系からの問合せに対する判定処理」（ステップＳ２４１０）を示すフローチャートである。
ステップＳ２５０１において、調停装置２３３０は、系状態表１３３１から副系である第２のＤＢサーバ１３２０の状態を取得する。そして、取得した副系の状態が「不明状態」の場合（ステップＳ２５０２  ＹＥＳ）、調停装置２３３０は、正系に指示不可能である旨を通知する（ステップＳ２５０３）。また、取得した副系の状態が「不明状態」以外の状態である場合（ステップＳ２５０２  ＮＯ）、調停装置２３３０は、処理をステップＳ２５０４に移行する。
【０２０９】
ステップＳ２５０４において、調停装置２３３０は、ステップＳ２５０１で取得した副系の状態を判定する。副系の状態が「副系運用状態」の場合、調停装置２３３０は、処理をステップＳ２５０５に移行する。すると、調停装置２３３０は、副系に対して停止指示を行う（ステップＳ２５０５）。そして、調停装置２３３０は、系状態表１３３１に保持する正系の状態を「正系待ち状態」に設定する（ステップＳ２５０６）。すると、調停装置２３３０は、正系に対して蓄積正系指示を行い（ステップＳ２５０７）、状態遷移指示済フラグ２３３２に「有効」を設定する（ステップＳ２５０８）。
【０２１０】
また、ステップＳ２５０４において、副系の状態が「副系待ち状態」の場合、調停装置２３３０は、処理をステップＳ２５０９に移行する。そして、通常状態捕捉フラグ２３３１または状態遷移指示済フラグ２３３２のうち少なくとも１つが「無効」である場合（ステップＳ２５０９  ＮＯ）、調停装置２３３０は、処理をステップＳ２５１０に移行する。
【０２１１】
すると、調停装置２３３０は、副系に対して停止指示を行なうとともに（ステップＳ２５１０）、正系に対して蓄積正正系指示を行なう（ステップＳ２５１１）。さらに、調停装置２３３０は、状態遷移指示済フラグ２３３２を「有効」に設定する（ステップＳ２５１２）。
【０２１２】
また、ステップＳ２５０９において、通常状態捕捉フラグ２３３１が「有効」かつ状態遷移指示済フラグ２３３２が「有効」である場合（ステップＳ２５０９  ＹＥＳ）、調停装置２３３０は、正系に対して停止指示を行なう（ステップＳ２５１３）。
【０２１３】
また、ステップＳ２５０４において、副系の状態が「昇格正系運用状態」の場合、調停装置２３３０は、処理をステップＳ２５１３に移行する。そして、調停装置２３３０は、正系に対して停止指示を行う（ステップＳ２５１３）。
【０２１４】
以上の処理が終了すると、調停装置２３３０は、処理をステップＳ２５１４に移行し、「正系からの問合せに対する判定処理」を終了する。
図２６は、本実施例に係る調停装置２３３０の「副系からの問合せに対する判定処理」（ステップＳ２４１１）を示すフローチャートである。
【０２１５】
ステップＳ２６０１において、調停装置２３３０は、系状態表１３３１から正系である第１のＤＢサーバ１３１０の状態を取得する。そして、取得した正系の状態が「不明状態」の場合（ステップＳ２６０２  ＹＥＳ）、調停装置２３３０は、副系に指示不可能である旨を通知する（ステップＳ２６０３）。また、取得した正系の状態が「不明状態」以外の状態である場合（ステップＳ２６０２  ＮＯ）、調停装置２３３０は、処理をステップＳ２６０４に移行する。
【０２１６】
ステップＳ２６０４において、調停装置２３３０は、ステップＳ２６０１で取得した正系の状態を判定する。正系の状態が「正系運用状態」の場合、調停装置２３３０は、処理をステップＳ２６０５に移行する。すると、調停装置２３３０は、一定期間だけ、正系からの状態遷移問合せを待ち合わせる。一定期間経過しても正系から状態遷移問合せを受信しない場合、調停装置２３３０は、タイムアウトを検出する。
【０２１７】
タイムアウトを検出しない場合（ステップＳ２６０６  ＮＯ）、調停装置２３３０は、処理をステップＳ２６１３に移行して「副系からの問合せに対する判定処理」を終了する。また、タイムアウトを検出すると（ステップＳ２６０６  ＹＥＳ）、調停装置２３３０は、正系に対して停止指示を行う（ステップＳ２６０７）。そして、調停装置２３３０は、系状態表１３３１が保持する副系の系状態を「副系待ち状態」に設定し（ステップＳ２６０８）、副系に対して昇格正系指示を行う（ステップＳ２６０９）。さらに、調停装置２３３０は、状態遷移指示済フラグ２３３２を「有効」に設定する（ステップＳ２６１０）。
【０２１８】
また、ステップＳ２６０４において、正系の状態が「正系待ち状態」の場合、調停装置２３３０は、処理をステップＳ２６１０に移行する。そして、通常状態捕捉フラグ２３３１または状態遷移指示済フラグ２３３２のうち少なくとも１つが「無効」である場合（ステップＳ２６１１  ＮＯ）、調停装置２３３０は、処理をステップＳ２６１２に移行する。
【０２１９】
すると、調停装置２３３０は、副系に対して停止指示を行なうとともに（ステップＳ２６１２）、正系に対して蓄積正正系指示を行なう（ステップＳ２６１３）。さらに、調停装置２３３０は、状態遷移指示済フラグ２３３２を「有効」に設定する（ステップＳ２６１４）。
【０２２０】
また、ステップＳ２６１１において、通常状態捕捉フラグ２３３１が「有効」かつ状態遷移指示済フラグ２３３２が「有効」である場合（ステップＳ２６１１  ＹＥＳ）、調停装置２３３０は、副系に対して停止指示を行なう（ステップＳ２６１５）。
【０２２１】
また、ステップＳ２６０４において、正系の状態が「蓄積正系運用状態」の場合、調停装置２３３０は、処理をステップＳ２６１５に移行する。そして、調停装置２３３０は、副系に対して停止指示を行う（ステップＳ２６１５）。
【０２２２】
以上の処理が終了すると、調停装置２３３０は、処理をステップＳ２６１６に移行し、「副系からの問合せに対する判定処理」を終了する。
以下、本実施例に係るデータベースシステム２３００の動作を図２７〜図３０に基づいて説明する図である。
【０２２３】
図２７は、本実施例に係るデータベースシステム２３００の具体的な処理を説明する図である。なお、図２７では、副系から状態遷移問合せを受けた場合に一定時間正系からの状態遷移問合せを待ち合わせる処理（ステップＳ２６０５）を調停装置２３３０が備えない場合を示す。図２７に記載の（１）〜（２３）は、以下に記載する（１）〜（２３）に対応する。
【０２２４】
（１）正系である第１のＤＢサーバ１３１０は、一定期間毎に調停装置２３３０に対して状態通知を行なう。図２７に示す第１のＤＢサーバ１３１０は、系状態情報１３１１が正系運用状態であるから、調停装置２３３０に対して正系運用状態である旨の状態通知を行なう。
【０２２５】
（２）調停装置２３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ２４０５）。例えば、第１のＤＢサーバ１３１０から正系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第１のＤＢサーバ１３１０が正系運用状態である旨を記憶する。
【０２２６】
（３）副系である第２のＤＢサーバ１３２０は、一定期間毎に調停装置２３３０に対して状態通知を行なう。図２７に示す第２のＤＢサーバ１３２０は、系状態情報１３２１が副系運用状態であるから、調停装置２３３０に対して副系運用状態である旨の状態通知を行なう。
【０２２７】
（４）調停装置２３３０は、副系である第２のＤＢサーバ１３２０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第２のＤＢサーバ１３２０の系状態を記憶する（ステップＳ２４０５）。例えば、第２のＤＢサーバ１３２０から副系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第２のＤＢサーバ１３２０が副系運用状態である旨を記憶する。
【０２２８】
（５）調停装置２３３０は、系状態表１３３１を例えば定期的にチェックする。そして、調停装置２３３０は、正系である第１のＤＢサーバ１３１０が正系運用状態、かつ、副系である第２のＤＢサーバ１３２０が副系運用状態、となったことを検出すると、通常状態となったと判断する（ステップＳ２４０６  ＹＥＳ）。そして、調停装置２３３０は、通常状態捕捉フラグ２３３１を「有効」に設定する（ステップＳ２４０７）。
【０２２９】
なお、一度「有効」に設定した通常状態捕捉フラグ２３３１は、以後変更しないこととする。
（６）ここで、第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を通信可能に接続するネットワークに断線が生じたと仮定する。（７）ネットワークに断線等の異常を検出すると、正系である第１のＤＢサーバ１３１０は、更新抑止フラグ３１２を「有効」に設定する（ステップＳ１６０４）。そして、（８）第１のＤＢサーバ１３１０は、系状態情報１３１１を正系待ち状態に設定する（ステップＳ１６０５）。
【０２３０】
（９）ここで、第１のＤＢサーバ１３１０は、一定期間毎に状態通知を行なう。このタイミングで状態通知を行なう場合、第１のＤＢサーバ１３１０は、調停装置２３３０に対して、正系待ち状態である旨の状態通知を行なう。
【０２３１】
（１０）調停装置２３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ２４０５）。例えば、第１のＤＢサーバ１３１０から正系待ち状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１の第１のＤＢサーバ１３１０についての情報を正系運用状態から正系待ち状態に更新する。
【０２３２】
（１１）一方、ネットワークに断線等の異常を検出すると、副系である第２のＤＢサーバ１３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ１６０６）。そして、（１２）第２のＤＢサーバ１３２０は、系状態情報１３２１を副系待ち状態に設定する（ステップＳ１６０７）。
【０２３３】
（１３）第２のＤＢサーバ１３２０は、一定期間毎に状態通知を行なう。このタイミングで状態通知を行なう場合、第２のＤＢサーバ１３２０は、調停装置２３３０に対して副系待ち状態である旨の状態通知を行なう。
【０２３４】
（１４）調停装置２３３０は、副系である第２のＤＢサーバ１３２０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第２のＤＢサーバ１３２０の系状態を記憶する（ステップＳ２４０５）。例えば、第２のＤＢサーバ１３２０から副系待ち状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１の第２のＤＢサーバ１３２０についての情報を副系運用状態から副系待ち状態に更新する。
【０２３５】
（１５）ここで、第１のＤＢサーバ１３１０が、第２のＤＢサーバ１３２０より先に、調停装置２３３０に対して、状態遷移問合せを行なうとする（ステップＳ１６０８）。
（１６）正系である第１のＤＢサーバ１３１０から状態遷移問合せを受けると、調停装置２３３０は、系状態表１３３１を参照し、副系である第２のＤＢサーバ１３２０について評価する（ステップＳ２５０４）。
【０２３６】
今、系状態表１３３１の第２のＤＢサーバ１３２０について情報は、副系待ち状態となっている（ステップＳ２５０４からＳ２５０９へ）。また、通常状態捕捉フラグ２３３１は、「有効」に設定され、状態遷移指示フラグ２３３２は、「無効」に設定されている（ステップＳ２５０９  ＮＯ）。
【０２３７】
（１７）したがって、調停装置２３３０は、副系である第２のＤＢサーバ１３２０に対して停止指示を行なう（ステップＳ２５１０）。そして、（１８）調停装置２３３０は、正系である第１のＤＢサーバ１３１０に対して蓄積正系指示を行なう（ステップＳ２５１１）。すると、（１９）調停装置２３３０は、状態遷移指示済フラグ２３３２を「有効」に設定する（ステップＳ２５１２）。
【０２３８】
（２０）調停装置２３３０から蓄積正系指示を受けた第１のＤＢサーバ１３１０は、系状態１３１１を蓄積正系運用状態に設定する（ステップＳ１７０５）。第１のＤＢサーバ１３１０は、蓄積正系運用状態に移行する。さらに、（２１）第１のＤＢサーバ１３１０は、更新抑止フラグ３１２を、「無効」に設定する（ステップＳ１７０９）。以後、第１のＤＢサーバ１３１０でのＤＢ記憶装置３１１の更新が可能となる。
【０２３９】
（２２）第１のＤＢサーバ１３１０は、一定期間毎に行なわれる状態通知により、調停装置２３３０に系状態が蓄積正系運用状態である旨を通知する。
（２３）調停装置２３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１の第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ２４０５）。例えば、第１のＤＢサーバ１３１０から蓄積正系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第１のＤＢサーバ１３１０についての情報を正系待ち状態から蓄積正系運用状態に更新する。
【０２４０】
図２８は、副系から状態遷移問合せを受けた場合に一定時間正系からの状態遷移問合せを待ち合わせる処理（ステップＳ２６０５）を調停装置２３３０が備えるデータベースシステム２３００の具体的な処理を説明する図である。図２８は、正系からの待ち合わせがタイムアウトしない場合について示している。図２８に記載の（１）〜（２１）は、以下に記載する（１）〜（２１）に対応する。
【０２４１】
（１）正系である第１のＤＢサーバ１３１０は、一定期間毎に調停装置２３３０に対して状態通知を行なう。図２８に示す第１のＤＢサーバ１３１０は、系状態情報１３１１が正系運用状態であるから、調停装置２３３０に対して正系運用状態である旨の状態通知を行なう。
【０２４２】
（２）調停装置２３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ２４０５）。例えば、第１のＤＢサーバ１３１０から正系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第１のＤＢサーバ１３１０が正系運用状態である旨を記憶する。
【０２４３】
（３）副系である第２のＤＢサーバ１３２０は、一定期間毎に調停装置２３３０に対して状態通知を行なう。図２８に示す第２のＤＢサーバ１３２０は、系状態情報１３２１が副系運用状態であるから、調停装置２３３０に対して副系運用状態である旨の状態通知を行なう。
【０２４４】
（４）調停装置２３３０は、副系である第２のＤＢサーバ１３２０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第２のＤＢサーバ１３２０の系状態を記憶する（ステップＳ２４０５）。例えば、第２のＤＢサーバ１３２０から副系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第２のＤＢサーバ１３２０が副系運用状態である旨を記憶する。
【０２４５】
（５）調停装置２３３０は、系状態表１３３１を例えば定期的にチェックする。そして、調停装置２３３０は、し、正系である第１のＤＢサーバ１３１０が正系運用状態、かつ、副系である第２のＤＢサーバ１３２０が副系運用状態、となったことを検出すると、通常状態となったと判断する（ステップＳ２４０６  ＹＥＳ）。そして、調停装置２３３０は、通常状態捕捉フラグ２３３１を「有効」に設定する（ステップＳ２４０７）。
【０２４６】
なお、一度「有効」に設定した通常状態捕捉フラグ２３３１は、以後変更しないこととする。
（６）ここで、第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を通信可能に接続するネットワークに断線が生じたと仮定する。（７）ネットワークに断線等の異常を検出すると、副系である第２のＤＢサーバ１３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ１６０６）。そして、（８）第２のＤＢサーバ１３２０は、系状態情報１３２１を副系待ち状態に設定する（ステップＳ１６０７）。すると、（９）第２のＤＢサーバ１３２０は、調停装置２３３０に対して、状態遷移問合せを行なう（ステップＳ１６０８）。
【０２４７】
（１０）調停装置２３３０は、副系である第２のＤＢサーバ１３２０から状態遷移問合せを受けると（ステップＳ１８０７  ＹＥＳ）、正系である第１のＤＢサーバ１３１０について評価する（ステップＳ２６０４）。正系である第１のＤＢサーバ１３１０が正系運用状態である場合、調停装置２３３０は、各系に状態遷移の指示を行なう前に、正系からの状態遷移問合せを一定時間待ち合わせる（ステップＳ２６０５）。
【０２４８】
（１１）一方、ネットワークに断線等の異常を検出すると、正系である第１のＤＢサーバ１３１０は、更新抑止フラグ３１２を「有効」に設定する（ステップＳ１６０４）。そして、（１２）第１のＤＢサーバ１３１０は、系状態情報１３２１を正系待ち状態に設定する（ステップＳ１６０５）。すると、（１３）第１のＤＢサーバ１３１０は、調停装置２３３０に対して状態遷移問合せを行なう（ステップＳ１６０８）。
【０２４９】
（１４）第１のＤＢサーバ１３１０からの状態遷移問合せを、上記（１０）で設定した一定時間内に受信すると（ステップＳ２６０６  ＹＥＳ）、調停装置２３３０は、上記（９）副系からの状態遷移問合せを破棄する。そして、調停装置２３３０は、正系からの状態遷移問合せに対して処理を行なう。
【０２５０】
今、系状態表１３３１の第２のＤＢサーバ１３２０について情報は、副系待ち状態となっている（ステップＳ２５０４からＳ２５０９へ）。また、通常状態捕捉フラグ２３３１は、「有効」に設定され、状態遷移指示フラグ２３３２は、「無効」に設定されている（ステップＳ２５０９  ＮＯ）。
【０２５１】
（１５）したがって、調停装置２３３０は、副系である第２のＤＢサーバ１３２０に対して停止指示を行なう（ステップＳ２５１０）。そして、（１６）調停装置２３３０は、正系である第１のＤＢサーバ１３１０に対して蓄積正系指示を行なう（ステップＳ２５１１）。すると、（１７）調停装置２３３０は、状態遷移指示済フラグ２３３２を「有効」に設定する（ステップＳ２５１２）。
【０２５２】
（１８）調停装置２３３０から蓄積正系指示を受けた第１のＤＢサーバ１３１０は、系状態１３１１を蓄積正系運用状態に設定する（ステップＳ１７０５）。以後、第１のＤＢサーバ１３１０は、蓄積正系運用状態に移行する。さらに、（１９）第１のＤＢサーバ１３１０は、更新抑止フラグ３１２を、「無効」に設定する（ステップＳ１７０９）。以後、第１のＤＢサーバ１３１０でのＤＢ記憶装置３１１の更新が可能となる。
【０２５３】
（２０）第１のＤＢサーバ１３１０は、一定期間毎に行なわれる状態通知により、調停装置２３３０に系状態が蓄積正系運用状態である旨を通知する。
（２１）調停装置２３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１の第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ２４０５）。例えば、第１のＤＢサーバ１３１０から蓄積正系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第１のＤＢサーバ１３１０についての情報を正系待ち状態から蓄積正系運用状態に更新する。
【０２５４】
図２９は、副系から状態遷移問合せを受けた場合に一定時間正系からの状態遷移問合せを待ち合わせる処理（ステップＳ２６０５）を調停装置２３３０が備えるデータベースシステム２３００の具体的な処理を説明する図である。図２９は、正系からの待ち合わせがタイムアウトする場合について示している。図２９に記載の（１）〜（１８）は、以下に記載する（１）〜（１８）に対応する。
【０２５５】
（１）正系である第１のＤＢサーバ１３１０は、一定期間毎に調停装置２３３０に対して状態通知を行なう。図２９に示す第１のＤＢサーバ１３１０は、系状態情報１３１１が正系運用状態であるから、調停装置２３３０に対して正系運用状態である旨の状態通知を行なう。
【０２５６】
（２）調停装置２３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ２４０５）。例えば、第１のＤＢサーバ１３１０から正系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第１のＤＢサーバ１３１０が正系運用状態である旨を記憶する。
【０２５７】
（３）副系である第２のＤＢサーバ１３２０は、一定期間毎に調停装置２３３０に対して状態通知を行なう。図２９に示す第２のＤＢサーバ１３２０は、系状態情報１３２１が副系運用状態であるから、調停装置２３３０に対して副系運用状態である旨の状態通知を行なう。
【０２５８】
（４）調停装置２３３０は、副系である第２のＤＢサーバ１３２０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１に第２のＤＢサーバ１３２０の系状態を記憶する（ステップＳ２４０５）。例えば、第２のＤＢサーバ１３２０から副系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第２のＤＢサーバ１３２０が副系運用状態である旨を記憶する。
【０２５９】
（５）調停装置２３３０は、系状態表１３３１を例えば定期的にチェックする。そして、調停装置２３３０は、し、正系である第１のＤＢサーバ１３１０が正系運用状態、かつ、副系である第２のＤＢサーバ１３２０が副系運用状態、となったことを検出すると、通常状態となったと判断する（ステップＳ２４０６  ＹＥＳ）。そして、調停装置２３３０は、通常状態捕捉フラグ２３３１を「有効」に設定する（ステップＳ２４０７）。
なお、一度「有効」に設定した通常状態捕捉フラグ２３３１は、以後変更しないこととする。
【０２６０】
（６）ここで、第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を通信可能に接続するネットワークに断線が生じたと仮定する。（７）ネットワークに断線等の異常を検出すると、副系である第２のＤＢサーバ１３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ１６０６）。そして、（８）第２のＤＢサーバ１３２０は、系状態情報１３２１を副系待ち状態に設定する（ステップＳ１６０７）。すると、（９）第２のＤＢサーバ１３２０は、調停装置２３３０に対して、状態遷移問合せを行なう（ステップＳ１６０８）。
【０２６１】
（１０）調停装置２３３０は、副系である第２のＤＢサーバ１３２０から状態遷移問合せを受けると（ステップＳ１８０７  ＹＥＳ）、正系である第１のＤＢサーバ１３１０について評価する（ステップＳ２６０４）。正系である第１のＤＢサーバ１３１０が正系運用状態である場合、調停装置２３３０は、各系に状態遷移の指示を行なう前に、正系からの状態遷移問合せを一定時間待ち合わせる（ステップＳ２６０５）。
【０２６２】
（１１）一定時間内に正系からの状態遷移問合せを受信しない場合、調停装置２３３０は、タイムアウトを検出する。この場合、調停装置２３３０は、副系からの状態遷移問合せに対して処理を行なう（ステップＳ２６０６  ＹＥＳ）。
【０２６３】
（１２）まず、調停装置２３３０は、正系である第１のＤＢサーバ１３１０に対して停止指示を行なう（ステップＳ２６０７）。そして、（１３）調停装置２３３０は、副系である第２のＤＢサーバ１３２０に対して昇格正系指示を行なう（ステップＳ２６０９）。すると、（１４）調停装置２３３０は、状態遷移指示済フラグ２３３２を「有効」に設定する（ステップＳ２６１０）。
【０２６４】
（１５）調停装置２３３０から昇格正系指示を受けた第２のＤＢサーバ１３２０は、系状態情報１３２１を昇格正系運用状態に設定する（ステップＳ１７０８）。以後、第２のＤＢサーバ１３２０は、昇格正系運用状態に移行する。さらに、（１６）第２のＤＢサーバ１３２０は、更新抑止フラグ３２２を、「無効」に設定する（ステップＳ１７０９）。以後、第２のＤＢサーバ１３２０でのＤＢ記憶装置３２１の更新が可能となる。
【０２６５】
（１７）第２のＤＢサーバ１３２０は、一定期間毎に行なわれる状態通知により、調停装置２３３０に系状態が昇格正系運用状態である旨を通知する。
（１８）調停装置２３３０は、副系である第２のＤＢサーバ１３２０から状態通知を受けると（ステップＳ２４０４  ＹＥＳ）、系状態表１３３１の第２のＤＢサーバ１３２０の系状態を記憶する（ステップＳ２４０５）。例えば、第２のＤＢサーバ１３２０から昇格正系運用状態である旨の状態通知を受けると、調停装置２３３０は、系状態表１３３１に第２のＤＢサーバ１３２０についての情報を副系待ち状態から昇格正系運用状態に更新する。
【０２６６】
図３０は、本実施例に係るデータベースシステム２３００の起動時の処理を説明する図である。図３０に記載の（１）〜（７）は、以下に記載する（１）〜（７）に対応する。
調停装置２３３０は、起動すると、系状態表１３３１を「不明状態」で初期化する（ステップＳ２４０１）。したがって、系状態表１３３１には、第１のＤＢサーバ１３１０が不明状態、かつ、第２のＤＢサーバ１３２０が不明状態、であると記憶されている。
【０２６７】
（１）このとき、第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を通信可能に接続するネットワークに断線が生じたと仮定する。（２）ネットワークに断線等の異常を検出すると、副系である第２のＤＢサーバ１３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ１６０６）。さらに、（３）第２のＤＢサーバ１３２０は、系状態情報１３２１を「副系運用状態」から「副系待ち状態」に変更する（ステップＳ１６０７）。そして、（４）第２のＤＢサーバ１３２０は、調停装置２３３０に対して状態遷移問合せを行なう（ステップＳ１６０８）。
【０２６８】
（５）副系である第２のＤＢサーバ１３２０から状態遷移問合せを受けると（ステップＳ２４０９  ＮＯ）、調停装置２３３０は、正系である第１のＤＢサーバ１３１０を評価する（ステップＳ２６０４）。
【０２６９】
ここで、系状態表１３３１には、第１のＤＢサーバ１３１０が「不明状態」と記憶されているので（ステップＳ２６０２  ＹＥＳ）、調停装置２３３０は、副系に対して状態遷移指示が不可能である旨を通知する（ステップＳ２６０３）。
【０２７０】
以上に説明した処理により、図３１に示すような場合、すなわち、ネットワークの断線等の異常を検出した場合にデータベースシステム２３００が過剰反応を起こして正系と副系の両系を停止する場合を防止することが可能となる。なお、図３１は、データベースシステム２３００が解決することができる問題の一例を示すものであって、図３１に示す問題のみを解決できる旨を示すものではない。例えば、第２および第３の実施例で示した効果も得られることは当然である。
【０２７１】
図３１は、ネットワークの断線等の異常により、データベースシステム１３００の両系が停止する問題を説明する図である。図３１に記載の（１）〜（１８）は、以下に記載する（１）〜（１８）に対応する。
【０２７２】
（１）正系である第１のＤＢサーバ１３１０は、一定期間毎に調停装置１３３０に対して状態通知を行なう。図３１に示す第１のＤＢサーバ１３１０は、系状態情報１３１１が正系運用状態であるから、調停装置１３３０に対して正系運用状態である旨の状態通知を行なう。
【０２７３】
（２）調停装置１３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ１８０４  ＹＥＳ）、系状態表１３３１に第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ１８０５）。例えば、第１のＤＢサーバ１３１０から正系運用状態である旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１に第１のＤＢサーバ１３１０が正系運用状態である旨を記憶する。
【０２７４】
（３）副系である第２のＤＢサーバ１３２０は、一定期間毎に調停装置１３３０に対して状態通知を行なう。図３１に示す第２のＤＢサーバ１３２０は、系状態情報１３２１が副系運用状態であるから、調停装置１３３０に対して副系運用状態である旨の状態通知を行なう。
【０２７５】
（４）調停装置１３３０は、副系である第２のＤＢサーバ１３２０から状態通知を受けると（ステップＳ１８０４  ＹＥＳ）、系状態表１３３１に第２のＤＢサーバ１３２０の系状態を記憶する（ステップＳ１８０５）。例えば、第２のＤＢサーバ１３２０から副系運用状態である旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１に第２のＤＢサーバ１３２０が副系運用状態である旨を記憶する。
【０２７６】
（５）ここで、第１のＤＢサーバ１３１０−第２のＤＢサーバ１３２０間を通信可能に接続するネットワークに断線が生じたと仮定する。（６）ネットワークに断線等の異常を検出すると、正系である第１のＤＢサーバ１３１０は、更新抑止フラグ３１２を「有効」に設定する（ステップＳ１６０４）。そして、（７）第１のＤＢサーバ１３１０は、系状態情報１３１１を正系待ち状態に設定する（ステップＳ１６０５）。
【０２７７】
（８）ここで、第１のＤＢサーバ１３１０は、一定期間毎に状態通知を行なう。このタイミングで状態通知を行なう場合、第１のＤＢサーバ１３１０は、調停装置１３３０に対して、正系待ち状態である旨の状態通知を行なう。
【０２７８】
（９）調停装置１３３０は、正系である第１のＤＢサーバ１３１０から状態通知を受けると（ステップＳ１８０４  ＹＥＳ）、系状態表１３３１に第１のＤＢサーバ１３１０の系状態を記憶する（ステップＳ１８０５）。例えば、第１のＤＢサーバ１３１０から正系待ち状態である旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１の第１のＤＢサーバ１３１０についての情報を正系運用状態から正系待ち状態に更新する。
【０２７９】
（１０）一方、ネットワークに断線等の異常を検出すると、副系である第２のＤＢサーバ１３２０は、受信拒否フラグ３２３を「有効」に設定する（ステップＳ１６０６）。そして、（１１）第２のＤＢサーバ１３２０は、系状態情報１３２１を副系待ち状態に設定する（ステップＳ１６０７）。
【０２８０】
（１２）第２のＤＢサーバ１３２０は、一定期間毎に状態通知を行なう。このタイミングで状態通知を行なう場合、第２のＤＢサーバ１３２０は、調停装置１３３０に対して副系待ち状態である旨の状態通知を行なう。
【０２８１】
（１３）調停装置１３３０は、副系である第２のＤＢサーバ１３２０から状態通知を受けると（ステップＳ１８０４  ＹＥＳ）、系状態表１３３１に第２のＤＢサーバ１３２０の系状態を記憶する（ステップＳ１８０５）。例えば、第２のＤＢサーバ１３２０から副系待ち状態である旨の状態通知を受けると、調停装置１３３０は、系状態表１３３１の第２のＤＢサーバ１３２０についての情報を副系運用状態から副系待ち状態に更新する。
【０２８２】
（１４）ここで、第１のＤＢサーバ１３１０が、第２のＤＢサーバ１３２０より先に、調停装置１３３０に対して、状態遷移問合せを行なうとする（ステップＳ１６０８）。
（１５）正系である第１のＤＢサーバ１３１０から状態遷移問合せを受けると、調停装置１３３０は、系状態表１３３１を参照し、副系である第２のＤＢサーバ１３２０について評価する（ステップＳ１９０４）。
【０２８３】
今、系状態表１３３１の第２のＤＢサーバ１３２０についての情報は、副系待ち状態となっている（ステップＳ１９０４からＳ１９０８へ）。したがって、（１６）調停装置１３３０は、副系である第２のＤＢサーバ１３２０に対して停止指示を行なう（ステップＳ１９０８）。そして、調停装置２３３０は、正系である第１のＤＢサーバ１３１０に対して蓄積正系指示を行なう（ステップＳ１９０９）。
【０２８４】
（１７）同時期に、第２のＤＢサーバ１３２０が、調停装置２３３０に対して、状態遷移問合せを行なうと（ステップＳ１８０７  ＮＯ）、（１８）調停装置１３３０は、正系である第２のＤＢサーバ１３２０について評価する（ステップＳ２００４）。
【０２８５】
今、系状態表１３３１の第１のＤＢサーバ１３１０についての情報は、蓄積正系運用状態となっている（ステップＳ２００４からＳ２０１２）。したがって、（１９）調停装置１３３０は、副系である第２のＤＢサーバ１３２０に対して停止指示を行なう（ステップＳ２０１２）。
【０２８６】
以上のようにして、データベースシステム１３００では、第１のＤＢサーバ１３１０は、調停装置１３３０からの（１６）停止指示を受けて停止する。同様に、第２のＤＢサーバ１３２０も、調停装置１３３０からの（１９）停止指示を受けて停止する。このように、データベースシステム１３００は、ネットワークの断線等の異常を検出した場合に過剰反応を起こして正系と副系の両系を停止する
一方、本実施例に係るデータベースシステム２３００は、通常状態検出の有無を示す通常状態捕捉フラグ２３３１と、各系への状態遷移指示の有無を示す状態遷移指示済フラグ２３３２と、を備える。そして、調停装置２３３０は、通常状態を検出すると、通常状態捕捉フラグ２３３１を「有効」に設定する（ステップＳ２４０７）。また、調停装置２３３０は、各系に対して状態遷移指示を行なうと、状態遷移指示済フラグ２３３２を「有効」に設定する（ステップＳ２５０８、Ｓ２５１２、Ｓ２６１０、Ｓ２６１４）。
【０２８７】
そして、通常状態捕捉フラグ２３３１および状態遷移指示済フラグ２３３２が「有効」に設定されている場合、副系が副系待ち状態のときに正系から状態遷移問合せを受けると（ステップＳ２５０９  ＹＥＳ）、調停装置２３３０は、正系に対してだけ停止指示を行なう（ステップＳ２５１３）。
【０２８８】
また、通常状態捕捉フラグ２３３１および状態遷移指示済フラグ２３３２が「有効」に設定されている場合、正系が正系待ち状態のときに副系から状態遷移問合せを受けると（ステップＳ２６１１  ＹＥＳ）、調停装置２３３０は、副系に対してだけ停止指示を行なう（ステップＳ２６１５）。
【０２８９】
その結果、ネットワークの断線等の異常を検出した場合に、図３１に示したようにデータベースシステム２３００が過剰反応を起こして正系と副系の両系を停止することを防止することが可能となる。
【０２９０】
図３２は、第２乃至第４の実施例に係る第１のＤＢサーバ、第２のＤＢサーバおよび調停装置を実現する装置の具体的な構成例を示す図である。
図３２に示す情報処理装置３２００は、ＣＰＵ３２０１と、メモリ３２０２と、入力装置３２０３と、出力装置３２０４と、外部記録装置３２０５と、媒体駆動装置３２０６と、ネットワーク接続装置３２０８と、を有し、これらの装置がバスに接続されて相互にデータの受け渡しが行える構成となっている。
【０２９１】
ＣＰＵ３２０１は、周辺機器や各種ソフトウェアを実行する他に本実施例に係る調停装置、第１のＤＢサーバまたは第２のＤＢサーバを実現するプログラムを実行する。また、メモリ３２０２は、プログラムを実行するために使用される揮発性のメモリである。例えば、メモリ３２０２として、ＲＡＭ等を使用することができる。また、入力装置３２０３は、外部からのデータ入力手段である。例えば、入力装置３２０３として、キーボードやマウス等を使用することができる。
【０２９２】
外部記録装置３２０５は、情報処理装置３２００が動作するために必要なプログラムやデータの他に本実施例に係る調停装置、第１のＤＢサーバまたは第２のＤＢサーバを実現するプログラムを記録する。例えば、磁気ディスク装置等を使用することができる。
【０２９３】
媒体駆動装置３２０６は、メモリ３２０２や外部記録装置３２０５のデータを可搬記録媒体３２０７に出力し、または可搬記録媒体３２０７からプログラムやデータ等を読み出す。なお、可搬記録媒体３２０７とは、例えば、フロッピイディスク、ＭＯディスク、ＣＤ−ＲやＤＶＤ−Ｒ等の記憶媒体である。
【０２９４】
ネットワーク接続装置３２０８は、ネットワークを介して他の情報処理装置等と通信可能に接続するためのインタフェースである。
なお、第１乃至第３の実施例では、構成要素の対応関係が明確となるように、第１のＤＢサーバ、第２のＤＢサーバおよび調停装置と、図３２の構成要素と対応づけて説明した。しかし、第１乃至第３の実施例に係る第１のＤＢサーバ、第２のＤＢサーバおよび調停装置はそれぞれ独立した装置であることは当然である。
【０２９５】
また、図３２には構成例を示したのであって、全てが必須の構成要素であることを示すものではない。適宜必要な構成要素のみを使用して、第２乃至第４の実施例に係る第１のＤＢサーバ、第２のＤＢサーバおよび調停装置を実現することができる。
【０２９６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
データを記憶する第１の記憶手段と、
上位装置からの指示にしたがって第１のデータを前記第１の記憶手段に記憶する第１の正系処理手段と、
前記第１の正系処理手段が前記第１のデータを前記第１の記憶手段に記憶することを抑止する第１の抑止手段と、
第１の問合せを行なう第１の問合せ手段と、
を備える第１のサーバと、
データを記憶する第２の記憶手段と、
前記第１のサーバからの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する副系処理手段と、
前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理手段と、
前記第１のサーバからの要求の受付けを抑止する第２の抑止手段と、
第２の問合せを行なう第２の問合せ手段と、
を備える第２のサーバと、
前記第１のサーバから前記第１の問合せを受けると、前記第２のサーバに対して処理停止を指示するとともに前記第１のサーバに対して前記第１の正系処理手段の実行を指示し、前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバに対して処理停止を指示するとともに前記第２のサーバに対して前記第２の正系処理手段の実行を指示する調停手段と、
を備え、
前記第１のサーバは、前記第２のサーバが前記副系処理手段を実行して前記第１のデータを前記第２の記憶手段に記憶すると、前記第１の正系処理手段を実行して前記第１のデータを前記第１の記憶手段に記憶し、前記第１のサーバ−前記第２のサーバ間の通信に異常を検出すると、前記第１の抑止手段を実行し前記調停手段に第１の問合せを行い、前記調停手段からの指示に応じて、前記第１の正系動作を行いまたは動作を停止し、
前記第２のサーバは、前記第１のサーバ−前記第２のサーバ間の通信に異常を検出すると、前記第２の抑止手段を実行し前記調停手段に第２の問合せを行い、前記調停手段からの指示に応じて、前記第２の正系動作を行いまたは動作を停止する、
ことを特徴とするデータベースシステム。
（付記２）
前記第１のサーバは、前記調停手段から処理停止の指示を受けると、前記第１の正系処理手段の実行を停止し、前記調停手段から前記第１の正系処理手段の実行の指示を受けると、前記第１の抑止手段の実行を停止する、
ことを特徴とする付記１に記載のデータベースシステム。
（付記３）
前記第２のサーバは、前記調停手段から処理停止の指示を受けると、前記副系処理手段の実行を停止し、前記調停手段から前記第２の正系処理手段の実行の指示を受けると、前記副系処理手段にかえて前記第２の正系処理手段を実行する、
ことを特徴とする付記１に記載のデータベースシステム。
（付記４）
前記第１のサーバは、
前記第１の正系処理手段が動作している正系運用状態、動作を停止して前記調停手段からの指示を待っている正系待ち状態、または、前記第２のサーバで前記副系処理手段が実行されることなく前記第１の正系処理手段が動作している蓄積正系状態を示す第１の状態情報を記憶する第１の状態情報記憶手段と、
前記第１の状態情報を前記調停手段に通知する第１の通知手段と、
をさらに備え、
前記第１のサーバ−前記第２のサーバ間の通信に異常を検出して前記第１の抑止手段を実行すると、前記正系運用状態から前記正系待ち状態に移行し前記調停手段に第１の問合せを行い、前記調停手段からの指示に応じて、前記蓄積正系状態または停止状態に移行し、
前記第２のサーバは、
前記副系処理手段が動作している副系運用状態、動作を停止して前記調停手段からの指示を待っている副系待ち状態、または、前記第２の正系処理手段が動作している昇格正系運用状態を示す第２の状態情報を記憶する第２の状態情報記憶手段と、
前記第２の状態情報を前記調停手段に通知する第２の通知手段と、
をさらに備え、
前記第１のサーバ−前記第２のサーバ間の通信に異常を検出して前記第２の抑止手段を実行すると、前記副系運用状態から前記副系待ち状態に移行し前記調停手段に第２の問合せを行い、前記調停手段からの指示に応じて、前記昇格正系運用状態または停止状態に移行し、
前記調停手段は、
前記第１のサーバから通知される前記第１の状態情報と、前記第２のサーバから通知される前記第２の状態情報と、を記憶する第３の記憶手段をさらに備え、
前記第１の問合せまたは前記第２の問合せを受けると、前記第３の記憶手段に記憶されている前記第１のサーバまたは第２のサーバの状態に基づいて、前記第１のサーバおよび第２のサーバに対して指示を行なう、
ことを特徴とする付記１に記載のデータベースシステム。
（付記５）
前記調停手段は、前記第１のサーバから前記第１の問合せを受けると、前記第３の記憶手段を参照し、
前記第２のサーバが前記副系運用状態のとき、前記第２のサーバに対して停止の指示をし、前記第１の状態情報を前記正系待ち状態に設定し、前記第１のサーバに対して前記蓄積正系状態への移行を指示し、
前記第２のサーバが前記副系待ち状態のとき、前記第２のサーバに対して停止の指示をし、前記第１のサーバに対して前記蓄積正系状態への移行を指示し、
前記第２のサーバが前記昇格正系運用状態のとき、前記第２のサーバに対して停止の指示をする、
ことを特徴とする付記４に記載のデータベースシステム。
（付記６）
前記調停手段は、前記第２のサーバから前記第２の問合せを受けると、前記第３の記憶手段を参照し、
前記第１のサーバが前記正系運用状態のとき、前記第１のサーバに対して停止の指示をし、前記第２の状態情報を前記副系待ち状態に設定し、前記第２のサーバに対して昇格正系指示状態への移行を指示し、
前記第１のサーバが前記正系待ち状態のとき、前記第２のサーバに対して停止の指示をし、前記第１のサーバに対して蓄積正系状態への移行を指示し、
前記第１のサーバが前記蓄積正系状態のとき、前記第２のサーバに対して停止の指示をする、
ことを特徴とする付記４に記載のデータベースシステム。
（付記７）
前記調停手段は、
前記第１のサーバが前記正系運用状態、かつ、前記第２のサーバが前記副系運用状態である通常状態を検出したときに有効を設定する通常状態捕捉情報を記憶する通常状態捕捉情報記憶手段と、
前記第１のサーバおよび前記第２のサーバに対して指示を行なったときに有効を設定する指示済情報を記憶する指示済情報記憶手段と、
をさらに備え、
前記第１のサーバから前記第１の問合せを受けると、前記第２のサーバが前記副系待ち状態であって前記通常状態捕捉情報および前記指示済情報が有効のとき、前記第１のサーバに対して停止を指示し、
前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバが前記正系待ち状態であって前記通常状態捕捉情報および前記指示済情報が有効のとき、前記第２のサーバに対して停止を指示する、
ことを特徴とする付記４に記載のデータベースシステム。
（付記８）
第１のサーバに、
前記第１のサーバと通信可能に接続する第２のサーバが備える第２の記憶手段に第１のデータが記憶されると、上位装置からの指示にしたがって前記第１のデータを第１の記憶手段に記憶する第１の正系処理と、
前記第２のサーバとの通信に異常を検出すると、前記上位装置からの指示にしたがって前記第１のデータを前記第１の記憶手段に記憶すること、を抑止する第１の抑止処理と、
前記第１のサーバと前記第２のサーバの動作を調停する調停手段に第１の問合せを行なう第１の問合せ処理と、
前記調停手段からの指示に応じて、前記第１の正系処理を実行しまたは動作を停止する処理と、
を実行させ、
前記第２のサーバに、
前記第１のサーバからの指示にしたがって前記第１のデータを第２の記憶手段に記憶する副系処理と、
前記第１のサーバと前記第２のサーバとの通信に異常を検出すると、前記第１のサーバからの要求の受付けを抑止する第２の抑止処理と、
前記調停手段に第２の問合せを行なう第２の問合せ処理と、
前記調停手段からの指示に応じて、前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理を実行しまたは動作を停止する処理と、
を実行させ、
前記調停手段に、
前記第１のサーバから前記第１の問合せを受けると、前記第２のサーバに対して処理停止を指示するとともに前記第１のサーバに対して前記第１の正系処理の実行を指示し、前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバに対して処理停止を指示するとともに前記第２のサーバに対して前記第２の正系処理の実行を指示する処理、
を実行させることを特徴とするデータベース制御方法。
（付記９）
前記第１のサーバは、前記調停手段から処理停止の指示を受けると、前記第１の正系処理を停止し、前記調停手段から前記第１の正系処理の実行の指示を受けると、前記第１の抑止処理を停止する、
ことを特徴とする付記８に記載のデータベースシステム。
（付記１０）
前記第２のサーバは、前記調停手段から処理停止の指示を受けると、前記副系処理を停止し、前記調停手段から前記第２の正系処理の実行の指示を受けると、前記副系処理にかえて前記第２の正系処理を実行する、
ことを特徴とする付記８に記載のデータベースシステム。
（付記１１）
前記第１のサーバに、
前記第１のサーバ−前記第２のサーバ間の通信に異常を検出して前記第１の抑止手段を実行すると、前記第１の正系処理を実行している正系運用状態から、動作を停止して前記調停手段からの指示を待つ正系待ち状態に移行し、前記調停手段に第１の問合せを行い、前記調停手段からの指示に応じて、前記第２のサーバで前記副系処理手段が実行されることなく前記第１の正系処理手段が動作している蓄積正系状態または停止状態に移行する処理と、
前記正系運用状態、前記正系待ち状態または前記蓄積正系運用状態を第１の状態情報として第１の状態情報記憶手段に記憶する処理と、
前記第１の状態情報を前記調停手段に通知する第１の通知処理と、
をさらに実行させ、
前記第２のサーバに、
前記第１のサーバ−前記第２のサーバ間の通信に異常を検出して前記第２の抑止手段を実行すると、前記副系処理手段が動作している副系運用状態から、停止して前記調停手段からの指示を待っている副系待ち状態に移行し、前記調停手段に第２の問合せを行い、前記調停手段からの指示に応じて、前記第２の正系処理手段が動作している昇格正系運用状態または停止状態に移行する処理と、
前記副系運用状態、前記副系待ち状態または前記昇格正系運用状態を第２の状態情報として第２の状態情報記憶手段に記憶する処理と、
前記第２の状態情報を前記調停手段に通知する第２の通知手段と、
をさらに実行させ、
前記調停手段に、
前記第１のサーバから通知される前記第１の状態情報と、前記第２のサーバから通知される前記第２の状態情報と、を第３の記憶手段に記憶する処理と、
前記第１の問合せまたは前記第２の問合せを受けると、前記第３の記憶手段に記憶されている前記第１のサーバまたは前記第２のサーバの状態に基づいて、前記第１のサーバおよび第２のサーバに対して指示を行なう処理と、
をさらに実行させる、
ことを特徴とする付記８に記載のデータベース制御方法。
（付記１２）
前記調停手段は、前記第１のサーバから前記第１の問合せを受けると、前記第３の記憶手段を参照し、
前記第２のサーバが前記副系運用状態のとき、前記第２のサーバに対して停止の指示をし、前記第１の状態情報を前記正系待ち状態に設定し、前記第１のサーバに対して前記蓄積正系状態への移行を指示し、
前記第２のサーバが前記副系待ち状態のとき、前記第２のサーバに対して停止の指示をし、前記第１のサーバに対して前記蓄積正系状態への移行を指示し、
前記第２のサーバが前記昇格正系運用状態のとき、前記第２のサーバに対して停止の指示をする、
ことを特徴とする付記８に記載のデータベース制御方法。
（付記１３）
前記調停手段は、前記第２のサーバから前記第２の問合せを受けると、前記第３の記憶手段を参照し、
前記第１のサーバが前記正系運用状態のとき、前記第１のサーバに対して停止の指示をし、前記第２の状態情報を前記副系待ち状態に設定し、前記第２のサーバに対して昇格正系指示状態への移行を指示し、
前記第１のサーバが前記正系待ち状態のとき、前記第２のサーバに対して停止の指示をし、前記第１のサーバに対して蓄積正系状態への移行を指示し、
前記第１のサーバが前記蓄積正系状態のとき、前記第２のサーバに対して停止の指示をする、
ことを特徴とする付記８に記載のデータベース制御方法。
（付記１４）
前記調停手段に、
前記第１のサーバが前記正系運用状態、かつ、前記第２のサーバが前記副系運用状態である通常状態を検出したときに通常状態捕捉情報に有効を設定し、
前記第１のサーバおよび前記第２のサーバに対して指示を行なったときに指示済情報に有効を設定し、
前記第１のサーバから前記第１の問合せを受けると、前記第２のサーバが前記副系待ち状態であって前記通常状態捕捉情報および前記指示済情報が有効のとき、前記第１のサーバに対して停止を指示し、
前記第２のサーバから前記第２の問合せを受けると、前記第１のサーバが前記正系待ち状態であって前記通常状態捕捉情報および前記指示済情報が有効のとき、前記第２のサーバに対して停止を指示する、
ことを特徴とする付記８に記載のデータベース制御方法。
（付記１５）
データを記憶する第１の記憶手段と、
上位装置からの指示にしたがって第１のデータを前記第１の記憶手段に記憶する第１の正系処理手段と、
前記第１のデータを記憶するように第１の指示を出力する第１の指示出力手段と、
前記第１の正系処理手段が前記第１のデータを前記第１の記憶手段に記憶することを抑止する第１の抑止手段と、
第１の問合せを行なう第１の問合せ手段と、
を備え、
データを記憶する第２の記憶手段と、前記第１の指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する副系処理手段と、前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理手段と、通信に異常を検出すると前記第１の指示の受付けを抑止する第２の抑止手段と、通信に異常を検出すると第２の問合せを行なう第２の問合せ手段と、を備え、指示に応じて前記第２の正系動作を行いまたは動作を停止する第２のサーバが前記副系処理手段を実行して前記第１のデータを前記第２の記憶手段に記憶すると、前記第１の正系処理手段を実行して前記第１のデータを前記第１の記憶手段に記憶し、
前記第２のサーバとの通信に異常を検出すると、前記第１の抑止手段を実行し、
前記第１の問合せを受けると、前記第２のサーバに対して処理停止を指示するとともに前記第１の正系処理手段の実行を指示し、前記第２のサーバから前記第２の問合せを受けると、処理停止を指示するとともに前記第２のサーバに対して前記第２の正系処理手段の実行を指示する調停手段に前記第１の問合せを行い、前記調停手段からの指示に応じて、前記第１の正系動作を行いまたは動作を停止する、
ことを特徴とするデータベース装置。
（付記１６）
データを記憶する第２の記憶手段と、
データを記憶する第１の記憶手段と、上位装置からの指示にしたがって第１のデータを前記第１の記憶手段に記憶する第１の正系処理手段と、前記第１の正系処理手段が前記第１のデータを前記第１の記憶手段に記憶することを抑止する第１の抑止手段と、第１の問合せを行なう第１の問合せ手段と、を備え、前記第１のデータが前記第２の記憶手段に記憶されると前記第１のデータを前記第１の記憶手段に記憶し、通信に異常を検出すると前記第１の抑止手段を実行し前記第１の問合せを行い、指示に応じて前記第１の正系動作を行いまたは動作を停止する第１のサーバからの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する副系処理手段と、
前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理手段と、
前記第１のサーバからの要求の受付けを抑止する第２の抑止手段と、
第２の問合せを行なう第２の問合せ手段と、
を備え、
前記第１のサーバとの通信に異常を検出すると、前記第２の抑止手段を実行し、
前記第１のサーバから前記第１の問合せを受けると、処理の停止を指示するとともに前記第１のサーバに対して前記第１の正系処理手段の実行を指示し、前記第２の問合せを受けると、前記第１のサーバに対して処理停止を指示するとともに前記第２の正系処理手段の実行を指示する調停手段に前記第２の問合せを行い、前記調停手段からの指示に応じて、前記第２の正系動作を行いまたは動作を停止する、
ことを特徴とするデータベース装置。
（付記１７）
データを記憶する第１の記憶手段と、上位装置からの指示にしたがって第１のデータを前記第１の記憶手段に記憶する第１の正系処理手段と、前記第１の正系処理手段が前記第１のデータを前記第１の記憶手段に記憶することを抑止する第１の抑止手段と、第１の問合せを行なう第１の問合せ手段と、を備え、前記第１のデータが通信可能に接続する第２のサーバが有する第２の記憶手段に記憶されると前記第１のデータを前記第１の記憶手段に記憶し、前記第２のサーバとの通信に異常を検出すると、前記第１の抑止手段を実行し前記第１の問合せを行い、指示に応じて、前記第１の正系動作を行いまたは動作を停止する第１のサーバから、前記第１の問合せを受けると、前記第２のサーバに対して処理停止を指示するとともに前記第１のサーバに対して前記第１の正系処理手段の実行を指示し、
データを記憶する第２の記憶手段と、前記第１のサーバからの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する副系処理手段と、前記上位装置からの指示にしたがって前記第１のデータを前記第２の記憶手段に記憶する第２の正系処理手段と、前記第１のサーバからの要求の受付けを抑止する第２の抑止手段と、第２の問合せを行なう第２の問合せ手段と、を備え、通信可能に接続する前記第１のサーバとの通信に異常を検出すると、前記第２の抑止手段を実行し前記第２の問合せを行い、指示に応じて、前記第２の正系動作を行いまたは動作を停止する前記第２のサーバから、前記第２の問合せを受けると、前記第１のサーバに対して処理停止を指示するとともに前記第２のサーバに対して前記第２の正系処理手段の実行を指示する、
ことを特徴とする調停装置。
【符号の説明】
【０２９７】
２００      データベースシステム
２１０      第１のサーバ
２１１      第１の記憶手段
２１２      第１の正系処理手段
２１３      第１の抑止手段
２１４      第１の問合せ手段
２２０      第２のサーバ
２２１      第２の記憶手段
２２２      副系処理手段
２２３      第２の抑止手段
２２４      第２の問合せ手段
２２５      第２の正系処理手段
２３０      調停手段
３００      テータベースシステム
３１０      第１のＤＢサーバ
３１１      ＤＢ記憶装置
３１２      更新抑止フラグ
３１３      受信拒否フラグ
３２０      第２のＤＢサーバ
３２１      ＤＢ記憶装置
３２２      更新抑止フラグ
３２３      受信拒否フラグ
３３０      調停装置
【図１】
0005589393.tif 000002
【図２】
0005589393.tif 000003
【図３】
0005589393.tif 000004
【図４】
0005589393.tif 000005
【図５】
0005589393.tif 000006
【図６】
0005589393.tif 000007
【図７】
0005589393.tif 000008
【図８】
0005589393.tif 000009
【図９】
0005589393.tif 000010
【図１０】
0005589393.tif 000011
【図１１】
0005589393.tif 000012
【図１２】
0005589393.tif 000013
【図１３】
0005589393.tif 000014
【図１４】
0005589393.tif 000015
【図１５】
0005589393.tif 000016
【図１６】
0005589393.tif 000017
【図１７】
0005589393.tif 000018
【図１８】
0005589393.tif 000019
【図１９】
0005589393.tif 000020
【図２０】
0005589393.tif 000021
【図２１】
0005589393.tif 000022
【図２２】
0005589393.tif 000023
【図２３】
0005589393.tif 000024
【図２４】
0005589393.tif 000025
【図２５】
0005589393.tif 000026
【図２６】
0005589393.tif 000027
【図２７】
0005589393.tif 000028
【図２８】
0005589393.tif 000029
【図２９】
0005589393.tif 000030
【図３０】
0005589393.tif 000031
【図３１】
0005589393.tif 000032
【図３２】
0005589393.tif 000033