(57)【要約】【課題】２重化されたＤＢの一方を切り離してバックアップをとる場合に、バックアップのデータが、切り離されない他方のＤＢのデータと整合がとれているようにする。【解決手段】トランザクション監視部１０１が、バックアップ開始要求を入力した際に、トランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、バックアップ開始要求の出力を保留し、トランザクションがなくなったときにバックアップ開始要求を出力する。トランザクション監視部１０１は、バックアップ開始要求を入力してからＤＢ同期管理部１０２にバックアップ開始要求を出力するまでの間に発生したトランザクション内の更新要求をトランザクション一時蓄積部１０５に蓄積させる。ＤＢ同期管理部１０２は、トランザクション監視部１０１からバックアップ開始要求を入力した際に、バックアップ対象のデータベースを切り離す。【選択図】図１
2012068693.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースを管理するデータベース管理装置であって、
前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力した際に、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視部と、
前記トランザクション監視部により前記分離指示が出力された場合に、前記分離対象データベースの分離を行う分離処理部とを有することを特徴とするデータベース管理装置。
【請求項２】
前記データベース管理装置は、
それぞれが同じデータを記憶する複数のデータベースを管理し、
前記データベース管理装置は、更に、
データ内容の更新を要求するデータベース更新要求を蓄積する更新要求蓄積部を有し、
前記トランザクション監視部は、
前記分離要求を入力してから前記分離処理部に前記分離指示を出力するまでの間に発生したトランザクション内のデータベース更新要求を前記更新要求蓄積部に蓄積させることを特徴とする請求項１に記載のデータベース管理装置。
【請求項３】
前記データベース管理装置は、更に、
データベース更新要求を前記複数のデータベースの各々に出力する更新要求管理部を有し、
前記トランザクション監視部は、
前記分離指示を出力する際に前記更新要求蓄積部にデータベース更新要求が蓄積されている場合に、前記分離処理部に前記分離指示を出力するとともに、前記更新要求蓄積部に蓄積されているデータベース更新要求を前記更新要求管理部に出力することを特徴とする請求項２に記載のデータベース管理装置。
【請求項４】
前記データベース管理装置は、更に、
前記分離対象データベースに対して出力されたデータベース更新要求を蓄積する分離対象データベース蓄積部と、
前記分離処理部により前記分離対象データベースの分離処理が開始されてから前記分離対象データベースの結合処理が開始されるまでの間に前記分離対象データベースに対して出力されたデータベース更新要求を前記分離対象データベース蓄積部に蓄積させる分離対象データベース管理部とを有することを特徴とする請求項３に記載のデータベース管理装置。
【請求項５】
前記分離対象データベース管理部は、
前記分離対象データベースの結合処理が開始された際に前記分離対象データベース蓄積部にデータベース更新要求が蓄積されている場合に、前記分離対象データベース蓄積部に蓄積されているデータベース更新要求に基づいて前記分離対象データベースのデータ内容の更新を行うことを特徴とする請求項４に記載のデータベース管理装置。
【請求項６】
前記分離対象データベース蓄積部は、
前記分離対象データベース以外のデータベースでの更新結果が示される更新ジャーナルを蓄積し、
前記分離対象データベース管理部は、
前記分離対象データベースの結合処理が開始された際に前記分離対象データベース蓄積部に更新ジャーナルが蓄積されている場合に、前記分離対象データベース蓄積部に蓄積されている更新ジャーナルに基づいて前記分離対象データベースのデータ内容の更新を行うことを特徴とする請求項４又は５に記載のデータベース管理装置。
【請求項７】
前記データベース管理装置は、
それぞれが複数のサブグループのうちのいずれかに分類され、同じサブグループに分類されているデータベース間では同じデータを記憶する複数のデータベースを管理し、
前記トランザクション監視部は、
特定のサブグループに分類されている特定のデータベースの分離を要求する分離要求を入力した際に、前記複数のデータベースにおける分離対象サブグループに対するトランザクションの処理状況を監視し、分離対象サブグループに対して処理中のトランザクションが存在していれば分離対象サブグループに対する処理中のトランザクションがなくなるまで、分離対象サブグループに分類されている分離対象データベースの分離を指示する分離指示の出力を保留し、分離対象サブグループに対する処理中のトランザクションがなくなったときに前記分離指示を出力し、
前記分離処理部は、
前記トランザクション監視部により前記分離指示が出力された場合に、前記分離対象データベースの分離を行うことを特徴とする請求項１〜６のいずれかに記載のデータベース管理装置。
【請求項８】
前記データベース管理装置は、更に、
データ内容の更新を要求するデータベース更新要求を蓄積する更新要求蓄積部を有し、
前記トランザクション監視部は、
前記分離要求を入力してから前記分離処理部に前記分離指示を出力するまでの間に発生したトランザクション内の前記分離対象サブグループに対するデータベース更新要求を前記更新要求蓄積部に蓄積させることを特徴とする請求項７に記載のデータベース管理装置。
【請求項９】
前記トランザクション監視部は、
データのバックアップのためにバックアップの対象となるデータベースの分離を要求する分離要求を入力することを特徴とする請求項１〜８のいずれかに記載のデータベース管理装置。
【請求項１０】
前記トランザクション監視部は、
所定時間が経過しても処理中のトランザクションが存在している場合は、前記分離指示を出力せずに、前記更新要求蓄積部に蓄積されているデータベース更新要求を前記更新要求管理部に出力することを特徴とする請求項３〜５のいずれかに記載のデータベース管理装置。
【請求項１１】
複数のデータベースを管理するコンピュータが行うデータベース管理方法であって、
前記コンピュータが、前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力する分離要求入力ステップと、
前記分離要求入力ステップにより分離要求が入力された際に、前記コンピュータが、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視ステップと、
前記トランザクション監視ステップにより前記分離指示が出力された場合に、前記コンピュータが、前記分離対象データベースの分離を行う分離処理ステップとを有することを特徴とするデータベース管理方法。
【請求項１２】
複数のデータベースを管理するコンピュータに、
前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力する分離要求入力ステップと、
前記分離要求入力ステップにより分離要求が入力された際に、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視ステップと、
前記トランザクション監視ステップにより前記分離指示が出力された場合に、前記分離対象データベースの分離を行う分離処理ステップとを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長構成のデータベースにおけるバックアップ取得技術に関する。
【背景技術】
【０００２】
２４時間稼動する情報システムの従来のバックアップの取得方式として、データベースを２重化し、２重化したデータベースのうちの１つを切り離し、切り離したデータベースのバックアップを採取する方式が提案されている（特許文献１、特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−１６０５６３号公報
【特許文献２】特開平２−２１１５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のバックアップ方式は、２重化されたデータベースの一方を切り離してバックアップを採取する際に、データの更新処理の完了（トランザクションの完了）を意識しないでデータベースを切り離すため、採取したバックアップのデータがデータベースの利用者から見て、整合性がとれた状態であることが保障されないという課題がある。
例えば、データベースの移行やテスト目的などのためにある時点のデータベースのバックアップを取得した場合に、バックアップされたデータがある処理の途中（トランザクションの途中）まで更新された状態となっている場合があり、切り離されていない他方のデータベースのデータ内容と整合がとれていない可能性がある。
このようにデータ内容に不整合が生じている可能性がある場合には、リストア先でデータを再利用することができない。
【０００５】
この発明は上記のような課題を解決するためになされたもので、一連のデータベースの更新処理（トランザクション）が完了し、データの整合性がとれている状態でデータベースのバックアップを取得可能とすることを目的とする。
つまり、本発明は、冗長構成のデータベースの１つを切り離してバックアップをとる場合に、バックアップのデータが、切り離されない他のデータベースのデータと整合がとれているようにすることを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るデータベース管理装置は、
複数のデータベースを管理するデータベース管理装置であって、
前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力した際に、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視部と、
前記トランザクション監視部により前記分離指示が出力された場合に、前記分離対象データベースの分離を行う分離処理部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、処理中のトランザクションが存在しないタイミングでデータベースの分離が行われるので、データの整合性がとれている状態でデータベースのバックアップを行うことができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るデータベース管理装置の構成例を示す図。
【図２】実施の形態１に係るデータベース管理装置の動作の詳細を示すフローチャート図。
【図３】実施の形態１に係るデータベース管理装置の動作の詳細を示すフローチャート図。
【図４】実施の形態１に係るＤＢ分離処理の詳細を示すフローチャート図。
【図５】実施の形態１に係るＤＢ結合処理の詳細を示すフローチャート図。
【図６】実施の形態１に係るＤＢ更新処理の詳細を示すフローチャート図。
【図７】実施の形態１に係るトランザクション完了管理テーブルの例を示す図。
【図８】実施の形態１に係る監視対象トランザクションテーブルの例を示す図。
【図９】実施の形態１に係るＤＢ同期状態管理テーブルの例を示す図。
【図１０】実施の形態１に係るデータベース管理装置の動作の概要を示すフローチャート図。
【図１１】実施の形態２に係るデータベース管理装置の構成例を示す図。
【図１２】実施の形態２に係るトランザクション完了管理テーブルの例を示す図。
【図１３】実施の形態２に係るＤＢ同期状態管理テーブルの例を示す図。
【図１４】実施の形態２に係るデータベース管理装置の動作の詳細を示すフローチャート図。
【図１５】実施の形態２に係るＤＢ分離処理の詳細を示すフローチャート図ート図。
【図１６】実施の形態２に係るＤＢ結合処理の詳細を示すフローチャート図。
【図１７】実施の形態２に係るＤＢ更新処理の詳細を示すフローチャート図。
【図１８】実施の形態２に係るデータベース管理装置の動作の概要を示すフローチャート図。
【図１９】実施の形態１〜４に係るデータベース管理装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
本実施の形態では、例えば２４時間稼動する情報システムにおいて、一連のデータベースの更新処理が完了し、データの整合性がとれている状態でデータベースのバックアップを取得可能とするデータベースバックアップ方式を説明する。
【００１０】
図１は、本実施の形態に係るデータベース管理装置１００とデータベースシステム２００の構成例を示す。
【００１１】
図１に示すように、データベース管理装置１００は、データベースシステム２００に接続され、データベースシステム２００を管理する。
データベースシステム２００には、一例としてシステムＡ用ＤＢ（プライマリ）２０１、システムＢ用ＤＢ（プライマリ）２０２、システムＡ用ＤＢ（セカンダリ）２０３、システムＢ用ＤＢ（セカンダリ）２０４が配置されている。
システムＡとシステムＢは互いに連動しており、例えば、システムＡが商品の出入庫管理システムであり、システムＢが商品の在庫管理システムである。
システムＡ用のデータベース（システムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３）は、１つのトランザクションにより商品の出入庫履歴を更新し、システムＢ用のデータベース（システムＢ用ＤＢ（プライマリ）２０２とシステムＢ用ＤＢ（セカンダリ）２０４）は、同じトランザクションにより商品の在庫量を更新する。
そして、システムＡ用ＤＢ（プライマリ）２０１はシステムＡ用のデータを記憶する主系のデータベースであり、システムＢ用ＤＢ（プライマリ）２０２はシステムＢ用のデータを記憶する主系のデータベースである。
また、システムＡ用ＤＢ（セカンダリ）２０３はシステムＡ用のデータを記憶する予備系のデータベースであり、システムＢ用ＤＢ（セカンダリ）２０４はシステムＢ用のデータを記憶する予備系のデータベースである。
原則としてシステムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３はデータ内容が一致しており、原則としてシステムＢ用ＤＢ（プライマリ）２０２とシステムＢ用ＤＢ（セカンダリ）２０４はデータ内容が一致している。
なお、プライマリデータベースとセカンダリデータベースを別のサーバ（別のコンピュータ）としてもよい。
【００１２】
データベース管理装置１００において、トランザクション監視部１０１は、データベースを操作するトランザクションの処理中／完了の状態を監視する機能である。
なお、トランザクション監視部１０１が実行する処理が、分離要求入力ステップ及びトランザクション監視ステップに相当する。
【００１３】
ＤＢ同期管理部１０２は、後述のプライマリＤＢ更新部１０３、セカンダリＤＢ更新部１０４のデータ同期状態／非同期状態の監視、プライマリＤＢ更新部１０３、セカンダリＤＢ更新部１０４の分離、結合を制御する機能である。
ＤＢ同期管理部１０２は、分離処理部及び更新要求管理部の例である。
また、ＤＢ同期管理部１０２が実行する処理が分離処理ステップに相当する。
【００１４】
プライマリＤＢ更新部１０３はデータベースシステム２００内のシステムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２の更新処理を行う機能である。
【００１５】
セカンダリＤＢ更新部１０４は、プライマリＤＢ更新部１０３が更新するデータベースと同じデータベースを更新し、バックアップ採取時はデータの更新処理を停止し、バックアップ採取後に当該データベースの更新を行う機能である。
本実施の形態では、システムＡ用ＤＢ（セカンダリ）２０３及びシステムＢ用ＤＢ（セカンダリ）２０４がバックアップの対象であり、分離の対象であるため、セカンダリＤＢ更新部１０４は分離対象データベース管理部の例に相当する。
なお、システムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２がバックアップの対象であり、分離の対象である場合は、プライマリＤＢ更新部１０３が分離対象データベース管理部の例に相当する。
【００１６】
トランザクション一時蓄積部１０５は、データベースの切り離し処理をしている間、または、バックアップ要求を受け付けてトランザクションの完了を待つ間に発生したトランザクションを一時蓄積するための保管領域である。
トランザクション一時蓄積部１０５は、更新要求蓄積部の例である。
【００１７】
セカンダリデータベース更新要求蓄積部１０６は、バックアップのためにセカンダリＤＢ更新部１０４が更新処理を停止している間に発生したデータベース更新要求（以下、単に更新要求ともいう）を蓄積しておく保管領域である。
セカンダリデータベース更新要求蓄積部１０６は、分離対象データベース蓄積部の例である。
なお、システムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２がバックアップの対象であり、分離の対象である場合は、プライマリＤＢ更新部１０３に対して、セカンダリデータベース更新要求蓄積部１０６と同様の機能が設けられ、当該機能が分離対象データベース蓄積部の例に相当することになる。
【００１８】
テーブル記憶部１０７は、後述のトランザクション完了管理テーブル１０８等の各種テーブルを記憶する記憶領域である。
なお、図１では、トランザクション完了管理テーブル１０８等は、テーブル記憶部１０７から読み出されて、トランザクション監視部１０１等により利用可能な状態になっていることを示している。
【００１９】
トランザクション完了管理テーブル１０８は、現在処理中のトランザクション数を管理するための情報である。
【００２０】
監視対象トランザクションテーブルは、１つのトランザクションに含まれる更新要求のうち、トランザクション監視部１０１が監視すべき更新要求が示されている情報である。
【００２１】
ＤＢ同期状態管理テーブル１１０は、ＤＢ同期管理部１０２が管理するデータ同期状態／非同期状態を記憶する保管領域である。
【００２２】
ここで、トランザクションについて説明する。
１つのトランザクションは、複数のデータベース更新要求で構成される。
１つトランザクションには、トランザクションの開始を示す（データベースの更新開始を示す）更新要求（以下、ＳＴＡＲＴと呼ぶ）とトランザクションの完了を示す（データベースの更新完了を示す）更新要求（以下、ＣＯＭＭＩＴと呼ぶ）があり、ＳＴＡＲＴとＣＯＭＭＩＴの間に、具体的な更新処理の内容（更新対象の商品コード、数量等）を示す更新要求が発行される。
トランザクションにおける各更新要求は、トランザクション監視部１０１が入力する。
【００２３】
また、トランザクション監視部１０１は、バックアップ開始要求とバックアップ終了通知も入力する。
トランザクション監視部１０１は、トランザクション、バックアップ開始要求及びバックアップ終了通知を、例えば、データベース管理装置１００のオペレータ又はデータベース管理装置１００を利用するアプリケーションプログラムから入力する。
バックアップ開始要求は、データベースシステム２００内の所定のデータベースのバックアップの開始を通知するメッセージである。
データベース管理装置１００は、バックアップ開始要求を入力した際には、対象となるデータベースを分離すための処理を行う。
このように、バックアップ開始要求をトリガーにしてデータベースの分離が開始されるため、バックアップ開始要求は特定のデータベースの分離を要求する分離要求として捉えることができる。
バックアップ終了通知は、バックアップの対象となっていたデータベースのバックアップが完了したことを通知するメッセージである。
データベース管理装置１００は、バックアップ終了通知を入力した際には、対象となるデータベースを復旧させるための処理を行う。
本実施の形態では、バックアップ開始要求が入力された際には、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４がともにバックアップの対象となり、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４がともに切り離しの対象となることとする。
システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４は、分離対象データベースの例である。
同様に、バックアップ終了通知が入力された際には、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４のバックアップがともに完了しており、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４がともに復旧の対象となることとする。
【００２４】
次に、トランザクション完了管理テーブル１０８の例を図７に示す。
図７に示すように、トランザクション完了管理テーブル１０８は、処理カウンタを有する。
処理カウンタは、初期値は０であり、トランザクション監視部１０１により値がインクリメント又はデクリメントされるカウンタである。
トランザクション監視部１０１がＳＴＡＲＴの更新要求を入力した場合には処理カウンタの値がインクリメントされ、トランザクション監視部１０１がＣＯＭＭＩＴの更新要求を入力した場合には処理カウンタの値がデクリメントされる。
【００２５】
次に、監視対象トランザクションテーブル１０９の例を図８に示す。
図８に示すように、監視対象トランザクションテーブル１０９は、監視対象ＩＤと属性の項目を有する。
監視対象ＩＤは、１つのトランザクションに含まれる更新要求のうちトランザクション完了管理テーブル１０８が監視すべき更新要求が示される。
具体的には、トランザクション完了管理テーブル１０８はＳＴＡＲＴとＣＯＭＭＩＴの２つの更新要求を監視対象とし、前述したように、ＳＴＡＲＴを入力した際にはトランザクション完了管理テーブル１０８の処理カウンタの値をインクリメントし、ＣＯＭＭＴを入力した際にはトランザクション完了管理テーブル１０８の処理カウンタの値をデクリメントする。
なお、属性の欄は必須ではなく、省略していもよい。
【００２６】
次に、ＤＢ同期状態管理テーブル１１０の例を図９に示す。
図９（ａ）に示すように、ＤＢ同期状態管理テーブル１１０は、データベースの状態を示す。
図９（ｂ）に示すように、ＤＢ同期状態管理テーブル１１０の状態は、同期→分離中→分離→同期中→同期という順序で遷移する。
「同期」とは、バックアップ開始要求が入力される前の状態、または、バックアップ終了通知が入力されてバックアップ対象のデータベース（システムＡ用ＤＢ（セカンダリ）２０３、システムＢ用ＤＢ（セカンダリ）２０４）の更新が行われた後の状態である。
ＤＢ同期状態管理テーブル１１０の状態が「同期」となっているときは、システムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３の更新が同時に行われ、システムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３の内容が完全に一致しており、またシステムＢ用ＤＢ（プライマリ）２０２とシステムＢ用ＤＢ（セカンダリ）２０４の更新が同時に行われ、システムＢ用ＤＢ（プライマリ）２０２とシステムＢ用ＤＢ（セカンダリ）２０４の内容が完全に一致している状態である。
「分離中」とは、バックアップ開始要求が入力された後であって、未処理のトランザクションが残っているためシステムＡ用ＤＢ（セカンダリ）２０３、システムＢ用ＤＢ（セカンダリ）２０４の切り離しが完了していない状態である。
「分離」とは、バックアップ開始要求が入力された後であって、未処理のトランザクションがなくシステムＡ用ＤＢ（セカンダリ）２０３、システムＢ用ＤＢ（セカンダリ）２０４の切り離しが可能な状態又は切り離された後の状態である。
ＤＢ同期状態管理テーブル１１０の状態が「分離」となっているときに、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４のバックアップが行われる。
なお、分離という語と切り離しという語は同義である。
「同期中」とは、バックアップ終了通知が入力された後に、分離されていたシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の結合処理を行っていることを示しており、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４が切り離されている際に入力された更新要求をシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４に反映させる更新が実施中であることを示す。
【００２７】
次に、本実施の形態に係るデータベース管理装置１００の動作の概要をトランザクション監視部１０１の動作を中心にして説明する。
ここでは、図１０のフローチャートを参照して説明する。
【００２８】
トランザクション監視部１０１がバックアップ開始要求（分離要求）を入力すると、ＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の状態を「同期」から「分離中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の状態を「同期」から「分離中」に変更する（Ｓ１００１）。
トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
【００２９】
次に、トランザクション監視部１０１はトランザクション完了管理テーブル１０８の処理カウンタの値が０であるかどうかを確認する（Ｓ１００２）。
処理カウンタの値が０の場合（Ｓ１００２でＹＥＳ）は、トランザクション監視部１０１は、バックアップ開始要求をＤＢ同期管理部１０２に出力してシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の分離を指示する（Ｓ１００７）。
一方、処理カウンタの値が０でない場合（Ｓ１００２でＮＯ）、すなわち、処理が完了していないトランザクション（ＣＯＭＭＩＴが入力されていないトランザクション）が存在している場合は、処理が完了していないトランザクションの完了を待つ。
より具体的には、トランザクション監視部１０１は、ＣＯＭＭＩＴが入力される度に（Ｓ１００３でＹＥＳ）、トランザクション完了管理テーブル１０８の処理カウンタの値をデクリメントし（Ｓ１００４）、ＳＴＡＲＴが入力される度に（Ｓ１００５でＹＥＳ）、ＳＴＡＲＴ及びＳＴＡＲＴに後続する更新要求をトランザクション一時蓄積部１０５に蓄積させて（Ｓ１００６）、処理カウンタの値が０になる（処理が完了していないトランザクションがなくなる）のを待つ。
バックアップ開始要求が入力される前は、トランザクション監視部１０１はＳＴＡＲＴが入力されると処理カウンタの値をインクリメントするとともに更新要求をＤＢ同期管理部１０２に出力するが、バックアップ開始要求が入力された（Ｓ１００１）後は、ＳＴＡＲＴが入力されても処理カウンタの値はインクリメントせずに更新要求をトランザクション一時蓄積部１０５に蓄積する。
このため、処理カウンタの値はＣＯＭＭＩＴの入力とともに減少していく。
トランザクション完了管理テーブル１０８の処理カウンタの値が０になれば（Ｓ１００２でＹＥＳ）、トランザクション監視部１０１は、バックアップ開始要求をＤＢ同期管理部１０２に出力してシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の分離を指示する（Ｓ１００７）。
【００３０】
このように、トランザクション監視部１０１は、バックアップ開始要求を入力した際に、データベースシステム２００におけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなる（処理カウンタの値が０になる）まで、バックアップ開始要求の出力を保留し、処理中のトランザクションがなくなったときに、バックアップ開始要求を出力する。
また、トランザクション監視部１０１は、バックアップ開始要求を入力してからＤＢ同期管理部１０２にバックアップ開始要求を出力するまでの間に発生したトランザクション内の更新要求をトランザクション一時蓄積部１０５に蓄積させる。
なお、トランザクション監視部１０１は、監視対象トランザクションテーブル１０９を参照して、Ｓ１００３においてＣＯＭＭＩＴの入力を監視し、Ｓ１００５においてＳＴＡＲＴの入力を監視する。
【００３１】
前述したように、トランザクション監視部１０１は、処理カウンタの値が０の場合に（Ｓ１００２でＹＥＳ）、バックアップ開始要求をＤＢ同期管理部１０２に出力してシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の分離を指示し、ＤＢ同期管理部１０２がバックアップ開始要求を入力し、ＤＢ同期状態管理テーブル１１０の状態を「分離中」から「分離」に変更する（Ｓ１００７）。
ＤＢ同期状態管理テーブル１１０の状態が「分離」になると、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４がシステムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２から切り離され、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４に対する更新はできなくなる。
一方で、システムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２は通常の状態で稼働しており、更新が可能である。
トランザクション監視部１０１は、バックアップ開始要求をＤＢ同期管理部１０２に出力した際にトランザクション一時蓄積部１０５に更新要求が蓄積されている場合（Ｓ１００８でＹＥＳ）は、トランザクション一時蓄積部１０５に蓄積されている更新要求をＤＢ同期管理部１０２に出力する（Ｓ１００９）。
【００３２】
ＤＢ同期管理部１０２では、トランザクション監視部１０１から入力した更新要求をプライマリＤＢ更新部１０３とセカンダリＤＢ更新部１０４に出力し、プライマリＤＢ更新部１０３はＤＢ同期管理部１０２から入力した更新要求に従ってシステムＡ用ＤＢ（プライマリ）２０１とシステムＢ用ＤＢ（プライマリ）２０２の更新を行う。
一方、セカンダリＤＢ更新部１０４では、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４が切り離されているため、ＤＢ同期管理部１０２から入力した更新要求はセカンダリデータベース更新要求蓄積部１０６に蓄積する。
また、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４が切り離されている間にトランザクション監視部１０１が入力した更新要求は、トランザクション監視部１０１からＤＢ同期管理部１０２を経由してプライマリＤＢ更新部１０３とセカンダリＤＢ更新部１０４に出力される。
つまり、Ｓ１００７以降にトランザクション監視部１０１が入力したＳＴＡＲＴに対しては、Ｓ１００６とは異なり、トランザクション完了管理テーブル１０８の処理カウンタの値がインクリメントされ、ＳＴＡＲＴ及びＳＴＡＲＴに後続する更新要求がＤＢ同期管理部１０２に出力され、プライマリＤＢ更新部１０３及びセカンダリＤＢ更新部１０４に出力される。
プライマリＤＢ更新部１０３は、更新要求に従ってシステムＡ用ＤＢ（プライマリ）２０１とシステムＢ用ＤＢ（プライマリ）２０２の更新を行い、セカンダリＤＢ更新部１０４は、入力した更新要求をセカンダリデータベース更新要求蓄積部１０６に蓄積させる。
つまり、セカンダリＤＢ更新部１０４は、Ｓ１００６においてトランザクション一時蓄積部１０５に蓄積され、トランザクション監視部１０１により出力された（Ｓ１００９）更新要求をセカンダリデータベース更新要求蓄積部１０６に蓄積させる。
更に、セカンダリＤＢ更新部１０４は、ＤＢ同期管理部１０２によりシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の分離処理が開始されてから後述するシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の結合処理が開始されるまでの間（Ｓ１００７とＳ１０１０の間）にトランザクション監視部１０１が入力し、トランザクション監視部１０１が出力したシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４に対する更新要求をセカンダリデータベース更新要求蓄積部１０６に蓄積させる。
【００３３】
その後、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４のバックアップが終了すると、バックアップの終了を通知するバックアップ終了通知をトランザクション監視部１０１が入力する（Ｓ１０１０）。
バックアップ終了通知が入力されると、トランザクション監視部１０１はＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の状態を「分離」から「同期中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の状態を「分離」から「同期中」に変更する（Ｓ１０１０）。
トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
ＤＢ同期状態管理テーブル１１０の状態が「同期中」になるとセカンダリＤＢ更新部１０４によるシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の結合処理が開始される。
つまり、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の更新が可能になるので、セカンダリＤＢ更新部１０４はセカンダリデータベース更新要求蓄積部１０６に蓄積されている更新要求に基づいてシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４のデータ内容の更新を行い、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４のデータ内容の更新が完了するとＤＢ更新完了通知を出力する。
セカンダリＤＢ更新部１０４から出力されたＤＢ更新完了通知はＤＢ同期管理部１０２を介してトランザクション監視部１０１に到達し、トランザクション監視部１０１がＤＢ更新完了通知を入力する（Ｓ１０１１）。
トランザクション監視部１０１はＤＢ更新完了通知を入力すると、ＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の状態を「同期中」から「同期」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の状態を「同期中」から「同期」に変更する（Ｓ１０１１）。
ＤＢ同期状態管理テーブル１１０の状態が「同期」になると、システムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３、システムＢ用ＤＢ（プライマリ）２０２とシステムＢ用ＤＢ（セカンダリ）２０４はデータ内容が一致しており、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４は通常状態で稼働する。
【００３４】
次に、本実施の形態に係るデータベース管理装置１００の動作の詳細を説明する。
ここでは、図２〜図６のフローチャートを参照して説明する。
【００３５】
トランザクション監視部１０１が、データベースへの更新要求、バックアップ開始要求、バックアップ終了通知のいずれかの入力待ち状態（図２のＳ１０１）において、データベースの更新要求を入力すると（図２のＳ１０２でＮＯ、図２のＳ１０５でＮＯ、図３のＳ１０７でＹＥＳ）、トランザクション監視部１０１は、ＤＢ同期管理部１０２を介してＤＢ同期状態管理テーブル１１０の状態が「分離中」であるかを確認する（図３のＳ１０８）。
ＤＢ同期状態管理テーブル１１０の状態が「分離中」でない場合（Ｓ１０８でＮＯ）は、トランザクション監視部１０１は、Ｓ１０７で入力した更新要求の種類を判別する（図３のＳ１０９）。
Ｓ１０７で入力した更新要求がＳＴＡＲＴ（監視対象トランザクションテーブル１０９に登録されている更新要求）であれば、トランザクション監視部１０１はトランザクション完了管理テーブル１０８の処理カウンタの値を１インクリメントする（図３のＳ１１０）。
Ｓ１０７で入力した更新要求がＣＯＭＭＩＴ（監視対象トランザクションテーブル１０９に登録されている更新要求）であれば、トランザクション監視部１０１はトランザクション完了管理テーブル１０８の処理カウンタの値を１デクリメントする（図３のＳ１１２）。
Ｓ１１２でデクリメントされた後は、処理がＳ１０１に戻る。
Ｓ１１０で処理カウンタがインクリメントされた場合、またはＳ１０９で判別した結果がＳＴＡＲＴでもＣＯＭＭＩＴでもない場合、ＤＢ更新処理（図３のＳ１１１）が実施される。
ＤＢ更新処理の後、処理がＳ１０１に戻る。
【００３６】
ＤＢ更新処理（Ｓ１１１）の詳細は、図６に示す通りである。
更新要求がトランザクション監視部１０１からＤＢ同期管理部１０２を介してプライマリＤＢ更新部１０３及びセカンダリＤＢ更新部１０４に出力され、プライマリＤＢ更新部１０３によりプライマリデータベース（システムＡ用ＤＢ（プライマリ）２０１とシステムＢ用ＤＢ（プライマリ）２０２）は更新要求に従って更新処理される（Ｓ４０１）。
また、セカンダリＤＢ更新部１０４は、ＤＢ同期状態管理テーブル１１０の状態が「同期」であるかどうかを確認し（Ｓ４０２）、この時点では、ＤＢ同期状態管理テーブル１１０の状態は「同期」であるため（Ｓ４０２でＹＥＳ）、セカンダリＤＢ更新部１０４はセカンダリデータベース（システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）を更新要求に従って更新処理する（Ｓ４０３）。
このように、プライマリＤＢ更新部１０３は、ＤＢ同期状態管理テーブル１１０の状態に関わらずデータベースの更新要求を受け付けるとプライマリデータベースの更新処理を行う。
一方、セカンダリＤＢ更新部１０４は、ＤＢ同期状態管理テーブル１１０を参照し、「同期」状態であれば要求された更新処理を即時実行する。
「同期」状態以外の場合は、セカンダリデータベースはバックアップのために切り離されている状態であると判断し、更新処理は実行せずに要求をセカンダリデータベース更新要求蓄積部１０６に蓄積し、更新完了を通知する。
【００３７】
図３のＳ１０８の判断においてＤＢ同期状態管理テーブル１１０の状態が「分離中」である場合（図３のＳ１０８でＹＥＳ）は、トランザクション監視部１０１はＳ１０７で入力した更新要求が新規なトランザクションのものかどうかを判断する（図３のＳ１１５）。
新規なトランザクションとは、ＤＢ同期状態管理テーブル１１０の状態が「分離中」になった後に開始したトランザクション（ＤＢ同期状態管理テーブル１１０の状態が「分離中」になった後にＳＴＡＲＴを入力したトランザクション）である。
新規なトランザクションの場合（図３のＳ１１５でＹＥＳ）は、トランザクション監視部１０１は、Ｓ１０７で入力した更新要求をトランザクション一時蓄積部１０５に蓄積させる（図３のＳ１１６）。
一方、新規なトランザクションでない場合（ＤＢ同期状態管理テーブル１１０の状態が「分離中」になる前にＳＴＡＲＴが入力されていたトランザクションの場合）は、Ｓ１０９に移行する。
なお、この場合は、Ｓ１０７で入力した更新要求は通常はＳＴＡＲＴではないので、Ｓ１０９の判定の結果、ＤＢ更新処理（Ｓ１１１）又はトランザクション完了管理テーブル１０８の処理カウンタのデクリメント（Ｓ１１２）が実施される。
ＤＢ更新処理（Ｓ１１１）の詳細は、前述したとおりである。
【００３８】
一方、図３のＳ１０７においてＮＯであった場合は、処理がＳ１０１に戻る。
なお、Ｓ１０７でＮＯであった場合に、不正な入力である場合は所定のエラー処理を行ってもよい。
また、バックアップ開始要求、バックアップ終了通知、更新要求以外の適正な入力である場合には、当該入力に対応する処理を行う。
【００３９】
トランザクション監視部１０１が、入力待ち状態（図２のＳ１０１）において、バックアップ開始要求を入力すると（図２のＳ１０２でＹＥＳ）、ＤＢ分離処理（Ｓ１０３）が実行され、更に、トランザクション一時蓄積部１０５に蓄積されている更新要求の各々に対してＤＢ更新処理（Ｓ１０４）が実行される。
【００４０】
ＤＢ分離処理（Ｓ１０３）の詳細は、図４に示す通りである。
まず、トランザクション監視部１０１がＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の状態を「同期」から「分離中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の状態を「同期」から「分離中」に変更する（Ｓ２０１）。
前述したように、トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
次に、トランザクション監視部１０１はトランザクション完了管理テーブル１０８の処理カウンタの値が０になるのを待つ（Ｓ１０２）。
処理カウンタの値が０になると処理中のトランザクションが存在しない状態となるので、トランザクション監視部１０１はバックアップ開始要求をＤＢ同期管理部１０２に出力してシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の分離を指示する（Ｓ２０３）。
ＤＢ同期管理部１０２はバックアップ開始要求を入力すると、ＤＢ同期状態管理テーブル１１０の状態を「分離中」から「分離」に変更する（Ｓ２０４）。
トランザクション監視部１０１は、バックアップ開始要求に対して、バックアップ可能となったことを回答する（Ｓ２０５）。
【００４１】
ＤＢ更新処理（Ｓ１０４）の詳細は、図６に示す通りである。
トランザクション一時蓄積部１０５に蓄積されている更新要求がトランザクション監視部１０１からＤＢ同期管理部１０２を介して、プライマリＤＢ更新部１０３及びセカンダリＤＢ更新部１０４に出力され、プライマリＤＢ更新部１０３によりプライマリデータベース（システムＡ用ＤＢ（プライマリ）２０１とシステムＢ用ＤＢ（プライマリ）２０２）は更新要求に従って更新処理される（Ｓ４０１）。
また、セカンダリＤＢ更新部１０４は、ＤＢ同期状態管理テーブル１１０の状態が「同期」であるかどうかを確認し（Ｓ４０２）、この時点では、ＤＢ同期状態管理テーブル１１０の状態が「分離」であるため（Ｓ４０２でＮＯ）、セカンダリＤＢ更新部１０４は、セカンダリデータベース（システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）についてはセカンダリデータベース更新要求蓄積部１０６に更新要求を蓄積し、セカンダリデータベースの更新処理が行われない。
これで、セカンダリデータベースは、トランザクションが完了し、データベースの整合性が保たれ、かつ、更新が発生しない状態となっているのでセカンダリデータベースからバックアップを取得することができる。
この結果、整合性がとれたデータをバックアップできる。
【００４２】
また、トランザクション監視部１０１が、入力待ち状態（図２のＳ１０１）において、バックアップ終了通知を入力すると（図２のＳ１０２でＮＯ、図２のＳ１０５でＹＥＳ）、ＤＢ結合処理（Ｓ１０６）が実行される。
ＤＢ結合処理の後、処理がＳ１０１に戻る。
【００４３】
ＤＢ結合処理（Ｓ１０６）の詳細は、図５に示す通りである。
トランザクション監視部１０１がＤＢ同期管理部１０２にデータベースの結合を要求し、また、ＤＢ同期状態管理テーブル１１０の状態を「分離」から「同期中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の状態を「分離」から「同期中」に変更する（Ｓ３０１）。
トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
また、ＤＢ同期管理部１０２はセカンダリＤＢ更新部１０４に対してデータベースの同期を要求する。
セカンダリＤＢ更新部１０４はセカンダリデータベース更新要求蓄積部１０６に蓄積されている更新要求がなくなるまで、更新要求ごとに、セカンダリデータベース（システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）のデータ内容の更新を行う（Ｓ３０２）。
そして、セカンダリデータベース（システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）のデータ内容の更新が完了すると、セカンダリＤＢ更新部１０４はＤＢ更新完了通知を出力する。
トランザクション監視部１０１がＤＢ更新完了通知を入力すると、ＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の状態を「同期中」から「同期」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の状態を「同期中」から「同期」に変更する（Ｓ３０３）。
これにより通常状態である「同期」状態に戻ることができる。
【００４４】
以上のように、データベースをプライマリとセカンダリに２重化し、トランザクション監視部１０１によりすべてのデータ更新処理の完了を監視し、処理中のトランザクションが存在しないタイミングでセカンダリデータベースを切り離すことでデータベースの整合性を確保したバックアップを実現することが可能となる。
また、監視対象トランザクションテーブルに監視対象とすべき更新処理（具体的には、ＳＴＡＲＴとＣＯＭＭＩＴ）を登録可能とすることで、バックアップに影響のないトランザクションを無視することが可能となり、バックアップ開始時のすべての更新処理が完了している状態が発生する確率を上げることができる。
また、セカンダリＤＢ更新部１０４にセカンダリデータベース更新要求蓄積部１０６を設けることでバックアップ完了後にプライマリデータベースと同期が取れた状態まで回復することを可能としている。
【００４５】
なお、本実施の形態では、データベースを２重化した例で説明したが、高信頼化のために３重化以上の構成としてもよい。
その場合は、どれか一つのデータベースをバックアップ用のデータベースとして設定し、そこにデータベース更新要求蓄積部を設けて、そのデータベースをバックアップ時の切り離し対象として処理すればよい。
他のデータベースはプライマリデータベースと同じ動作をする。
【００４６】
実施の形態２．
実施の形態１では、相互に関連する一対のデータベース（システムＡ用データベース、システムＢ用データベース）がプライマリデータベースとセカンダリデータベースという冗長構成になっている例を説明した。
本実施の形態では、二対以上のデータベースが冗長構成になっている例を説明する。
【００４７】
図１１は、本実施の形態に係るデータベース管理装置１００とデータベースシステム２００の構成例を示す。
図１１において、データベース管理装置１００の構成は、図１と同様であり、データベースシステム２００の構成が異なる。
図１１に示すデータベースシステム２００は、サブグループ１（２０５）とサブグループ２（２１０）に分類される。
サブグループ１（２０５）は、システムＡ用のデータベース（システムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３）とシステムＢ用のデータベース（システムＢ用ＤＢ（プライマリ）２０２とシステムＢ用ＤＢ（セカンダリ）２０４）で構成される。
システムＡ用のデータベースとシステムＢ用のデータベースは、実施の形態１で説明したように、相互に連動しているデータベースであり、１つのトランザクションによりそれぞれのシステムのデータ更新が行われる。
サブグループ２（２１０）は、システムＣ用のデータベース（システムＣ用ＤＢ（プライマリ）２０６とシステムＣ用ＤＢ（セカンダリ）２０８）とシステムＤ用のデータベース（システムＤ用ＤＢ（プライマリ）２０７とシステムＤ用ＤＢ（セカンダリ）２０９）で構成される。
システムＣ用のデータベースとシステムＤ用のデータベースは、相互に連動しているデータベースであり、１つのトランザクションによりそれぞれのシステムのデータ更新が行われる。
なお、サブグループ１（２０５）とサブグループ２（２１０）は相互に独立しており、サブグループ１（２０５）ではサブグループ１（２０５）に対するトランザクションに従ってシステムＡ用ＤＢ（プライマリ）２０１、システムＢ用ＤＢ（プライマリ）２０２、システムＡ用ＤＢ（セカンダリ）２０３、システムＢ用ＤＢ（セカンダリ）２０４のデータの更新が行われる。
同様に、サブグループ２（２１０）ではサブグループ２（２１０）に対するトランザクションに従ってシステムＣ用ＤＢ（プライマリ）２０６、システムＤ用ＤＢ（プライマリ）２０７、システムＣ用ＤＢ（セカンダリ）２０８、システムＤ用ＤＢ（セカンダリ）２０９のデータの更新が行われる。
更に、バックアップのタイミングもサブグループ１（２０５）とサブグループ２（２１０）では一致している必要はない。
サブグループ１（２０５）では、サブグループ１（２０５）用のバックアップ開始要求が入力された際にセカンダリデータベースの切り離し及びバックアップが行われ、サブグループ２（２１０）では、サブグループ２（２１０）用のバックアップ開始要求が入力された際にセカンダリデータベースの切り離し及びバックアップが行われる。
なお、データベース管理装置１００においてトランザクション一時蓄積部１０５及びセカンダリデータベース更新要求蓄積部１０６は、サブグループごとに、更新要求を蓄積可能である。
データベース管理装置１００における各要素の動作は、本実施の形態において注記するものを除いては実施の形態１で説明したものと同様とする。
また、以降、サブグループはＳＧとも表記する。
【００４８】
図１２は、本実施の形態に係るトランザクション完了管理テーブル１０８の構成例を示す。
図１２に示すように、本実施の形態では、トランザクション完了管理テーブル１０８にサブグループごとに処理カウンタを設けている。
【００４９】
図１３は、本実施の形態に係るＤＢ同期状態管理テーブル１１０の構成例を示す。
図１３に示すように、本実施の形態では、ＤＢ同期状態管理テーブル１１０はサブグループごとにデータベースの状態を管理している。
【００５０】
次に、本実施の形態に係るデータベース管理装置１００の動作の概要をトランザクション監視部１０１の動作を中心にして説明する。
ここでは、図１８のフローチャートを参照して説明する。
なお、図１８は、図１０のフローチャートに対応する。
【００５１】
トランザクション監視部１０１がバックアップ開始要求（分離要求）を入力する（Ｓ２０００）。
なお、本実施の形態では、バックアップ開始要求にバックアップの対象となるサブグループ（分離対象サブグループの例）が示されているものとする。
また、本実施の形態では、更新要求にも更新要求の対象となるサブグループが示され、また、バックアップ終了通知にもバックアップが終了したサブグループが示されるものとする。
これら、バックアップ開始要求、バックアップ終了通知及び更新要求に示されているサブグループを対象サブグループ（対象ＳＧとも表記する）と呼ぶ。
【００５２】
次に、トランザクション監視部１０１は、バックアップ開始要求を解析して、対象サブグループを特定する（Ｓ２００１）。
また、トランザクション監視部１０１はＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期」から「分離中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期」から「分離中」に変更する（Ｓ２００１）。
トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
【００５３】
次に、トランザクション監視部１０１は対象サブグループについてトランザクション完了管理テーブル１０８の処理カウンタの値が０であるかどうかを確認する（Ｓ２００２）。
対象サブグループについての処理カウンタの値が０の場合（Ｓ２００２でＹＥＳ）は、トランザクション監視部１０１は、バックアップ開始要求をＤＢ同期管理部１０２に出力して対象サブグループのセカンダリデータベース（例えば、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）の分離を指示する（Ｓ２００７）。
一方、対象サブグループについての処理カウンタの値が０でない場合（Ｓ２００２でＮＯ）、すなわち、対象サブグループについて処理が完了していないトランザクション（ＣＯＭＭＩＴが入力されていないトランザクション）が存在している場合は、処理が完了していないトランザクションの処理完了を待つ。
より具体的には、トランザクション監視部１０１は、対象サブグループに対するＣＯＭＭＩＴが入力される度に（Ｓ２００３でＹＥＳ）、トランザクション完了管理テーブル１０８の対象サブグループに対する処理カウンタの値をデクリメントし（Ｓ２００４）、対象サブグループに対するＳＴＡＲＴが入力される度に（Ｓ２００５でＹＥＳ）、ＳＴＡＲＴ及びＳＴＡＲＴに後続する更新要求をトランザクション一時蓄積部１０５に蓄積させて（Ｓ２００６）、対象サブグループに対する処理カウンタの値が０になる（処理が完了していないトランザクションがなくなる）のを待つ。
トランザクション完了管理テーブル１０８の対象サブグループに対する処理カウンタの値が０になれば（Ｓ２００２でＹＥＳ）、トランザクション監視部１０１は、バックアップ開始要求をＤＢ同期管理部１０２に出力して対象サブグループのセカンダリデータベース（例えば、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）の分離を指示する（Ｓ２００７）。
【００５４】
このように、トランザクション監視部１０１は、バックアップ開始要求を入力した際に、対象サブグループごとにトランザクションの処理状況を監視し、対象サブグループについて処理中のトランザクションが存在していれば処理中のトランザクションがなくなる（処理カウンタの値が０になる）まで、バックアップ開始要求の出力を保留し、処理中のトランザクションがなくなったときに、バックアップ開始要求を出力する。
また、トランザクション監視部１０１は、バックアップ開始要求を入力してからＤＢ同期管理部１０２にバックアップ開始要求を出力するまでの間に発生したトランザクション内の対象サブグループに対する更新要求をトランザクション一時蓄積部１０５に蓄積させる。
【００５５】
前述したように、トランザクション監視部１０１は、処理カウンタの値が０の場合に（Ｓ２００２でＹＥＳ）、バックアップ開始要求をＤＢ同期管理部１０２に出力して対象サブグループのセカンダリデータベース（例えば、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）の分離を指示し、ＤＢ同期管理部１０２がバックアップ開始要求を入力し、ＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「分離中」から「分離」に変更する（Ｓ２００７）。
ＤＢ同期状態管理テーブル１１０の状態が「分離」になると、対象サブグループのセカンダリデータベース（例えば、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）がプライマリデータベース（例えば、システムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２）から切り離され、セカンダリデータベースに対する更新はできなくなる。
一方で、プライマリデータベースは通常の状態で稼働しており、更新が可能である。
トランザクション監視部１０１は、バックアップ開始要求をＤＢ同期管理部１０２に出力した際にトランザクション一時蓄積部１０５に対象サブグループに対する更新要求が蓄積されている場合（Ｓ２００８でＹＥＳ）は、トランザクション一時蓄積部１０５に蓄積されている対象サブグループに対する更新要求をＤＢ同期管理部１０２に出力する（Ｓ２００９）。
ＤＢ同期管理部１０２では、トランザクション監視部１０１から入力した更新要求をプライマリＤＢ更新部１０３とセカンダリＤＢ更新部１０４に出力し、プライマリＤＢ更新部１０３はＤＢ同期管理部１０２から入力した更新要求に従って対象サブグループのプライマリデータベースの更新を行う。
一方、セカンダリＤＢ更新部１０４では、対象サブグループのセカンダリデータベースが切り離されているため、ＤＢ同期管理部１０２から入力した更新要求はセカンダリデータベース更新要求蓄積部１０６に蓄積する。
また、トランザクション監視部１０１からＤＢ同期管理部１０２にバックアップ開始要求が出力された（Ｓ２００７）後であって対象サブグループのセカンダリデータベースが切り離されている間にトランザクション監視部１０１が入力した更新要求は、トランザクション監視部１０１からＤＢ同期管理部１０２を経由してプライマリＤＢ更新部１０３とセカンダリＤＢ更新部１０４に出力される。
つまり、Ｓ２００７以降にトランザクション監視部１０１が入力したＳＴＡＲＴに対しては、Ｓ２００６とは異なり、トランザクション完了管理テーブル１０８の処理カウンタの値がインクリメントされ、ＳＴＡＲＴ及びＳＴＡＲＴに後続する更新要求がＤＢ同期管理部１０２に出力され、プライマリＤＢ更新部１０３及びセカンダリＤＢ更新部１０４に出力される。
プライマリＤＢ更新部１０３は、更新要求に従って対象サブグループのプライマリデータベースの更新を行い、セカンダリＤＢ更新部１０４は、入力した更新要求をセカンダリデータベース更新要求蓄積部１０６に蓄積させる。
つまり、セカンダリＤＢ更新部１０４は、Ｓ２００６においてトランザクション一時蓄積部１０５に蓄積され、トランザクション監視部１０１により出力された（Ｓ２００９）更新要求をセカンダリデータベース更新要求蓄積部１０６に蓄積させる。
更に、セカンダリＤＢ更新部１０４は、ＤＢ同期管理部１０２により対象サブグループのセカンダリデータベースの分離処理が開始されてから対象サブグループのセカンダリデータベースの結合処理が開始されるまでの間（Ｓ２００７とＳ２０１０の間）にトランザクション監視部１０１が入力し、トランザクション監視部１０１が出力した対象サブグループのセカンダリデータベースに対する更新要求をセカンダリデータベース更新要求蓄積部１０６に蓄積させる。
【００５６】
その後、対象サブグループのセカンダリデータベースのバックアップが終了すると、バックアップの終了を通知するバックアップ終了通知をトランザクション監視部１０１が入力する（Ｓ２０１０）。
バックアップ終了通知が入力されると、トランザクション監視部１０１はＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「分離」から「同期中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「分離」から「同期中」に変更する（Ｓ２０１０）。
トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
ＤＢ同期状態管理テーブル１１０の対象サブグループの状態が「同期中」になるとセカンダリＤＢ更新部１０４による対象サブグループのセカンダリデータベースの結合処理が開始される。
セカンダリＤＢ更新部１０４はセカンダリデータベース更新要求蓄積部１０６に蓄積されている更新要求に基づいて対象サブグループのセカンダリデータベースのデータ内容の更新を行い、対象サブグループのセカンダリデータベースのデータ内容の更新が完了するとＤＢ更新完了通知を出力する。
セカンダリＤＢ更新部１０４から出力されたＤＢ更新完了通知はＤＢ同期管理部１０２を介してトランザクション監視部１０１に到達し、トランザクション監視部１０１がＤＢ更新完了通知を入力する（Ｓ２０１１）。
トランザクション監視部１０１はＤＢ更新完了通知を入力すると、ＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期中」から「同期」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期中」から「同期」に変更する（Ｓ２０１１）。
【００５７】
なお、図１８に示すＳ２００２〜Ｓ２０１１の処理は、対象サブグループごとに行われる。
つまり、サブグループ１（２０５）に対するバックアップ開始要求とサブグループ２（２１０）に対するバックアップ開始要求が並行して発生した場合には、サブグループ１（２０５）に対する処理カウンタの値が０になれば、サブグループ２（２１０）に対する処理カウンタの値とは無関係に、サブグループ１（２０５）のセカンダリデータベースの分離、バックアップがなされる。
また、サブグループ１（２０５）に対する処理カウンタの値が０でなければ、サブグループ２（２１０）に対する処理カウンタの値とは無関係に、サブグループ１（２０５）に対する処理カウンタがデクリメントされ、また、サブグループ１（２０５）に対する更新要求がトランザクション一時蓄積部１０５に蓄積される。
また、サブグループ１（２０５）のセカンダリデータベースに対するバックアップが完了すれば、サブグループ２（２１０）のセカンダリデータベースに対するバックアップの状態に関わらず、サブグループ１（２０５）の状態が「同期中」、「同期」に変化する。
【００５８】
次に、本実施の形態に係るデータベース管理装置１００の動作の詳細を説明する。
ここでは、図１４〜図１７のフローチャートを参照して説明する。
図１４は図３のフローチャートに対応し、図１５は図４のフローチャートに対応し、図１６は図５のフローチャートに相当し、図１７は図６のフローチャートに対応する。
なお、図１６のフローに先行するフローは図２に示したＳ１０１〜Ｓ１０６である。
以下では、図２のＳ１０１〜Ｓ１０６を含めて、本実施の形態に係るデータベース管理装置１００の動作の詳細を説明する。
【００５９】
トランザクション監視部１０１が、データベースへの更新要求、バックアップ開始要求、バックアップ終了通知のいずれかの入力待ち状態（図２のＳ１０１）において、データベースの更新要求を入力すると（図２のＳ１０２でＮＯ、図２のＳ１０５でＮＯ、図１４のＳ１０７でＹＥＳ）、トランザクション監視部１０１は、更新要求を解析して、対象サブグループを特定する（図１４のＳ７０１）。
次に、トランザクション監視部１０１は、ＤＢ同期管理部１０２を介してＤＢ同期状態管理テーブル１１０の対象サブグループの状態が「分離中」であるかを確認する（図１４のＳ７０２）。
ＤＢ同期状態管理テーブル１１０の対象サブグループの状態が「分離中」でない場合（Ｓ７０２でＮＯ）は、トランザクション監視部１０１は、Ｓ１０７で入力した更新要求の種類を判別する（図１４のＳ１０９）。
Ｓ１０７で入力した更新要求がＳＴＡＲＴ（監視対象トランザクションテーブル１０９に登録されている更新要求）であれば、トランザクション監視部１０１はトランザクション完了管理テーブル１０８の対象サブグループの対象サブグループに対する処理カウンタの値を１インクリメントする（図１７のＳ７０３）。
Ｓ１０７で入力した更新要求がＣＯＭＭＩＴ（監視対象トランザクションテーブル１０９に登録されている更新要求）であれば、トランザクション監視部１０１はトランザクション完了管理テーブル１０８の対象サブグループに対する処理カウンタの値を１デクリメントする（図１４のＳ７０４）。
Ｓ７０４でデクリメントされた後は、処理がＳ１０１に戻る。
Ｓ７０３で処理カウンタがインクリメントされた場合、またはＳ１０９で判別した結果がＳＴＡＲＴでもＣＯＭＭＩＴでもない場合、ＤＢ更新処理（図１４のＳ１１１）が実施される。
ＤＢ更新処理の後、処理がＳ１０１に戻る。
【００６０】
ＤＢ更新処理（Ｓ１１１）の詳細は、図１７に示す通りである。
更新要求がトランザクション監視部１０１からＤＢ同期管理部１０２を介してプライマリＤＢ更新部１０３及びセカンダリＤＢ更新部１０４に出力され、プライマリＤＢ更新部１０３によりプライマリデータベース（例えば、システムＡ用ＤＢ（プライマリ）２０１とシステムＢ用ＤＢ（プライマリ）２０２）は更新要求に従って更新処理される（Ｓ４０１）。
また、セカンダリＤＢ更新部１０４は、ＤＢ同期管理部１０２から入力した更新要求を解析し、対象サブグループを特定する（Ｓ８０１）。
そして、セカンダリＤＢ更新部１０４は、ＤＢ同期状態管理テーブル１１０の対象サブグループの状態が「同期」であるかどうかを確認し（Ｓ８０２）、この時点では、ＤＢ同期状態管理テーブル１１０の対象サブグループの状態は「同期」であるため（Ｓ８０２でＹＥＳ）、対象サブグループのセカンダリデータベース（例えば、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）も更新要求に従って更新処理される（Ｓ４０３）。
【００６１】
図１４のＳ７０２の判断においてＤＢ同期状態管理テーブル１１０の対象サブグループの状態が「分離中」である場合（図１４のＳ７０２でＹＥＳ）は、トランザクション監視部１０１はＳ１０７で入力した更新要求が新規なトランザクションかどうかを判断する（図１４のＳ１１５）。
新規なトランザクションの場合（図１４のＳ１１５でＹＥＳ）は、トランザクション監視部１０１は、Ｓ１０７で入力した更新要求をトランザクション一時蓄積部１０５に蓄積させる（図３のＳ１１６）。
一方、新規なトランザクションでない場合は、Ｓ１０９に移行する。
なお、この場合は、Ｓ１０７で入力した更新要求は通常はＳＴＡＲＴではないので、Ｓ１０９の判定の結果、ＤＢ更新処理（Ｓ１１１）又はトランザクション完了管理テーブル１０８の処理カウンタのデクリメントが実施される。
ＤＢ更新処理（Ｓ１１１）の詳細は、前述したとおりである。
【００６２】
一方、図１４のＳ１０７においてＮＯであった場合は、処理がＳ１０１に戻る。
なお、Ｓ１０７でＮＯであった場合に、不正な入力である場合は所定のエラー処理を行ってもよい。
また、バックアップ開始要求、バックアップ終了通知、更新要求以外の適正な入力である場合には、当該入力に対応する処理を行う。
【００６３】
トランザクション監視部１０１が、入力待ち状態（図２のＳ１０１）において、バックアップ開始要求を入力すると（図２のＳ１０２でＹＥＳ）、ＤＢ分離処理（Ｓ１０３）が実行され、更に、トランザクション一時蓄積部１０５に蓄積されている更新要求の各々に対してＤＢ更新処理（Ｓ１０４）が実行される。
【００６４】
ＤＢ分離処理（Ｓ１０３）の詳細は、図１５に示す通りである。
まず、トランザクション監視部１０１がバックアップ開始要求を解析して、対象サブグループを特定する（Ｓ５０１）。
次に、トランザクション監視部１０１がＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期」から「分離中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期」から「分離中」に変更する（Ｓ５０２）。
前述したように、トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
次に、トランザクション監視部１０１はトランザクション完了管理テーブル１０８の対象サブグループの処理カウンタの値が０になるのを待つ（Ｓ５０３）。
処理カウンタの値が０になると処理中のトランザクションが存在しない状態となるので、トランザクション監視部１０１はバックアップ開始要求をＤＢ同期管理部１０２に出力してシステムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の分離を指示する（Ｓ５０４）。
ＤＢ同期管理部１０２はバックアップ開始要求を入力すると、ＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「分離中」から「分離」に変更する（Ｓ５０５）。
トランザクション監視部１０１は、バックアップ開始要求に対して、バックアップ可能となったことを回答する（Ｓ２０５）。
【００６５】
ＤＢ更新処理（Ｓ１０４）の詳細は、図１７に示す通りである。
トランザクション一時蓄積部１０５に蓄積されている更新要求がトランザクション監視部１０１からＤＢ同期管理部１０２を介して、プライマリＤＢ更新部１０３及びセカンダリＤＢ更新部１０４に出力され、プライマリＤＢ更新部１０３によりプライマリデータベース（例えば、システムＡ用ＤＢ（プライマリ）２０１とシステムＢ用ＤＢ（プライマリ）２０２）は更新要求に従って更新処理される（Ｓ４０１）。
また、セカンダリＤＢ更新部１０４は、ＤＢ同期管理部１０２から入力した更新要求を解析し、対象サブグループを特定する（Ｓ８０１）。
そして、セカンダリＤＢ更新部１０４は、ＤＢ同期状態管理テーブル１１０の対象サブグループの状態が「同期」であるかどうかを確認し（Ｓ８０２）、この時点では、ＤＢ同期状態管理テーブル１１０の対象サブグループの状態が「分離」であるため（Ｓ８０２でＮＯ）、対象サブグループのセカンダリデータベース（例えば、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）についてはセカンダリＤＢ更新部１０４がセカンダリデータベース更新要求蓄積部１０６に更新要求を蓄積し、セカンダリデータベースの更新処理が行われない。
【００６６】
また、トランザクション監視部１０１が、入力待ち状態（図２のＳ１０１）において、バックアップ終了通知を入力すると（図２のＳ１０２でＮＯ、図２のＳ１０５でＹＥＳ）、ＤＢ結合処理（Ｓ１０６）が実行される。
ＤＢ結合処理の後、処理がＳ１０１に戻る。
【００６７】
ＤＢ結合処理（Ｓ１０６）の詳細は、図１６に示す通りである。
トランザクション監視部１０１がＤＢ同期管理部１０２にデータベースの結合を要求し、また、ＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「分離」から「同期中」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「分離」から「同期中」に変更する（Ｓ６０１）。
トランザクション監視部１０１が直接ＤＢ同期状態管理テーブル１１０の状態を変更できる場合は、トランザクション監視部１０１が直接変更してもよい。
また、ＤＢ同期管理部１０２はセカンダリＤＢ更新部１０４に対してデータベースの同期を要求する。
セカンダリＤＢ更新部１０４はセカンダリデータベース更新要求蓄積部１０６に蓄積されている更新要求がなくなるまで、更新要求ごとに、対象サブグループのセカンダリデータベース（例えば、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４）のデータ内容の更新を行う（Ｓ６０２）。
そして、対象サブグループのセカンダリデータベースのデータ内容の更新が完了すると、セカンダリＤＢ更新部１０４はＤＢ更新完了通知を出力する。
トランザクション監視部１０１がＤＢ更新完了通知を入力すると、ＤＢ同期管理部１０２にＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期中」から「同期」に変更するように指示し、ＤＢ同期管理部１０２がＤＢ同期状態管理テーブル１１０の対象サブグループの状態を「同期中」から「同期」に変更する（Ｓ３０３）。
これにより通常状態である「同期」状態に戻ることができる。
【００６８】
以上のように、データベースをプライマリとセカンダリに２重化し、また、データベースを２以上のサブグループに分類している場合にも、トランザクション監視部１０１によりサブグループごとにすべてのデータ更新処理の完了を監視し、サブグループごとに処理中のトランザクションが存在しないタイミングでセカンダリデータベースを切り離すことでデータベースの整合性を確保したバックアップを実現することが可能となる。
また、セカンダリＤＢ更新部１０４にセカンダリデータベース更新要求蓄積部１０６を設けることでバックアップ完了後にプライマリデータベースと同期が取れた状態まで回復することを可能としている。
【００６９】
実施の形態３．
実施の形態１及び２では、トランザクション監視部１０１でバックアップ要求開始を受け付けた場合、トランザクション完了管理テーブル１０８の処理カウンタが０になるのを待つ動作を説明した。
しかし、処理が完了していないトランザクションが多数あり、トランザクション監視部１０１でバックアップ開始要求を受け付けた後、一定時間を過ぎてもトランザクション完了管理テーブル１０８の処理カウンタが０にならないことも考えられる。
このため、一定時間経過してもトランザクション完了管理テーブル１０８の処理カウンタが０にならない場合は、トランザクション監視部１０１は、バックアップ開始要求をＤＢ同期管理部１０２に出力せずに、トランザクション一時蓄積部１０５に保管している更新要求をＤＢ同期管理部１０２に出力するようにしてもよい。
つまり、バックアップのための分離を行わずに、トランザクション一時蓄積部１０５に保管している更新要求を先に処理し、再度、トランザクション開始要求を入力した際に、トランザクション完了管理テーブル１０８の処理カウンタが０になるのを待ち、またトランザクション一時蓄積部１０５に更新要求を保管するという処理を繰り返す。
こうすることで、よりバックアップ開始時のすべての更新処理が完了している状態が発生する確率を上げることができる。
【００７０】
実施の形態４．
実施の形態１〜３では、セカンダリデータベース更新要求蓄積部１０６には、データベースへの更新要求を蓄積する動作を説明した。
しかし、システムが自動採取するデータの更新時刻など更新要求には含まれないデータで、更新タイミングが異なることによりプライマリとセカンダリのデータが一致しないことも考えられる。
このため、セカンダリデータベース更新要求蓄積部１０６には、データベースの更新要求ではなく、プライマリデータベースでの更新結果が示される更新ジャーナルを蓄積するようにしてもよい。
データベースが分離状態であるときには、プライマリＤＢ更新部１０３がデータベースの更新処理を完了するとその更新ジャーナルをセカンダリデータベース更新要求蓄積部１０６に蓄積する。
セカンダリＤＢ更新部１０４は、データベースのバックアップが完了し、同期をとるとき（セカンダリデータベースの結合処理が開始される際）は、セカンダリデータベース更新要求蓄積部１０６に蓄積してある更新ジャーナルを元にデータベースの同期を行う。
こうすることで、データベースへの更新要求に含まれないデータについてもプライマリＤＢと同じデータとすることができる。
【００７１】
以上の実施の形態１〜４では、
２４時間データベースの稼動が行われる情報システムにおいて、以下の手段を備え、トランザクションの要求者（アプリケーションプログラム）から見たデータベースのデータの整合性を確保したバックアップが取得可能なデータベースバックアップ方式を説明した。
（ａ）データベースを操作するトランザクションの状態を監視するトランザクション監視部；
（ｂ）トランザクション監視部が監視対象とするトランザクションの種類を登録する監視対象トランザクションテーブル；
（ｃ）現在処理中のトランザクション数を管理するトランザクション完了管理テーブル；
（ｄ）データベースの切り離し処理をしている間、または、バックアップ要求を受け付けてトランザクションの完了を待つ間に発生したトランザクションを一時蓄積するトランザクション一時蓄積部；
（ｅ）データベースの更新処理を行うプライマリＤＢ更新部；
（ｆ）プライマリＤＢ更新部が更新するデータベースと同じデータベースを更新するセカンダリＤＢ更新部；
（ｇ）バックアップ用にセカンダリＤＢを切り離したときに、バックアップを採取している間に発生したデータベースの更新要求を蓄積するセカンダリデータベース更新要求蓄積部；
（ｈ）プライマリＤＢ、セカンダリＤＢのデータ更新状態の管理、プライマリＤＢ、セカンダリＤＢの分離、結合を制御するＤＢ同期管理部；
（ｉ）プライマリＤＢ、セカンダリＤＢの状態を記録するＤＢ同期状態管理テーブル。
【００７２】
また、実施の形態１〜４では、
トランザクション監視部において、処理中のトランザクションが存在しないタイミングを監視し、処理中のトランザクションが存在しなくなったときにセカンダリＤＢを切り離し、切り離したＤＢからバックアップ採取可能であることを説明した。
【００７３】
また、実施の形態１〜４では、
トランザクション監視部は、監視が必要なトランザクション、不要なトランザクションを識別とし、処理中トランザクションが存在しない確率を向上させることを説明した。
【００７４】
また、実施の形態１〜４では、トランザクション監視部は、バックアップ要求を受け付けると一時的にトランザクション一時蓄積部に要求トランザクションを滞留させ、処理中のトランザクションの完了を待つことで処理中トランザクションが存在しない確率を向上させることを説明した。
【００７５】
最後に、実施の形態１〜４に示したデータベース管理装置１００のハードウェア構成例について説明する。
図１９は、実施の形態１〜４に示すデータベース管理装置１００のハードウェア資源の一例を示す図である。
なお、図１９の構成は、あくまでもデータベース管理装置１００のハードウェア構成の一例を示すものであり、データベース管理装置１００のハードウェア構成は図１９に記載の構成に限らず、他の構成であってもよい。
【００７６】
図１９において、データベース管理装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態１〜４で説明した「テーブル記憶部１０７」は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００７７】
通信ボード９１５は、例えば、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されていても構わない。
【００７８】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００７９】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００８０】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
データベース管理装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００８１】
上記プログラム群９２３には、実施の形態１〜４の説明において「〜部」（「テーブル記憶部１０７」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００８２】
ファイル群９２４には、実施の形態１〜４の説明において、「〜の判断」、「〜の判定」、「〜の比較」、「〜の蓄積」、「〜の更新」、「〜の指示」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜４で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００８３】
また、実施の形態１〜４の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜４で説明したフローチャートに示すステップ、手順、処理により、本発明に係るデータベース管理方法を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１〜４の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜４の「〜部」の手順や方法をコンピュータに実行させるものである。
【００８４】
このように、実施の形態１〜４に示すデータベース管理装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００８５】
１００  データベース管理装置、１０１  トランザクション監視部、１０２  ＤＢ同期管理部、１０３  プライマリＤＢ更新部、１０４  セカンダリＤＢ更新部、１０５  トランザクション一時蓄積部、１０６  セカンダリデータベース更新要求蓄積部、１０７  テーブル記憶部、１０８  トランザクション完了管理テーブル、１０９  監視対象トランザクションテーブル、１１０  ＤＢ同期状態管理テーブル、２００  データベースシステム、２０１  システムＡ用ＤＢ（プライマリ）、２０２  システムＢ用ＤＢ（プライマリ）、２０３  システムＡ用ＤＢ（セカンダリ）、２０４  システムＢ用ＤＢ（セカンダリ）、２０５  サブグループ１、２０６  システムＣ用ＤＢ（プライマリ）、２０７  システムＤ用ＤＢ（プライマリ）、２０８  システムＣ用ＤＢ（セカンダリ）、２０９  システムＤ用ＤＢ（セカンダリ）、２１０  サブグループ２。
【図１】
2012068693.tif 000003
【図２】
2012068693.tif 000004
【図３】
2012068693.tif 000005
【図４】
2012068693.tif 000006
【図５】
2012068693.tif 000007
【図６】
2012068693.tif 000008
【図７】
2012068693.tif 000009
【図８】
2012068693.tif 000010
【図９】
2012068693.tif 000011
【図１０】
2012068693.tif 000012
【図１１】
2012068693.tif 000013
【図１２】
2012068693.tif 000014
【図１３】
2012068693.tif 000015
【図１４】
2012068693.tif 000016
【図１５】
2012068693.tif 000017
【図１６】
2012068693.tif 000018
【図１７】
2012068693.tif 000019
【図１８】
2012068693.tif 000020
【図１９】
2012068693.tif 000021