(57)【特許請求の範囲】
【請求項１】
第１のＤＢＭＳが動作する第１のプロセッサシステムと前記第１のプロセッサシステムに接続された第１の記憶サブシステムを有する主システムと、第２のＤＢＭＳが動作する第２のプロセッサシステムと前記第２のプロセッサシステムに接続された第２の記憶サブシステムを有する副システムを備え、前記第１の記憶サブシステムと前記第２の記憶サブシステムが接続されているシステムにおけるデータ二重化制御方法であって、
前記第１のＤＢＭＳは、前記第１のプロセッサシステムの指示に応じて、キャッシュに格納された前記第１のＤＢＭＳで入出力されるデータベース表データ（以下、ＤＢ表データ）を前記第１の記憶サブシステムのデータベース表（以下、ＤＢ表）に強制的に書き出し、かつ、書き出された前記ＤＢ表の前記ＤＢ表データに対する以後の更新要求が起こっても前記ＤＢ表データの更新を保留し、
前記第１の記憶サブシステムの前記ＤＢ表に強制的に書き出した前記ＤＢ表データを前記第１の記憶サブシステムのリモートコピー用バッファに格納し、
前記第１の記憶サブシステムは、前記第１のプロセッサシステムの指示に応じて、前記第１の記憶サブシステムの前記リモートコピー用バッファに格納された前記ＤＢ表データを強制的に前記第２の記憶サブシステムのＤＢ表に転送して前記ＤＢ表データを複写して二重化し、以後のＤＢ表データの転送を中断し、該第１と第２の記憶サブシステムのＤＢ表を整合のとれた状態にし、
前記第２のＤＢＭＳが整合のとれた複写後のＤＢ表を参照可能にすることを特徴とするデータ二重化制御方法。
【請求項２】
第１のＤＢＭＳが動作する第１のプロセッサシステムと前記第１のプロセッサシステムに接続された第１の記憶サブシステムを有する主システムと、第２のＤＢＭＳが動作する第２のプロセッサシステムと前記第２のプロセッサシステムに接続された第２の記憶サブシステムを有する副システムを備え、前記第１の記憶サブシステムと前記第２の記憶サブシステムが接続されているシステムにおけるデータ二重化制御方法であって、
前記第１のＤＢＭＳは、前記第１のプロセッサシステムの指示に応じて、キャッシュに格納された前記第１のＤＢＭＳで入出力されるデータベース表データ（以下、ＤＢ表データ）を前記第１の記憶サブシステムのデータベース表（以下、ＤＢ表）に強制的に書き出し、かつ、書き出された前記ＤＢ表の前記ＤＢ表データに対する以後の更新要求が起こっても前記ＤＢ表データの更新を保留し、
前記第１の記憶サブシステムは、前記第１のプロセッサシステムの指示に応じて、自記憶サブシステムのＤＢ表のＤＢ表データを前記第２の記憶サブシステムのＤＢ表に転送してＤＢ表データを複写して二重化し、以後のＤＢ表データの転送を中断し、該第１と第２の記憶サブシステムのＤＢ表を整合のとれた状態にし、
前記第２のＤＢＭＳが整合のとれた複写後のＤＢ表を参照可能し、
前記第１のＤＢＭＳは、前記ＤＢ表を変更する内容を前記第１の記憶サブシステムのログファイルに全て記録し、前記ＤＢ表のデータの更新が保留された場合、前記ログファイルの記録内容に基づき前記ＤＢ表の内容を、更新が保留されなかった状態と同じ状態に復元することを特徴とするデータ二重化制御方法。
【請求項３】
第１のＤＢＭＳが動作する第１のプロセッサシステムと前記第１のプロセッサシステムに接続された第１の記憶サブシステムを有する主システムと、第２のＤＢＭＳが動作する第２のプロセッサシステムと前記第２のプロセッサシステムに接続された第２の記憶サブシステムを有する副システムを備え、前記第１の記憶サブシステムと前記第２の記憶サブシステムが接続されているシステムにおけるデータ二重化制御方法であって、
前記第１のＤＢＭＳは、前記第１のプロセッサシステムの指示に応じて、キャッシュに格納された前記第１のＤＢＭＳで入出力されるＤＢ表データを前記第１の記憶サブシステムのＤＢ表に強制的に書き出し、かつ、書き出された前記ＤＢ表の前記ＤＢ表データに対する以後の更新要求が起こっても前記ＤＢ表データの更新を保留し、
前記第１の記憶サブシステムの前記ＤＢ表に強制的に書き出した前記ＤＢ表データを前記第１の記憶サブシステムのリモートコピー用バッファに格納し、
前記第１の記憶サブシステムは、二重化の指示に応じて前記第１の記憶サブシステムの前記リモートコピー用バッファに格納された前記ＤＢ表データを前記第２の記憶サブシステムのＤＢ表に強制的に転送してＤＢ表データを複写して二重化し、以後のＤＢ表データの転送を中断し、前記第１の記憶サブシステムと前記第２の記憶サブシステムのＤＢ表を整合のとれた状態にし、
前記第２のＤＢＭＳが整合のとれた複写後のＤＢ表を参照可能にすることを特徴とするデータ二重化制御方法。
【請求項４】
第１のＤＢＭＳが動作する第１のプロセッサシステムと前記第１のプロセッサシステムに接続された第１の記憶サブシステムを有する主システムと、第２のＤＢＭＳが動作する第２のプロセッサシステムと前記第２のプロセッサシステムに接続された第２の記憶サブシステムを有する副システムを備え、前記第１の記憶サブシステムと前記第２の記憶サブシステムが接続されているシステムにおけるデータ二重化制御方法であって、
前記第１のＤＢＭＳは、前記第１の記憶サブシステムの指示に応じて、キャッシュに格納された前記第１のＤＢＭＳで入出力されるＤＢ表データを前記第１の記憶サブシステムのＤＢ表に強制的に書き出し、かつ、書き出された前記ＤＢ表の前記ＤＢ表データに対する以後の更新要求が起こっても前記ＤＢ表データの更新を保留し、
前記第１の記憶サブシステムは、前記第１の記憶サブシステムの前記ＤＢ表の前記ＤＢ表データを前記第２の記憶サブシステムのＤＢ表に転送してＤＢ表データを複写して二重化し、以後のＤＢ表データの転送を中断し、該第１と第２の記憶サブシステムのＤＢ表を整合のとれた状態にし、
前記第２のＤＢＭＳが整合のとれた複写後のＤＢ表を参照可能し、
前記第１のＤＢＭＳは、前記ＤＢ表を変更する内容を前記第１の記憶サブシステムのログファイルに全て記録し、前記ＤＢ表のデータの更新が保留された場合、前記ログファイルの記録内容に基づき前記ＤＢ表の内容を、更新が保留されなかった状態と同じ状態に復元することを特徴とするデータ二重化制御方法。
【請求項５】
第１のプロセッサシステムに接続され、第１の外部記憶制御装置と第１の外部記憶装置を有する第１の記憶サブシステムと、第２のプロセッサシステムに接続され、第２の外部記憶制御装置と第２の外部記憶装置を有する第２の記憶サブシステムを備え、前記第１の外部記憶制御装置と前記第２の外部記憶制御装置とが接続された二重化した記憶サブシステムであって、
前記第１の外部記憶制御装置は、前記第１のプロセッサシステム内のキャッシュに記憶されたデータを前記第１の外部記憶装置に強制的に書き出す手段と、前記第１の外部記憶装置に書き込まれたデータに対する以後の更新要求が起こっても前記データの更新を保留する更新保留手段と、前記第１の外部記憶装置に強制的に書き出したデータを前記第１の外部記憶制御装置内のリモートコピー用バッファに格納する手段と二重化の指示に応じて前記リモートコピー用バッファ内の前記データを前記第２の記憶サブシステムに強制的に転送して該データを二重化する手段と、前記データの前記第２の記憶サブシステムへの転送後、以後の前記第１の外部記憶装置から前記第２の記憶サブシステムへのデータの転送を中断する手段を有し、
前記第１の記憶サブシステムと前記第２の記憶サブシステムに記憶されたデータを整合のとれた状態にすることを特徴とする二重化した記憶サブシステム。
【請求項６】
請求項５記載の二重化した記憶サブシステムにおいて、
前記第１の外部記憶制御装置と前記第２の外部記憶制御装置の間を専用の通信線で結合し、データ通信を行うようにすることを特徴とする二重化した記憶サブシステム。
【請求項７】
請求項５記載の二重化した記憶サブシステムにおいて、
前記第１の外部記憶制御装置と前記第２の外部記憶制御装置の間をスイッチまたはネットワークで結合し、データ通信を行うようにすることを特徴とする二重化した記憶サブシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータの二重化に係り、特に、ＤＢＭＳのデータに対するデータ二重化制御方法およびデータ二重化のための二重化した記憶サブシステムに関する。
【０００２】
【従来の技術】
最近、データウエアハウスシステムと呼ばれる、業務上データ解析システムが普及してきている。
データウエアハウスはデータベース管理システム（ＤＢＭＳ）であり、そのデータベースの元データは、一般に基幹業務用データベースからデータを抽出して作成している。
またデータウエアハウスシステムは、大量のデータに対し多角的な解析を行うため、多量のＣＰＵパワーを消費する。
このため、基幹業務システムとは別のシステムで構築され、ＬＡＮ（ローカルエリアネットワーク）やＷＡＮ（ワイドエリアネットワーク）を用いてデータ通信可能な構成になっている。
一般に基幹業務システムからデータウエアハウスシステムへのデータのロードは次のような手順で行われている。
（１）基幹業務システム上で、基幹業務用ＤＢＭＳが、必要なデータの抽出。
（２）上記抽出データを、ＦＴＰ（ファイル転送プログラム）等により、データウエアハウスシステムへ転送。
（３）データウエアハウスシステム上で、上記転送されたデータを、データウエアハウス用データベースへロード。
上記手順において、（２）で転送される抽出データの大きさは、大規模な企業では数十ギガバイト以上にもなる。
そしてこのデータ転送は、一般にＬＡＮ／ＷＡＮを用いて行っていため、データ転送に非常に時間がかかる。
さらに転送中はＬＡＮ／ＷＡＮのレスポンスが下がり、他の目的でＬＡＮ／ＷＡＮを利用しているユーザにまで影響が及ぶという問題がある。
また（１）のデータ抽出においても、データ抽出のために基幹業務システムのＣＰＵパワーが消費され、本来の基幹業務のレスポンスが悪化するという問題点もある。
【０００３】
このデータ転送の問題点は、リモートコピー等、ディスクシステムが自動的にデータの二重化を行う方式を用いて、予め事前に基幹業務のデータをデータウエアハウスに送っておくことにより解決されるように見える。
すなわち基幹業務データベース表（ＤＢ表）のコピーを、データウエアハウスシステム側に事前に生成しておくのである。
これにより、上記手順の（２）が省略でき、下記に示すような手順でデータウエアハウスへのデータロードが実行できる。
（１）データウエアハウスシステム上で、コピーされた基幹業務データベース表データから、必要なデータを抽出。
（２）データウエアハウスシステム上で、上記抽出されたデータを、データウエアハウス用データベースへロード。
【０００４】
【発明が解決しようとする課題】
前述した方式は、データ抽出処理もデータウエアハウス側に移管され、基幹業務システムの負荷を減らすという点でも良い選択肢のように見える。
しかしデータベース表データの整合に関し、新たな問題が発生する。
ＤＢＭＳは、自身内にデータベース表データの一部を保持するキャッシュ（ＤＢバッファ）を持っている。
このため、ＤＢ表データの更新が起こっても、直ぐにディスク上のＤＢ表データへ反映されない。
また更新されるタイミングも任意である。
すなわち、任意の時点では基幹業務システムのディスクシステム上のＤＢ表データは整合性が取れた状態とは限らないため、それをコピーしたデータも整合性が取れた状態とは限らない。
本発明の目的は、データをＦＴＰ等のファイル転送で送る代わりに、リモートコピー等ディスクシステムが自動的に事前にデータの二重化を行う方式を用いて、ＤＢ表データをコピーしておき、データ転送時間を削減する方式において、コピー先のデータがデータベース表として整合性の取れたデータであることを保証する手段を提供することにある。
これにより、データの転送時間を削減すると共に、基幹業務システム上でのデータ抽出処理を、データウエアハウスシステム側にオフロードでき、データ抽出処理時における基幹業務システムのレスポンス低下も回避できる。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、本発明は、
第１のＤＢＭＳが動作する第１のプロセッサシステムと該第１のプロセッサシステムに接続された第１の記憶サブシステムを有する主システムと、第２のＤＢＭＳが動作する第２のプロセッサシステムと該第２のプロセッサシステムに接続された第２の記憶サブシステムを有する副システムを備え、該第１と第２の記憶サブシステムが接続されているシステムにおけるデータ二重化制御方法であり、前記第１のＤＢＭＳは、前記第１のプロセッサシステムの指示に応じて、キャッシュに格納された該第１のＤＢＭＳで入出力されるデータベース表データ（以下、ＤＢ表データ）を前記第１の記憶サブシステムのデータベース表（以下、ＤＢ表）に強制的に書き出し、該ＤＢ表のＤＢ表データに対する以後の更新要求が起こっても該ＤＢ表データの更新を保留し、
前記第１の記憶サブシステムは、前記第１のプロセッサシステムの指示に応じて、自記憶サブシステムのＤＢ表のＤＢ表データを前記第２の記憶サブシステムのＤＢ表に転送してＤＢ表データを複写して二重化し、以後のＤＢ表データの転送を中断し、該第１と第２の記憶サブシステムのＤＢ表を整合のとれた状態にし、
前記第２のＤＢＭＳが整合のとれた複写後のＤＢ表を参照可能にするようにしている。
【０００６】
また、第１のＤＢＭＳが動作する第１のプロセッサシステムと該第１のプロセッサシステムに接続された第１の記憶サブシステムを有する主システムと、第２のＤＢＭＳが動作する第２のプロセッサシステムと該第２のプロセッサシステムに接続された第２の記憶サブシステムを有する副システムを備え、該第１と第２の記憶サブシステムが接続されているシステムにおけるデータ二重化制御方法であり、
前記第１のＤＢＭＳは、前記第１の記憶サブシステムの指示に応じて、キャッシュに格納された該第１のＤＢＭＳで入出力されるＤＢ表データを該第１の記憶サブシステムのＤＢ表に強制的に書き出し、該ＤＢ表のＤＢ表データに対する以後の更新要求が起こっても該ＤＢ表データの更新を保留し、
前記第１の記憶サブシステムは、自記憶サブシステムのＤＢ表のＤＢ表データを前記第２の記憶サブシステムのＤＢ表に転送してＤＢ表データを複写して二重化し、以後のＤＢ表データの転送を中断し、該第１と第２の記憶サブシステムのＤＢ表を整合のとれた状態にし、
前記第２のＤＢＭＳが整合のとれた複写後のＤＢ表を参照可能にするようにしている。
【０００７】
また、前記第１の記憶サブシステムのＤＢ表に強制的に書き出したＤＢ表データを該第１の記憶サブシステムのリモートコピー用バッファに格納し、
該第１の記憶サブシステムは、二重化の指示に応じて該バッファ内のＤＢ表データを前記第２の記憶サブシステムのＤＢ表に転送してＤＢ表データを複写して二重化するようにしている。
【０００８】
また、前記第１の記憶サブシステムのＤＢ表に強制的に書き出したＤＢ表データの該ＤＢ表における位置情報を該第１の記憶サブシステム内のメモリに記憶しておき、
該第１の記憶サブシステムは、二重化の指示に応じて該メモリ内の位置情報を読み出し、該位置情報の示すＤＢ表の位置に記憶されているＤＢ表データを前記第２の記憶サブシステムのＤＢ表に転送してＤＢ表データを複写して二重化するようにしている。
【０００９】
また、第１のプロセッサシステムに接続され、第１の外部記憶制御装置と第１の外部記憶装置を有する第１の記憶サブシステムと、第２のプロセッサシステムに接続され、第２の外部記憶制御装置と第２の外部記憶装置を有する第２の記憶サブシステムを備え、該第１と第２の外部記憶制御装置が接続された二重化した記憶サブシステムであり、
前記第１の外部記憶制御装置は、前記第１のプロセッサシステム内のキャッシュに記憶されたデータを前記第１の外部記憶装置に強制的に書き出す手段と、該第１の外部記憶装置に書き込まれたデータに対する以後の更新要求が起こっても該データの更新を保留する手段と、該データを前記第２の記憶サブシステムに転送して該データを二重化する手段と、該データの該第２の記憶サブシステムへの転送後、以後の該第１の外部記憶装置から該第２の記憶サブシステムへのデータの転送を中断する手段を有し、
該第１と第２の記憶サブシステムに記憶されたデータを整合のとれた状態にするようにしている。
【００１０】
また、前記第１の外部記憶制御装置は、前記第１の外部記憶装置に強制的に書き出したデータを第１の外部記憶制御装置内のバッファに格納する手段と、二重化の指示に応じて該バッファ内のデータを前記第２の記憶サブシステムに転送して該データを二重化する手段を有するようにしている。
【００１１】
また、前記第１の外部記憶制御装置は、前記第１の外部記憶装置に強制的に書き出したデータの該第１の外部記憶装置における位置情報を第１の外部記憶制御装置のメモリに記憶する手段と、二重化の指示に応じて該メモリ内の位置情報を読み出し、該位置情報の示す該第１の外部記憶装置の位置に記憶されているデータを前記第２の記憶サブシステムに転送して該データを二重化する手段を有するようにしている。
【００１２】
また、前記第１の外部記憶制御装置と第２の外部記憶制御装置の間を専用の通信線で結合し、データ通信を行うようにしている。
【００１３】
また、前記第１の外部記憶制御装置と第２の外部記憶制御装置の間をスイッチまたはネットワークで結合し、データ通信を行うようにしている。
【００１４】
【発明の実施の形態】
次に図１〜図６を用いて本発明の一実施例を説明する。
図２は、ホストコンピュータに接続された単一のディスク制御装置の一構成例を示す。
ディスク制御装置７は、ホストインタフェース２とチャネルパス８によりホストコンピュータ１と接続し、キャッシュメモリ３、共有メモリ２０、ディスク駆動装置５と接続するディスクインタフェース４およびこれらを接続する共通バス６により構成されている。
複数のディスクインタフェースが実装可能である。複数のホストインタフェース２も実装可能であり、この場合接続先のホスト１が同一であるか否かは問わない。本実施例の図２では、各ホストインタフェースが同じホストに接続されている例を示している。
ホストインタフェース２とディスクインタフェース４には、プロセッサが装備されており、それぞれ自律的に動作する。
またキャッシュメモリ３、ＬＡＮインタフェース１１は、複数のホストインタフェース２や複数のディスクインタフェース４から参照可能な共有資源である。
キャッシュメモリ３には、本ディスク制御装置へ書き込まれたデータやディスク駆動装置５から読み出されホストに出力したデータが一時的に保存される。
ディスク制御装置がディスクアレイ機能を持っている場合には、ホストから送られたデータは分割され、複数のディスク駆動装置５に分散して格納される。
本実施例はディスクアレイに対しても適用可能であるが、説明の簡略化のため、以後の説明は通常のディスクに対する動作を例に説明する。
【００１５】
図３を用いてリモートコピーシステムの一構成例を示す。
リモートコピーは、ディスク制御装置が自律的に、指定されたボリウムを他のディスク制御装置にコピーする機能である。具体的は、ホストインタフェース上のプログラムにより実現される。
図３において、９は主システムであり、ホストコンピュータ１ａと、ディスク制御装置７ａと、ディスク駆動装置５ａを有し、２はホストインタフェース２であり、８はチャネルパスである。１０は副システムであり、主システムと同様に、ホストコンピュータ１ｂと、ディスク制御装置７ｂと、ディスク駆動装置５ｂを有し、２はホストインタフェース２であり、８はチャネルパスである。
ここでは、主システム９のディスク駆動装置５ａ中のボリウムＡを、副システム１０のディスク駆動装置５ｂ中へコピーしている。
図３では、主システムと副システムが同一の構成のように見えるが、リモートコピーを行うに当たり、一般には主システムと副システムが、稼働しているソフトウエアも含め同一構成システムである必要はない。
さらに言えば、ここでは便宜的に主システム／副システムと呼んでいるが、一方が他方の待機系である必要もない。例えば主システムが基幹業務システムであり、副システムがデータウエアハウスシステムでも良い。
図３においても、ボリウムＡ以外のボリウムは、異なるアプリケーションが利用している異なる内容のボリウムを仮定している。
【００１６】
リモートコピーの動作は、次のようになる。
まず、ホスト１ａからディスクへの書込要求コマンドに対し、ホストインタフェース＃０は、その書込先のボリウムがリモートコピーの対象になっているか否かを判断する。
リモートコピーの対象になっていない場合は、そのまま書込要求コマンドを処理する。
書込先がリモートコピーの対象になっている場合は、通常通りに書込要求コマンドを処理すると共に、副システム１０のディスク制御装置７ｂと接続されているホストインタフェース＃１を使用して、ホストから受け取ったコマンドと同一の書込要求コマンドをディスク制御装置７ｂに発行する。
これにより、副システム１０のディスク駆動装置５ｂ上に、ボリウムＡの複製が生成される。
ここでホストインタフェースは、入出力コマンドの発行処理と受信処理の両方の機能を備えている。これらの機能はホストインタフェース中のプロセッサの処理により実現されている。
リモートコピーは、コピー先への書込コマンドの発行方法の違いにより、同期リモートコピーと非同期リモートコピーに分類できる。
同期リモートコピーは、主システム９のディスク制御装置７ａがホスト１ａから書込要求コマンドを受け取った後、副システム１０のディスク制御装置７ｂに同一の書込要求コマンドを発行し、その確認応答が返された後に、ホスト１ａに確認応答を返す。
一方非同期リモートコピーは、その名が示すとおり、ホスト１ａへの確認応答を返した後の適当なタイミングでディスク制御装置７ｂへ書込要求コマンドを発行する。
【００１７】
このような処理方法の違いにより、同期リモートコピーと非同期リモートコピーは次のような特徴の差異が生じる。
まず、ホスト１ａから見た書込コマンドの応答時間については、同期リモートコピーは二回の書込コマンドを処理するため、応答時間が従来比約２倍伸びるのに対し、非同期リモートコピーは従来とほぼ同じである。
また非同期リモートコピーは、ディスク制御装置７ｂへの書込要求コマンドを非同期で発行するため、リモートコピーするデータを一時保存しておくバッファが必要となる。このバッファにはキャッシュメモリが利用される。
【００１８】
リモートコピーの開始／終了等は、通常の入出力命令と同様なコマンドを用いホスト上のプログラムから制御される。
主なコマンドを次に述べる。
(1) 初期化＆コピー開始コマンド（コピー先のボリウムの内容をコピー元と同一にするために指定されたボリウムの全内容をコピー先へコピーする（初期化）と共に、ホストから発行された書込要求コマンドに対し、指定されたコピーモード（同期／非同期）でリモートコピーを開始する）。
(2) 中断コマンド（リモートコピーを一時中断する。この後に受け付けた書込要求コマンドに対するリモートコピーデータはバッファに保存しておき、後の再開コマンドに備える）。
(3) 再開コマンド（中断していたリモートコピーを再開する。バッファに保存されているリモートコピーデータに対してもコピーを行う）。
(4) フラッシュコマンド（バッファに保存されているリモートコピーデータを強制的にコピー先へコピーする）。
【００１９】
図４にデータベース管理システム（ＤＢＭＳ）１４とディスク内のＤＢ表１６およびログファイル２１の関係を示す。
ＤＢ表はデータベースのデータである。
ＤＢＭＳはＤＢ表をデータベースバッファ（ＤＢバッファ）１８を通して読み込む。
ＤＢバッファはいわゆるキャッシュであり、最近使用されたデータを格納することにより、ディスクアクセス回数を削減し処理の高速化を図る。
ログファイル２１は、ＤＢバッファ１８やＤＢ表１６の変更内容、コミットの情報等、データベースの障害回復に必要な情報が格納される。
これらＤＢＭＳの機能や処理の詳細に関しては、例えばオーム社発行の「データベースシステムとデータモデル」穂鷹良介著に述べられている。
【００２０】
ところで、ＤＢバッファ１８のキャッシュとしての制御は、いわゆるライトバック方式である。すなわち、更新されたデータはキャッシュが一杯になるまで保存され、直ちにディスク上のＤＢ表１６には書き込まれない。したがってディスク上のＤＢ表１６を見た場合、そのデータは最新データであるとは限らないし、更新されるタイミングも不定である。
これではこのＤＢ表をリモートコピーし、コピー先で参照しても、整合の取れた状態であるとは限らない。
整合の取れた状態とは、任意の時点での最新状態である事と、そのＤＢ表を参照中に内容が変更されない事が保証されている状態である。
【００２１】
ここで、ディスク上のＤＢ表１６を整合の取れた状態にし、リモートコピー先で安全に参照できるように、ＤＢＭＳ１４における処理として次の二つの機能を加える。
一つは、ＤＢバッファ１８の内容を強制的にディスク上のＤＢ表１６に書き出す機能である。これをＤＢバッファのフラッシュと呼ぶ。
もう一つは、ＤＢバッファが一杯になっても、その内容をディスク上のＤＢ表１６に書き込まないようにする機能である。これをＤＢ表への書込抑止と呼ぶ。
これらの機能は、すべてＤＢＭＳ１４のソフトウエアによって容易に実現される。
例えばＤＢ表１６への書込抑止機能は、ログファイル２１を利用することにより実現される。
ディスク上のＤＢ表１６への書込を単純に抑制しても、ログファイル２１には変更すべき内容を全て記録するため、ＤＢ表１６の変更内容が失われることはない。
そして一時的にディスク上のＤＢ表１６の内容の更新を抑止しても、コピー元のＤＢＭＳ側では、任意の時点でログファイル２１の内容を参照することにより、正常に内容の更新が行われた場合と同じ状態に復元できる。
【００２２】
これら、ＤＢバッファのフラッシュ、ＤＢ表への書込抑止、ＤＢ表への書込再開等の指示は、ＤＢＭＳへの通常の検索問い合わせと同様な方式、いわゆるＳＱＬコマンドによって提供される。
したがって、ホスト上やホストとＬＡＮ等で接続された任意のシステムから、これらの機能を利用及び制御することが出来る。
【００２３】
図５はホストコンピュータにＤＢＭＳを備えている場合のデータの二重化を行うシステムを示す。
図５において、９は主システム、１０は副システムであり、１ａ、２ａはそれぞれ主、副のホストコンピュータ、７ａ、７ｂはそれぞれ主、副のディスク制御装置、５ａ、５ｂはそれぞれ主、副のディスク駆動装置、１４ａ、１４ｂはそれぞれ主、副のＤＢＭＳ、１５ａ、１５ｂはそれぞれ主、副のエージェント、１８ａ、１８ｂはそれぞれ主、副のＤＢバッファ、１６、１７はそれぞれＤＢ表、８はチャネルパスである。
【００２４】
図５のシステム構成に対し、整合の取れたＤＢ表をリモートコピーし、副システム側で参照する手順を図１に示す。
ここでエージェント１５ａ、１５ｂとは、それぞれのホスト上で動作するプログラムであり、ＤＢＭＳ１４ａ、１４ｂやディスク制御装置７ａ、７ｂの適切な制御を行う。
まず、主ホスト上エージェント１５ａは、ＤＢＭＳ１４ａに対し、ＤＢバッファ中データのディスクへのフラッシュのコマンドを発行し、次いで、ディスク上のＤＢ表データ１６への書込を抑止するコマンドを発行し、ＤＢ表１６を整合の取れた状態にする。
これらの手続きはＤＢＭＳ１６をいわゆるバックアップモードに移行する手続きと同様である。バックアップはデータをレストアした場合を考慮し、整合の取れた状態で行われるのが一般的だからである。
次に、リモートコピーの転送元のＤＢ表１６（以下、主ＤＢ表１６）と転送先のＤＢ表１７（以下、副ＤＢ表１７）の内容を一致させるために、主ディスク制御装置７ａ内のリモートコピー用のバッファに入っているデータがあれば、強制的にリモート側へ転送させる。
これは非同期リモートコピーの場合にだけ必要である。同期リモートコピーの場合は、主システムのディスク制御装置７ａで書き込まれた内容は直ちに副システムへ反映されるので必要ない。
そして、リモートコピー終了後、以後のリモートコピーを中断させる。これで、主システム中の主ＤＢ表１６が更新されても、その影響が副システムの副ＤＢ表１７に及ばないようにする。
これにより、副システム中のＤＢＭＳ１４ｂは任意の時点のＤＢ表の内容を参照可能となる。
また引き続き、ＤＢＭＳ１４ａを通常モードに移行、すなわちＤＢ表データ１６への書込を再開するコマンドを発行する。この再開コマンドは必須ではない。
しかし、あまり長い間主ＤＢ表１６の書込を抑止していると、ログファイルを利用して主ＤＢ表１６の内容を抑止が無かった状態に復元する時に、復元する箇所が多くなり復元に時間がかかる。
【００２５】
さらに副ホスト上エージェント１５ｂに対し、ＬＡＮネットワーク１９を通じて動作開始を指示する。
副ホスト上エージェント１５ｂは、ＤＢＭＳ１４ｂに対し、副ＤＢ表１７をオンラインにする事を指示する。
これによりＤＢＭＳ１４ｂは副ＤＢ表１７を利用することが可能になる。
この後、副ホスト上エージェント１５ｂは、ＤＢＭＳ１４ｂを通じて副ＤＢ表１７を参照する任意のプログラムを起動、もしくは準備が整った事を通知することにより、本発明の目的が達せられる。
ここで、エージェントは主システム副システムそれぞれに存在する必要は無い。例えば主システムだけに存在していても本発明の目的は達せられる。
この場合副システムのＤＢＭＳ１４ｂへの指示等は、ＬＡＮネットワーク１９を通じて行う。
【００２６】
また同様に、エージェントの機能がディスク制御装置に内蔵されている構成でも本発明の目的は達せられる。
この場合エージェントプログラムを実行するのは、ディスク制御装置内のホストインタフェースのプロセッサである。
ディスク制御装置もＬＡＮインタフェース１１を持っているため、ＬＡＮネットワークを通してホストや他のディスク制御装置と通信及び処理の同期ができる。この構成における手順を図６に示す。
【００２７】
図３および図５において、ディスク制御装置７ａ、７ｂ間はチャネルパス８のような専用の通信線で接続されリモートコピーを行っている構成を説明しているが、図７のように、ホストおよびディスク制御装置間をスイッチやネットワークで結合し、リモートコピーやデータの二重化を行う構成に対しても本発明は適用可能である。
【００２８】
これまでの実施例では、非同期リモートコピーに関して、ディスク制御装置内のキャッシュメモリを、リモート側へデータを書き込むためデータを一時保存しておくバッファとして利用していると述べた。
しかし、データのバッファリングに関しては、これ以外にも次に述べるようなやり方がある。
それは、書き込まれたデータそのものをキャッシュにバッファリングするのではなく、書き込まれたデータのディスク上の位置（ボリウム番号、シリンダ番号、ヘッド番号、レコード番号等）の情報をログとして記憶するものである。
すなわち、リモートコピー機能が有効になっていてもコピー元のディスク制御装置のボリウムにデータが書かれることを利用し、キャッシュ上ではなくディスクドライブ上に保存しておくものである。
【００２９】
このやり方では、図８に示すような書き込みデータのログ情報を使用する。
このログは共有メモリ上に置かれ、ホストからの書き込み要求を受けたホストインタフェースによって各エントリが生成される。
図８の最初の４つのエントリは、（ボリウム番号０、シリンダ番号１、ヘッド番号１、レコード番号１）、（ボリウム番号０、シリンダ番号１、ヘッド番号１、レコード番号２）、（ボリウム番号０、シリンダ番号１、ヘッド番号１、レコード番号３）、（ボリウム番号０、シリンダ番号５、ヘッド番号１、レコード番号１）、の４個のデータが更新されたことを示す。
リモートと接続されたホストインタフェースは、このログを参照して書き込まれたデータの位置の情報を得ると共に、そのデータをリモート側へコピーする。
コピーが完了したログのエントリは、リモートと接続されたホストインタフェースにより削除される。
このようなログを使用することにより、キャッシュ上でのバッファリングより少ない情報量で、リモートへコピーすべきデータをバッファリングできる。
【００３０】
またログを応用すると、不必要なデータ転送の削減も達成できる。その例を次に示す。
ここで、銀行の口座残高のデータベースが二重化されており、副ホスト上のデータベースはこのデータを一日に一回（例えば夜中）にしか参照しないような運用を想定する。
このようなケースで、顧客が一日に複数回預金の出し入れを行った場合、各出し入れ時毎に副ホスト側のディスク制御装置に預金残高のデータが送られる。
しかし、副ホスト側のデータベースは一日に一回しかデータを参照しないため、実際には最後のデータだけを送れば必要十分である。
このような不必要なデータ転送の防止は、リモートコピーによるデータ二重化を間欠的に行うことにより実現できる。すなわちリモートコピーの中断と再開を一定時間毎に繰り返すのである。
中断状態があまり長くなると、コピーするデータの情報を格納するログがオーバフローする可能性があるので、主ホスト側のデスク制御装置のデータの更新頻度に応じて適当に調整する。
勿論、副ホスト側のデータベースがデータを参照する場合は、リモートコピーを再開させ、コピー元とコピー先のボリウムの内容を同じにしておく。
【００３１】
さらに、リモートコピーの中断と再開の繰り返しと共に、ログの取り扱いも次のように変更する。
リモートコピーの中断時間中は、更新されたデータの位置をログに登録するときに、既に同じ位置の更新がログに登録されていた場合には古い登録を抹消するのである。
このようにすることにより、中断時間中に複数回更新されたデータは最後のデータだけが送信されるようになり、ディスク制御装置間での不必要なデータ転送が抑止できる。
【００３２】
最後に、本実施例では図５のように別のディスク制御装置７ａ、７ｂ間でリモートコピーを行っている構成を説明している。
しかしコピー先が同一ディスク制御装置の場合、すなわちボリウム二重化を行っている構成に関しても、図１に示す手順において、リモートコピーを二重化と読み替えることにより適用可能であり本発明の目的は達せられる。
【００３３】
【発明の効果】
本発明によれば、データをＦＴＰ等のファイル転送で送る代わりに、リモートコピー等ディスクシステムが自動的に事前にデータの二重化を行う方式を用いて、ＤＢ表データ等のデータをコピーしておき、データ転送時間を削減する方式において、コピー先のＤＢ表データ等のデータが整合性の取れたデータであることを保証することが可能になる。
これにより、データの転送時間を削減すると共に、基幹業務システム上でのデータ抽出処理を、データウエアハウスシステム側にオフロードでき、データ抽出処理時における基幹業務システムのレスポンス低下も回避できる。
【図面の簡単な説明】
【図１】本発明における、整合の取れたＤＢ表をリモートコピーし、副システム側で参照する手順の一例を示す図である。
【図２】ホストコンピュータに接続された単一のディスク制御装置の一構成例を示す図である。
【図３】リモートコピーシステムの一構成例を示す図である。
【図４】データベースシステムとディスク上のＤＢ表との関係の例を示す図である。
【図５】ホストコンピュータにＤＢＭＳを備えている場合のリモートコピーシステムの一例を示す図である。
【図６】本発明における、整合の取れたＤＢ表をリモートコピーし、副システム側で参照する手順の他の例を示す図である。
【図７】ホストおよびディスク制御装置間をスイッチで接続した構成の一例を示す図である。
【図８】リモートへコピーするデータの位置を示すログの一構成例を示す図である。
【符号の説明】
１、１ａ、１ｂ  ホストコンピュータ
２  ホストインタフェース
３  キャッシュメモリ
４  ディスクインタフェース
５、５ａ、５ｂ  ディスク駆動装置
６  共通バス
７、７ａ、７ｂ  ディスク制御装置
８  チャネルパス
９  主システム
１０  副システム
１１  ＬＡＮインタフェース
１２  主記憶
１３  プロセッサ
１４、１４ａ、１４ｂ  データベース管理システム
１５ａ、１５ｂ  エージェント
１６  データベース表
１７  コピーされたデータベース表
１８、１８ａ、１８ｂ  ＤＢバッファ
１９  ＬＡＮネットワーク
２０  共有メモリ
２１  ログファイル
２２  チャネルパススイッチ
【図１】
0004282030.tif 000002
【図２】
0004282030.tif 000003
【図３】
0004282030.tif 000004
【図４】
0004282030.tif 000005
【図５】
0004282030.tif 000006
【図６】
0004282030.tif 000007
【図７】
0004282030.tif 000008
【図８】
0004282030.tif 000009