(57)【特許請求の範囲】
【請求項１】
マスターデータベースを有するレプリケーションサーバシステムと、レプリカデータベースを有するレプリケーションクライアントシステムとからなるデータベースレプリケーションシステムであって、
前記レプリケーションサーバシステムが、データベース管理システム及びレプリケーション制御システムを有し、
前記データベース管理システムは、トランザクションの異常終了を検出すると、当該トランザクションを破棄するトランザクション破棄手段を有し、
前記レプリケーション制御システムは、前記マスターデータベースの更新履歴を更新履歴抽出ファイルに書き込むと共に、前記マスターデータベースのトランザクション処理が完了した後に当該トランザクションの異常終了が検出された場合にはその旨を示す更新履歴であるチェック情報を前記更新履歴抽出ファイルに書き込む更新履歴抽出手段を有し、
前記レプリケーションクライアントシステムは、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記チェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定する更新履歴再送手段を有することを特徴とするデータベースレプリケーションシステム。
【請求項２】
前記更新履歴抽出手段は、システム起動時において当該システム起動がシステムダウン後の最初のシステム起動である場合にはその旨を示す更新履歴であるチェック情報を前記更新履歴抽出ファイルに書き込み、
前記更新履歴再送手段は、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記システムダウンについてのチェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定することを特徴とする請求項１に記載のデータベースレプリケーションシステム。
【請求項３】
マスターデータベース、データベース管理システム及びレプリケーション制御システムを有するレプリケーションサーバシステムと、レプリカデータベースを有するレプリケーションクライアントシステムとからなるデータベースレプリケーションシステムを用いてデータベースを自動リカバリする方法であって、
前記データベース管理システムが、トランザクションの異常終了を検出すると、当該トランザクションを破棄するステップと、
前記レプリケーション制御システムが、前記マスターデータベースの更新履歴を更新履歴抽出ファイルに書き込むステップと、
前記レプリケーション制御システムが、前記マスターデータベースのトランザクション処理が完了した後に当該トランザクションの異常終了が検出された場合にはその旨を示す更新履歴であるチェック情報を前記更新履歴抽出ファイルに書き込むステップと、
前記レプリケーションクライアントシステムが、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記チェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定するステップと、
を有することを特徴とするデータベース自動リカバリ方法。
【請求項４】
前記レプリケーション制御システムが、システム起動時において当該システム起動がシステムダウン後の最初のシステム起動である場合にはその旨を示す更新履歴であるチェック情報を更新履歴抽出ファイルに書き込むステップと、
前記レプリケーションクライアントシステムが、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記システムダウンについてのチェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定するステップと、
を有することを特徴とする請求項３に記載のデータベース自動リカバリ方法。
【請求項５】
請求項３または請求項４に記載のデータベース自動リカバリ方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベースレプリケーションシステム、及びデータベース自動リカバリ方法に関する。
【０００２】
【従来の技術】
従来から、１つの情報処理装置が保有するマスターデータベースの複製を別の情報処理装置にレプリカデータベースとして作成し、マスターデータベースとレプリカデータベースとの整合性を維持するようなデータベースレプリケーション制御システムが知られている。
このような、従来のデータベースレプリケーション制御システムとしては、例えば特開２０００−２０３６６号公報、特開２０００−２０３７４号公報、特開２０００−４７９１８号公報、特開２００１−３４５２７号公報及び特開平９−５４７１８号公報に開示されたものがある。
【０００３】
従来のデータベースレプリケーション制御システムにおいては、データベース更新実行中のトランザクション異常終了が発生したり、データベース更新実行中にシステムクラッシュが発生することによるシステム異常終了が起こることがある。このような異常終了時においては、レプリケーション制御システムにおいて、必ずしもマスターデータベースとレプリカデータベースとの整合性を保証することはできなかった。従って、上述したような異常終了等によりマスターデータベースとレプリカデータベースとの不整合が生じた場合はオンライン業務処理を停止してマスターデータベースからレプリカデータベースへ全データを一括転送し、整合状態にした上でオンライン業務を再開する必要があった。
【０００４】
そのため、レプリケーションを正常稼動させるためには、マスターデータベースとレプリカデータベースとの内容を同一にしなければならず、そのためには、一旦レプリケーション及びデータベース更新業務を停止し、マスターデータベースからレプリカデータベースへの全データ一括転送を実施する必要がある。
【０００５】
従って、トランザクションの異常終了時やシステムダウン時においても、データベースの参照／更新業務を停止したり、またレプリケーションを停止することなく、瞬時にマスターデータベースとレプリカデータベースとの不整合の発生を検出し、不整合データのみを再転送し、マスターデータベースとレプリカデータベースとの再同期処理を高速に実施可能なデータベースレプリケーションシステム及びデータベース自動リカバリ方法が望まれていた。
【０００６】
【発明が解決しようとする課題】
従って、本発明の目的は、トランザクションの異常終了時やシステムダウン時においても、データベースの参照／更新業務を停止したり、またレプリケーションを停止することなく、瞬時にマスターデータベースとレプリカデータベースとの不整合の発生を検出し、不整合データのみを再転送し、マスターデータベースとレプリカデータベースとの再同期処理を高速に実施可能なデータベースレプリケーションシステム及びデータベース自動リカバリ方法を提供することにある。
【０００７】
【課題を解決するための手段】
前記課題を解決する本出願の第１の発明は、マスターデータベースを有するレプリケーションサーバシステムと、レプリカデータベースを有するレプリケーションクライアントシステムとからなるデータベースレプリケーションシステムであって、前記レプリケーションサーバシステムが、データベース管理システム及びレプリケーション制御システムを有し、前記データベース管理システムは、トランザクションの異常終了を検出すると、当該トランザクションを破棄するトランザクション破棄手段を有し、前記レプリケーション制御システムは、前記マスターデータベースの更新履歴を更新履歴抽出ファイルに書き込むと共に、前記マスターデータベースのトランザクション処理が完了した後に当該トランザクションの異常終了が検出された場合にはその旨を示す更新履歴であるチェック情報を前記更新履歴抽出ファイルに書き込む更新履歴抽出手段を有し、前記レプリケーションクライアントシステムは、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記チェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定する更新履歴再送手段を有することを特徴とするデータベースレプリケーションシステムである。
【０００８】
かかる構成とすることにより、トランザクションが強制終了等により異常終了した場合、トランザクションの異常終了を検出し、トランザクション破棄手段がトランザクションを破棄し、更新履歴再送手段がマスターデータベースとレプリカデータベースとの不整合データをマスターデータベースから読み込み、レプリカデータベースに正しい値を設定するので、トランザクションが異常終了した場合にマスターデータベースとレプリカデータベースとの整合をとることが可能となる。従って、本発明のデータベースレプリケーションシステムによれば、トランザクションの異常終了時やシステムダウン時においても、データベースの参照／更新業務を停止したり、レプリケーションを停止することなく、データベースのレプリケーションを実施することが可能である。
【０００９】
また、本出願の請求項２に記載の発明は、請求項１に記載のデータベースレプリケーションシステムにおいて、前記更新履歴抽出手段は、システム起動時において当該システム起動がシステムダウン後の最初のシステム起動である場合にはその旨を示す更新履歴であるチェック情報を前記更新履歴抽出ファイルに書き込み、前記更新履歴再送手段は、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記システムダウンについてのチェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定することを特徴とする。
かかる構成とすることにより、システムダウンが発生した場合にも、不整合が自動検出され、マスターデータベースとレプリカデータベースとの整合をとることが可能となる。
【００１０】
また、本出願の請求項３に記載の発明は、マスターデータベース、データベース管理システム及びレプリケーション制御システムを有するレプリケーションサーバシステムと、レプリカデータベースを有するレプリケーションクライアントシステムとからなるデータベースレプリケーションシステムを用いてデータベースを自動リカバリする方法であって、前記データベース管理システムが、トランザクションの異常終了を検出すると、当該トランザクションを破棄するステップと、前記レプリケーション制御システムが、前記マスターデータベースの更新履歴を更新履歴抽出ファイルに書き込むステップと、前記レプリケーション制御システムが、前記マスターデータベースのトランザクション処理が完了した後に当該トランザクションの異常終了が検出された場合にはその旨を示す更新履歴であるチェック情報を前記更新履歴抽出ファイルに書き込むステップと、前記レプリケーションクライアントシステムが、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記チェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定するステップとを有することを特徴とするデータベース自動リカバリ方法である。
【００１１】
かかる構成とすることにより、トランザクションが強制終了等により異常終了した場合、トランザクションの異常終了を検出し、トランザクション破棄手段がトランザクションを破棄し、更新履歴再送手段がマスターデータベースとレプリカデータベースとの不整合データをマスターデータベースから読み込み、レプリカデータベースに正しい値を設定するので、トランザクションが異常終了した場合にマスターデータベースとレプリカデータベースとの整合をとることのできるデータベース自動リカバリ方法となる。従って、本発明のデータベース自動リカバリ方法によれば、トランザクションの異常終了時やシステムダウン時においても、データベースの参照／更新業務を停止したり、レプリケーションを停止することなく、データベースのレプリケーションを実施することが可能である。
【００１２】
また、本出願の請求項４に記載の発明は、請求項３に記載のデータベース自動リカバリ方法において、前記レプリケーション制御システムが、システム起動時において当該システム起動がシステムダウン後の最初のシステム起動である場合にはその旨を示す更新履歴であるチェック情報を更新履歴抽出ファイルに書き込むステップと、前記レプリケーションクライアントシステムが、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記システムダウンについてのチェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定するステップとを有することを特徴とする。
かかる構成とすることにより、本発明のデータベース自動リカバリ方法は、システムダウンが発生した場合にも不整合を自動検出しマスターデータベースとレプリカデータベースとの整合をとることのできる方法となる。
【００１３】
また、本出願の請求項５に記載の発明は、請求項３または請求項４に記載のデータベース自動リカバリ方法をコンピュータに実行させるプログラムである。
【００１４】
かかる構成とすることにより、トランザクションが強制終了等により異常終了した場合、トランザクションの異常終了を検出し、トランザクション破棄手段がトランザクションを破棄し、更新履歴再送手段がマスターデータベースとレプリカデータベースとの不整合データをマスターデータベースから読み込み、レプリカデータベースに正しい値を設定するので、トランザクションが異常終了した場合にマスターデータベースとレプリカデータベースとの整合をとることのできるデータベース自動リカバリ方法を実行することができる。
【００１５】
また、システムダウンが発生した場合にも不整合を自動検出しマスターデータベースとレプリカデータベースとの整合をとることのできるデータベース自動リカバリ方法を実行することができる。
【００１６】
【発明の実施の形態】
以下、先ず本発明のデータベースレプリケーションシステムについて説明する。
本発明のデータベースレプリケーションシステムは、マスターデータベースを有するレプリケーションサーバシステムと、レプリカデータベースを有するレプリケーションクライアントシステムからなり、前記レプリケーションサーバシステムが、データベース管理システム及びレプリケーション制御システムを有している。また、前記データベース管理システムがトランザクションを破棄するトランザクション破棄手段を有し、前記レプリケーション制御システムが、トランザクションの異常終了を検出するトランザクションシーケンス監視手段を有している。
【００１７】
また、前記レプリケーションクライアントシステムはレプリケーション制御システムを有し、前記レプリケーション制御システムは更新履歴再送手段を有し、該更新履歴再送手段は前記マスターデータベースと前記レプリカデータベースとの不整合データをマスターデータベースから読み込み、レプリカデータベースに正しい値を設定する手段を有する。
【００１８】
本発明のデータベースレプリケーションシステムの一実施の形態について図面を参照して説明する。
図１は、本発明のデータベースレプリケーションシステムの構成を示す図である。
図１に示すように、本発明のデータベースレプリケーションシステムは、レプリケーションサーバシステム１０１とレプリケーションクライアントシステム４０１とからなる。
【００１９】
レプリケーションサーバシステム１０１は、データベース管理システム２０１（以下、本明細書において「ＤＢＭＳ」ともいう）、レプリケーション制御システム３０１、マスターデータベース２０７、更新ジャーナル２０８及び更新履歴抽出ファイル３０６を有する。
また、レプリケーションクライアントシステム４０１は、レプリケーション制御システム４０２及びレプリカデータベース４０５を有する。
【００２０】
前記ＤＢＭＳ２０１は、データベース参照処理手段２０２、データベース更新処理手段２０３、トランザクション確定手段２０４、更新ジャーナル処理手段２０５及びトランザクション破棄手段２０６を有しており、前記レプリケーション制御システム３０１は、更新履歴抽出手段３０２、トランザクションシーケンス監視手段３０３、更新履歴送信手段３０４及びシステムダウン処理手段３０５を有している。
【００２１】
また、前記レプリケーションクライアントシステム４０１の有するレプリケーション制御システム４０２は、更新履歴受信反映手段４０３及び更新履歴再送手段４０５を有している。
【００２２】
そして、本発明のデータベースレプリケーションシステム１０１においては、前記トランザクション破棄手段２０６がトランザクションを破棄する機能を有し、前記トランザクションシーケンス監視手段３０３がトランザクションの異常終了を検出する機能を有している。また、前記更新履歴再送手段４０４が、前記マスターデータベース２０７と前記レプリカデータベース４０５との不整合データをマスターデータベース２０７から読み込み、レプリカデータベース４０５に正しい値を設定する機能を有している。
【００２３】
また、本発明のデータベースレプリケーションシステム１０１においては、前記レプリケーション制御システム３０１がシステムダウン処理手段３０５を有しており、該システムダウン処理手段３０５は、システムダウンが発生した際にデータの不整合を検出する機能を有している。
【００２４】
更新履歴抽出手段３０２における動作の流れについて図面を参照して説明する。図２は、更新履歴抽出手段３０２における動作の流れを示す図である。
図２に示すように、更新履歴抽出手段３０２は、引き数ＯＵＴＰＵＴの値を判別する機能を有している。ＯＵＴＰＵＴ＝ＤＡＴＡが指定された場合は（ステップ５０１）、ステップ５０２において直前に実施したデータベース更新の内容よりデータベース更新履歴情報を生成する。
【００２５】
ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ１が指定された場合（ステップ５０３）は、ステップ５０４においてＣＯＭＭＩＴ１情報を生成し、また、ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ２が指定された場合（ステップ５０５）は、ステップ５０６においてＣＯＭＭＩＴ２情報を生成し、ＯＵＴＰＵＴ＝ＲＯＬＬＢＡＣＫが指定された場合（ステップ５０７）は、ステップ５０８においてＲＯＬＬＢＡＣＫ情報を生成する。また、ＯＵＴＰＵＴ＝ＣＨＥＣＫが指定された場合（ステップ５０９）は、ステップ５１０においてＣＨＥＣＫ情報を生成する。
上記ステップ５０２、５０４、５０６、５０８及び５１０において生成された各情報は、ステップ５１１において更新履歴抽出ファイルへ書き込まれる。
【００２６】
次に、トランザクションシーケンス監視手段３０３における動作の流れについて図面を参照して説明する。図３は、トランザクションシーケンス監視手段３０３における動作の流れを示す図である。
図３に示すように、トランザクションシーケンス監視手段３０３は、引き数ＯＵＴＰＵＴの値を判別し、グローバル変数ＳＥＱの値を設定する機能を有している。
【００２７】
ＯＵＴＰＵＴ＝ＤＡＴＡが指定された場合（ステップ６０１）は、ステップ６０２においてＳＥＱ＝０としステップ６１１に分岐する。ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ１が指定された場合（ステップ６０３）は、ステップ６０４においてＳＥＱ＝１としステップ６１１に分岐する。また、ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ２が指定された場合（ステップ６０５）は、ステップ６０６においてＳＥＱ＝２としステップ６１１に分岐する。
【００２８】
また、ＯＵＴＰＵＴ＝ＲＯＬＬＢＡＣＫが指定された場合（ステップ６０７）は、ステップ６０８において過去にグローバル変数ＳＥＱ設定された値を判別し、ＳＥＱ＝１である場合はステップ６０９においてＳＥＱ＝−１とし、ＳＥＱ＝１でなければステップ６１０においてＳＥＱ＝３とし、ステップ６１１に分岐する。また、ステップ６１１ににおいて、グローバル変数ＳＥＱの値を判別し、ＳＥＱ＝−１の以外の場合には処理を終了する。一方、ＳＥＱ＝−１の場合は、ステップ６１２においてＯＵＴＰＵＴ＝ＣＨＥＣＫを設定し、更新履歴抽出手段３０２を呼び出し、ステップ６１３においてＳＥＱ＝０に設定し、処理を終了する。
【００２９】
次に、更新履歴受信反映手段４０３における動作の流れについて図面を参照して説明する。図４は、更新履歴受信反映手段４０３における動作の流れを示す図である。
図４に示すように、更新履歴受信反映手段４０３は、更新履歴の種類を判別し、変数ＳＴＡＴを設定する機能を有している。
【００３０】
図４に示すように、更新履歴受信反映手段４０３は、ステップ７０１において、予め変数ＳＴＡＴを０に設定する。次いで、ステップ７０２において更新履歴を１件読み込み、次いで更新履歴の種類を判別する。ＣＯＭＭＩＴ１情報である場合（ステップ７０３）は、ステップ７０４においてＳＴＡＴ＝１としステップ７１２に分岐する。ＣＯＭＭＩＴ２情報である場合（ステップ７０５）は、ステップ７０６においてＳＴＡＴ＝２としステップ７１２に分岐する。また、ＲＯＬＬＢＡＣＫ情報である場合（ステップ７０８）は、ステップ７０８においてでＳＴＡＴ＝３としステップ７１２に分岐する。
【００３１】
また、ＣＨＥＣＫ情報である場合（ステップ７０９）は、ステップ７１０において以前のＳＴＡＴの値を判別し、ＳＴＡＴ＝１でなければステップ７１２に分岐し、ＳＴＡＴ＝１である場合（ステップ７１１）は、ＳＴＡＴ＝−１と設定しステップ７１２に分岐する。
【００３２】
次いで、ＳＴＡＴの値を判別し、ＳＴＡＴ＝２である場合（ステップ７１２）は、ステップ７１３においてトランザクションをレプリカＤＢへ反映しステップ７０１に分岐する。また、ＳＴＡＴ＝３である場合（ステップ７１４）は、ステップ７１５においてトランザクションを破棄しステップ７０１に分岐する。また、ＳＴＡＴ＝−１である場合（ステップ７１６）は、更新履歴再送手段４０４を呼び出し、ステップ７１７においてトランザクションをレプリカＤＢへ反映しステップ７０１に分岐する。一方、ＳＴＡＴがそれ以外の値である場合は、トランザクションの途中であると判断しステップ７０２に分岐する。
【００３３】
次に、データベース更新命令実行の動作について説明する。図５は、データベース更新命令実行の動作の流れを示す図である。
図５に示すように、データベース更新命令実行の際（ステップ８０１）には、データベース更新処理手段２０３が呼び出される。データベース更新処理手段２０３において、マスターデータベースの更新が実施され（ステップ８０２）、レプリカデータベースの存在を判別し、レプリカデータベースが存在しない場合は処理が終了する。一方、レプリカデータベースが存在する場合（ステップ８０４）は、引き数ＯＵＴＰＵＴ＝ＤＡＴＡが設定され（ステップ８０４）、更新履歴抽出手段３０２及びトランザクションシーケンス監視手段３０３が呼び出され、処理が終了する。
【００３４】
次に、ＣＯＭＭＩＴ命令実行の動作について説明する。図６は、ＣＯＭＭＩＴ命令実行の動作の流れを示す図である。
図６に示すように、ＣＯＭＭＩＴ命令実行の際（ステップ９０１）には、ＤＢＭＳ２０１の有するトランザクション確定手段２０４及び更新ジャーナル処理手段２０５が呼び出される。
【００３５】
トランザクション確定手段２０４においては、ステップ９０２においてデータベースのＣＯＭＭＩＴ処理が実施され、ステップ９０３においてレプリカＤＢの存在を判別し、レプリカＤＢが存在しない場合は処理は終了する。一方、レプリカデータベースが存在する場合（ステップ９０４）は、引き数ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ１が設定され（ステップ９０４）、更新履歴抽出手段３０２及びトランザクションシーケンス監視手段３０３が呼び出され、処理が終了する。
【００３６】
また、更新ジャーナル処理手段２０５においては、ステップ９０５においてデータベースのＣＯＭＭＩＴ処理が実施され、ステップ９０６においてレプリカＤＢの存在を判別し、レプリカＤＢが存在しない場合は処理は終了する。一方、レプリカデータベースが存在する場合（ステップ９０４）は、引き数ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ２が設定され、更新履歴抽出手段３０２及びトランザクションシーケンス監視手段３０３が呼び出され、処理が終了する。
【００３７】
次に、ＲＯＬＬＢＡＣＫ命令実行の動作について説明する。図７は、ＲＯＬＬＢＡＣＫ命令実行の動作の流れを示す図である。
図７に示すように、ＲＯＬＬＢＡＣＫ命令実行の際（ステップ１００１）には、トランザクション破棄手段２０６が呼び出される。
【００３８】
トランザクション破棄手段２０６においては、ステップ１００２においてＲＯＬＬＢＡＣＫ処理が実施され、ステップ１００３においてレプリカデータベースの存在を判別し、レプリカデータベースが存在しない場合は処理は終了する。一方、レプリカデータベースが存在する場合（ステップ１００４）は、引き数ＯＵＴＰＵＴ＝ＲＯＬＬＢＡＣＫが設定され、更新履歴抽出手段３０２及びトランザクションシーケンス監視手段３０３が呼び出され、処理が終了する。
【００３９】
次に、システムダウン処理の際の動作について説明する。図８は、システムダウンの際の動作の流れを示す図である。
図８に示すように、システムダウン処理手段３０５は、ステップ１１０１においてシステム起動前のシステムダウン発生を判別し、システムダウンの発生がない場合は処理を終了する。一方、システムダウンの発生がある場合は、ステップ１１０２において引き数ＯＵＴＰＵＴ＝ＣＨＥＣＫを設定し、更新履歴抽出手段３０２が呼び出され処理が終了する。
【００４０】
次に、トランザクションの一例について説明する。図９は、あるトランザクションの一例１２０１を示す図であり、データベース管理システム２０１によって処理される。
図９に示す１２０２は、マスターデータベースを参照するＳＱＬであり、データベース参照処理手段２０２によって処理される。また、この場合はデータベースの内容が更新されることはなく、レプリケーション制御システム３０１が呼び出されることはない。
【００４１】
図９に示す１２０３は、マスターデータベースを更新するＳＱＬであり、データベース更新命令実行（ステップ８０１）によって処理される。データベース更新命令実行（ステップ８０１）からデータベース更新処理手段２０３が呼び出され、ステップ８０２によりマスターデータベースを更新後、レプリカデータベースが存在する場合はＯＵＴＰＵＴ＝ＤＡＴＡで更新履歴抽出手段３０２が呼び出され、ステップ５０２においてデータベース更新履歴情報が生成され、ステップ５１１において図１０に示す１３０１のように更新履歴が更新履歴抽出ファイルへ書き込まれる。
その後、ＯＵＴＰＵＴ＝ＤＡＴＡでトランザクションシーケンス管理手段３０３が呼び出され、ステップ６０２においてＳＥＱ＝０が設定され、データベース更新処命令実行は終了する。
【００４２】
図９に示す１２０４は、トランザクションの終了を明示する命令であり、ＣＯＭＭＩＴ命令実行（ステップ９０１）によって処理される。ＣＯＭＭＩＴ命令実行（ステップ９０１）からトランザクション確定手段２０４が呼び出され、ステップ９０２においてマスターデータベースのＣＯＭＭＩＴ処理を実行後、レプリカデータベースが存在する場合は、ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ１で更新履歴抽出手段３０２が呼び出され、ステップ５０４においてＣＯＭＭＩＴ１情報が生成され、ステップ５１１において図１０に示す１３０２のように更新履歴が更新履歴抽出ファイルへ書き込まれる。
【００４３】
更に、ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ１でトランザクションシーケンス監視手段３０３が呼び出され、ステップ６０４においてＳＥＱ＝１が設定される。次に更新ジャーナル処理手段２０５が呼び出され、ステップ９０５においてマスターデータベースの更新ジャーナル書き込み処理を実行後、レプリカデータベースが存在する場合は、ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ２で更新履歴抽出手段３０２が呼び出され、ステップ５０６においてＣＯＭＭＩＴ２情報が生成され、ステップ５１１において図１０に示す１３０３のように更新履歴が更新履歴抽出ファイルへ書き込まれる。
【００４４】
更に、ＯＵＴＰＵＴ＝ＣＯＭＭＩＴ２でトランザクションシーケンス監視手段３０３が呼び出され、ステップ６０５においてＳＥＱ＝２が設定され、レプリケーションクライアントシステム４０１のレプリケーション制御システム４０２の更新履歴受信反映手段４０３は、定期的に受信した更新履歴抽出ファイルを読み込み処理する。
【００４５】
先ず、ステップ７０２において更新履歴１３０１を読み込み、本更新履歴はＤＡＴＡ情報であるため、情報を保持したままステップ７０２に戻る。次いで、ステップ７０２において次の更新履歴１３０２を読み込み、本更新履歴はＣＯＭＭＩＴ１情報であるため、ステップ７０４においてＳＴＡＴ＝１を設定し、ステップ７０２に戻る。
【００４６】
次いで、ステップ７０２において次の更新履歴１３０３を読み込み、本更新履歴はＣＯＭＭＩＴ２情報であるため、ステップ７０６においてＳＴＡＴ＝２を設定し、ステップ７１２においてステップ７１３に分岐し、読み込んだ更新履歴をもとにステップ７１３においてトランザクションをレプリカデータベースへ反映し、反映が完了しマスターデータベースとレプリカデータベースとの内容が同一になった後にステップ７０１に戻る。
【００４７】
次に、トランザクションの異常終了時の動作について説明する。
トランザクションが強制終了等により異常終了する場合、従来のシステムにおいては、正常なレプリケーション制御処理が完了できない場合があった。
本発明のデータベースレプリケーションシステムにおいてトランザクションが強制終了等により異常終了する場合の動作について図６を参照して説明する。
【００４８】
図６におけるステップ９０２の後から更新履歴抽出手段３０２が呼び出されるまでの間において異常終了が発生した場合、マスターデータベースは更新ジャーナル書き込み（ステップ９０５）終了まで正常に完了したが、レプリケーション制御システムにおけるトランザクション完了を意味する更新履歴抽出手段３０２の処理を完了できずに異常終了され、マスターデータベースとレプリカデータベースとの不整合が発生する可能性がある。
【００４９】
本発明のデータベースレプリケーションシステムにおいては、更新ジャーナル書き込み処理（ステップ９０５）の直後にトランザクションが異常終了した場合、マスターデータベースの処理はトランザクションが全て完了した状態であり、更新履歴は図１０に示す１４０１及び１４０２のみが出力された状態であり、トランザクションの完了を示すＣＯＭＭＩＴ２が出力されていない状態である。その後、データベース管理システム２０１は、トランザクション異常終了を検出し、トランザクション破棄手段２０６を呼び出し、トランザクションの破棄を実施する。
【００５０】
まず、ステップ１００２においてデータベースのＲＯＬＬＢＡＣＫ処理を実施する。この場合、マスターデータベースは既にトランザクション完了しているため、該ＲＯＬＬＢＡＣＫ処理はマスターデータベースに何ら影響を与えない。
次いで、ステップ１００４においてＯＵＴＰＵＴ＝ＲＯＬＬＢＡＣＫで更新履歴抽出手段３０２が呼び出され、ステップ５０８においてＲＯＬＬＢＡＣＫ情報が生成され、ステップ５１１において図１０に示す１４０３のように更新履歴が更新履歴抽出ファイルへ書き込まれる。
【００５１】
更に、トランザクションシーケンス監視手段３０３において、ＯＵＴＰＵＴ＝ＲＯＬＬＢＡＣＫ、かつＳＥＱ＝１であるため、ステップ６０９においてＳＥＱ＝−１を設定して異常終了を検出し、ステップ６１２において直前に出力したＲＯＬＬＢＡＣＫ情報を破棄し、ＯＵＴＰＵＴ＝ＣＨＥＣＫを設定し、更新履歴抽出手段３０２でＣＨＥＣＫ情報を出力し、ＳＥＱ＝０を設定しクリアする。その時の更新履歴の状態が、図１０に示す１５０１、１５０２及び１５０３である。
【００５２】
次いで、レプリケーションクライアントシステム４０１の有するレプリケーション制御システム４０２の更新履歴受信反映手段４０３が、図１０に示す１５０１、１５０２及び１５０３の更新履歴抽出ファイルを読み込み、処理を実施する。
図１０に示す１５０３のＣＨＥＣＫ情報を読み込むとステップ７１１においてＳＴＡＴ＝−１を設定し、更新履歴再送手段４０４を用い不整合の可能性のあるデータをマスターデータベースから再度読み込み、ステップ７１７においてレプリカＤＢに正しい値を設定する。
【００５３】
次に、本発明のデータベースレプリケーションシステムの他の実施の形態について説明する。本実施の形態においては、システムダウンが発生した場合に不整合を自動検出する。
システム起動時に、まずシステムダウン処理手段３０５が呼び出され、このシステム起動がシステムダウン後の最初のシステム起動である場合はステップ１１０２においてＯＵＴＰＵＴ＝ＣＨＥＣＫを設定し、更新履歴抽出手段３０２においてＣＨＥＣＫ情報を出力する。
【００５４】
レプリケーションクライアントシステム４０１においては、トランザクション異常終了時と同様に、ＣＨＥＣＫ情報を受取、更新履歴再送手段４０４を呼び出し、不整合の可能性のあるデータをマスターデータベースから再度読み込み、ステップ７１７においてレプリカデータベースに正しい値を設定する。このようなステップを有することにより、システムダウンが発生した場合においても、データの不整合を自動検出し、高速なリカバリが可能となる。
【００５５】
次に、本発明のデータベース自動リカバリ方法について説明する。本発明の自動リカバリ方法は、マスターデータベース、データベース管理システム及びレプリケーション制御システムを有するレプリケーションサーバシステムと、レプリカデータベースを有するレプリケーションクライアントシステムとからなるデータベースレプリケーションシステムを用いてデータベースを自動リカバリする方法であって、前記データベース管理システムが、トランザクションの異常終了を検出すると、当該トランザクションを破棄するステップと、前記レプリケーション制御システムが、前記マスターデータベースの更新履歴を更新履歴抽出ファイルに書き込むステップと、前記レプリケーション制御システムが、前記マスターデータベースのトランザクション処理が完了した後に当該トランザクションの異常終了が検出された場合にはその旨を示す更新履歴であるチェック情報を前記更新履歴抽出ファイルに書き込むステップと、前記レプリケーションクライアントシステムが、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記チェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定するステップとを有することを特徴とする。
【００５６】
本発明のデータベース自動リカバリ方法は、上述した本発明のデータベースレプリケーションシステムを用いて実施することができる。
上記各ステップについては、上述した本発明のデータベースレプリケーションシステムの動作の説明において説明した通りである。
【００５７】
また、本発明のデータベース自動リカバリ方法においては、前記レプリケーション制御システムが、システム起動時において当該システム起動がシステムダウン後の最初のシステム起動である場合にはその旨を示す更新履歴であるチェック情報を更新履歴抽出ファイルに書き込むステップと、前記レプリケーションクライアントシステムが、前記更新履歴抽出ファイルから読み込んだ更新履歴が、前記システムダウンについてのチェック情報に係る更新履歴である場合には、前記マスターデータベースと前記レプリカデータベースとの不整合データを前記マスターデータベースから読み込み、前記レプリカデータベースに正しい値を設定するステップとを有している。これらの各ステップについても、上述した本発明のデータベースレプリケーションシステムの動作の説明において説明した通りである。
【００５８】
次に、本発明のデータベース自動リカバリ方法をコンピュータに実行させるプログラムについて説明する。本発明のデータベース自動リカバリ方法をコンピュータに実行させるプログラムとは、コンピュータの動作を制御し、以上に説明した本発明のデータベース自動リカバリ方法を実施するためのプログラムであり、プログラム制御されたコンピュータがプログラムにより指令され、以上に説明した本発明のデータベース自動リカバリ方法を実施するためのプログラムである。
【００５９】
【発明の効果】
以上詳述した通り、本発明のデータベースレプリケーションシステムは、トランザクションの異常終了時やシステムダウン時においても、データベースの参照／更新業務を停止したり、レプリケーションを停止することなく、データベースのレプリケーションを実施することが可能なシステムである。
また、本発明のデータベース自動リカバリ方法によれば、トランザクションの異常終了時やシステムダウン時においても、データベースの参照／更新業務を停止したり、レプリケーションを停止することなく、データベースのレプリケーションを実施することができる。
【図面の簡単な説明】
【図１】  本発明のデータベースレプリケーションシステムの構成を示す図である。
【図２】  更新履歴抽出手段における動作の流れを示す図である。
【図３】  トランザクションシーケンス監視手段における動作の流れを示す図である。
【図４】  更新履歴受信反映手段３における動作の流れを示す図である。
【図５】  データベース更新命令実行の動作の流れを示す図である。
【図６】  ＣＯＭＭＩＴ命令実行の動作の流れを示す図である。
【図７】  ＲＯＬＬＢＡＣＫ命令実行の動作の流れを示す図である。
【図８】  システムダウンの際の動作の流れを示す図である。
【図９】  トランザクションの一例を示す図でる。
【図１０】  更新履歴の一例を示す図である。
【符号の説明】
１０１  レプリケーションサーバシステム
２０１  データベース管理システム
２０２  データベース参照処理手段
２０３  データベース更新処理手段
２０４  トランザクション確定手段
２０５  更新ジャーナル処理手段
２０６  トランザクション破棄手段
２０７  マスターデータベース
２０８  更新ジャーナル
３０１  レプリケーション制御システム
３０２  更新履歴抽出手段
３０３  トランザクションシーケンス監視手段
３０４  更新履歴送信手段
３０５  システムダウン処理手段
３０６  更新履歴抽出ファイル
４０１  レプリケーションクライアントシステム
４０２  レプリケーション制御システム
４０３  更新履歴受信反映手段
４０４  更新履歴再送手段
【図１】
0003797141.tif 000002
【図２】
0003797141.tif 000003
【図３】
0003797141.tif 000004
【図４】
0003797141.tif 000005
【図５】
0003797141.tif 000006
【図６】
0003797141.tif 000007
【図７】
0003797141.tif 000008
【図８】
0003797141.tif 000009
【図９】
0003797141.tif 000010
【図１０】
0003797141.tif 000011