(57)【要約】  サーバの集合は、ミラーリングされたデータベースの既存データ冗長性を利用してページ破壊をリストアする。ページリストアは、バックアップ媒体からのリストアに時間的および／または管理上のコストを一切不要にし、かつ修復に関連するデータ消失なしで行なうことができる。データベースミラーからのオンラインページリストアは、破壊が検出されるとコンピュータシステムによって自動的に開始し、実行することができる。個々のページまたはページセットではなくファイルまたはデータベース全体をリストアすることができる。このメカニズムは、主サーバ(principal server)上の破壊ページをミラーからリストアするだけでなく、ミラー上の破壊ページを主サーバからリストアするためにも使用することができる。データベースミラーからのオンラインページリストアによると、データおよびログバックアップを探索／ロード／スキャンし、適用しなくてもページデータの回復ができるので、データ回復が効率化され、潜在的に自動化される。
2009505280.tif 000002
【特許請求の範囲】
【請求項１】
情報をリストアするシステムであって、該システムは、
第１データベース内の破壊情報を第２データベース内の対応する未破壊情報からリストアするように構成されたモジュールを含み、該モジュールは、
第１データベース内の破壊情報を検出し、そこでは第１データベースにストアされた情報であって、破壊情報を除く情報はすべてがアクセス可能のままになっており、
第１データベース内の破壊情報に対応する未破壊情報の要求を第２データベースに送信し、
第１データベースを第２データベースからの未破壊情報で更新する
ことを含むことを特徴とするシステム。
【請求項２】
請求項１に記載のシステムにおいて、第１データベースはミラーデータベースであり、第２データベースは主データベースであることを特徴とするシステム。
【請求項３】
請求項１に記載のシステムにおいて、第１データベースは主データベースであり、第２データベースはミラーデータベースであることを特徴とするシステム。
【請求項４】
請求項３に記載のシステムにおいて、ミラーデータベースは複数のミラーデータベースのうちの第１ミラーデータベースであることを特徴とするシステム。
【請求項５】
請求項４に記載のシステムにおいて、第１ミラーデータベースは現況に基づいて選択されることを特徴とするシステム。
【請求項６】
請求項１に記載のシステムにおいて、前記モジュールは、破壊情報が検出されたとき破壊情報を第２データベースから自動的にリストアするように構成されたロジックを含むことを特徴とするシステム。
【請求項７】
請求項１に記載のシステムにおいて、第２データベースは第１データベース内の破壊情報に向けられたクエリに供されることを特徴とするシステム。
【請求項８】
請求項１に記載のシステムにおいて、破壊情報は第１データベースのページ、第１データベースのページセット、または第１データベースを含むことを特徴とするシステム。
【請求項９】
第１データベースにストアされた破壊情報をリストアする方法であって、該方法は、
第１データベース内の破壊情報が検出されたことに応答して、破壊情報のリストアを人間の介入なしで開始し、第１データベースは、第１データベースのうち破壊情報がストアされている部分を除きアクセス可能のままになっており、
ページまたはページセットに対する要求を第２データベースに送信し、前記ページまたはページセットは第１データベース内の破壊情報に対応している、第２データベース内の未破壊情報を含み、
前記対応する未破壊情報を第２データベースから受信し、該対応する未破壊情報を第１データベースに適用する
ことを含むことを特徴とする方法。
【請求項１０】
請求項９に記載の方法において、さらに、
ページＩＤまたはページ範囲ＩＤおよび破壊情報が検出されたときの時点に関連するログシーケンス番号を第２データベースに送信することを含むことを特徴とする方法。
【請求項１１】
請求項９に記載の方法において、さらに、第１データベース内の破壊情報に向けられた要求を第２データベースから供することを含むことを特徴とする方法。
【請求項１２】
請求項９に記載の方法において、さらに、第２データベースを現況またはレスポンスタイムに基づいて選択することを含むことを特徴とする方法。
【請求項１３】
請求項９に記載の方法において、さらに、第１データベース内の未破壊情報をそのまま残しておくことを含むことを特徴とする方法。
【請求項１４】
請求項９に記載の方法において、第２データベースは複数のミラーデータベースのうちの第１ミラーデータベースであることを特徴とする方法。
【請求項１５】
請求項１４に記載の方法において、第１データベースにリストアされる第１ページ範囲に対する第１要求を第１ミラーデータベースに送信することにより、および第１データベースにリストアされる第２ページ範囲に対する第２要求を複数のミラーデータベースのうちの第２ミラーデータベースに送信することにより、負荷分散が行なわれることを特徴とする方法。
【請求項１６】
コンピュータ実行可能命令を収めたコンピュータ可読媒体であって、該コンピュータ実行可能命令は、
第１データベース内の破壊情報を検出し、第１データベースは主データベースを含み、
ユーザインプットを受信し、該ユーザインプットは、リストアする主データベースのページのページＩＤであって、該ページは第１データベースのうち破壊情報がストアされている部分を含むものと、ミラーデータベースであって、該ユーザインプットのページＩＤで特定されたミラーデータベースの対応するページに対する要求が送信されるミラーデータベースのうちの少なくとも１つを含み、
ミラーデータベースを特定し、破壊情報のリストアを人間の介入なしで開始し、第１データベースは第１データベースのうち破壊情報がストアされているページを除きアクセス可能のままになっており、
ページまたはページセットに対する要求を第２データベースに送信し、該ページまたはページセットは第１データベースの破壊情報に対応する、第２データベース内の未破壊情報を含んでおり、
前記対応する未破壊情報を第２データベースから受信し、該未破壊情報を第１データベースに適用する
ためのものであることを特徴とするコンピュータ可読媒体。
【請求項１７】
請求項１６に記載のコンピュータ可読媒体において、さらに、
第１データベース内の未破壊情報をそのまま残しておくためのコンピュータ実行可能命令を含むことを特徴とするコンピュータ可読媒体。
【請求項１８】
請求項１６に記載のコンピュータ可読媒体において、さらに、
第２データベースを第２データベースの現況に基づいて選択するためのコンピュータ実行可能命令を含み、該第２データベースは複数のミラーデータベースのうち第１データベースに関連する第１ミラーデータベースを含むことを特徴とするコンピュータ可読媒体。
【請求項１９】
請求項１６に記載のコンピュータ可読媒体において、さらに、
第２データベースを第２データベースのレスポンスタイムに基づいて選択するためのコンピュータ実行可能命令を含み、第２データベースは複数のミラーデータベースのうち第１データベースに関連する第１ミラーデータベースを含むことを特徴とするコンピュータ可読媒体。
【請求項２０】
請求項１６に記載のコンピュータ可読媒体において、さらに、
第１ページ番号範囲を第１ミラーに送信し、第２ページ番号範囲を第２ミラーに送信することによって破壊情報のリストアを負荷分散するためのコンピュータ実行可能命令を含むことを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベースミラーからのオンラインページリストアに関する。
【背景技術】
【０００２】
コンピュータにストアされたデータは、毎日のように消失または損傷している。事故、人的エラー、ウイルス攻撃、ハードウェア障害および電力問題は、コンピュータにストアされた情報の消失または障害が起り得る数千の理由の一部にすぎない。予想外のデータ消失から保護するために、賢明な人々（および企業）は自身（自社）のファイルのバックアップを取っているのが普通である。バックアップは、オリジナルの障害または消失が起った場合の使用に備えて、ある種の取り外し可能媒体上にファイルまたはファイルセットのコピーを作成することだけで取ることができるが、バックアップユーティリティを使用するときは、そのコピー時にデータを圧縮しておくこともできる。データ消失またはデータ破壊が発生したとき、損傷または消失したファイル（または複数のファイル）はバックアップからリストア（復元）されるのが代表的である。ここで言う「リストア(restoring)」の意味は、取り外し可能媒体からコピーしてコンピュータに戻すこと、あるいはデータユーティリティが使用された場合は、データをコピーし、伸張（decompress：圧縮解除ともいう）することである。ファイルが小さいとき、およびバックアップが用意されているときは、ファイルをバックアップからリストアすることは情報を取り戻すのに便利で、効率的な方法である。
【０００３】
ファイルが時間と共に変化するサイズ、重要性および／または度合いが増加すると、定期的にファイルのコピーをとるだけでは、それほど魅力がなくなる。例えば、ある企業が頻繁に変化する非常に大きなファイルセットが確実に利用できることに依存していると想定する。このことは、例えば、航空会社によって維持されているデータベースファイルに起っていることである。データのスナップショットを定期的にとること（特定の時点に取られるファイルとディレクトリのセット）は、最早十分でないことがある。ミラーリング(mirroring)はより賢明な選択である場合がある。コンピューティングにおけるミラーとは、データの正確な複製コピーが別々のマシン上に存在するようにデータセットを直接にコピーしたものである。これらのコピーは作成されると、そのコピーが主データベースと同期が保たれるように絶えず更新される。ミラーは、ハードウェアレベルで、あるいはデータベースメカニズムを通して物理的コピーとして維持することができる（「複製(replication)」と呼ばれることがある）。ミラーがスナップショットと異なるのは、スナップショットが特定の時点におけるファイルまたはデータベースのステートを表わしている点である。これに対して、ミラーは動的に変化するソースと共に最新に保たれているアクティブでダイナミックなコピーである。
【０００４】
データベースの小さな部分が破壊されたときは、データベース全体をバックアップからリストアするオプションは、行なわれる作業の大部分が不必要であるため最適ではない（データベースの大部分は無傷である）。リストアプロセスは遅く、外部媒体（バックアップテープまたはバックアップディスク）の処理が必要になり、人間の介入が必要になる（データベースアドミニストレータはどのバックアップを使用するかを選択する必要があり、コンピュータオペレータはテープを探して、ロードする必要がある、など）。さらに、リストアプロセスが行なわれている間、データベースはユーザに利用可能になっていないのが代表的である。ページの破壊を処理する別の方法は、そのページの修復を試みることである。ページの修復は高速であるが、ページデータが部分的にまたは全体的に消失することが常にあるため、データベース内に論理的不一致が発生することになる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
破壊ページ上にストアされたデータ（ページとは、ＤＢＭＳによって単位として認識される一定バイト数のデータであり、通常８Ｋである）を高速に取り戻し、データ消失やデータ不一致が発生しないようにする方法があると、好都合である。データ破壊が検出されたときこのプロセスを自動的に開始させ、テープまたは他の取り外し可能媒体の管理と取り扱いを不要にし、かつ人間の介入なしで行なわれるようにすると便利である。
【課題を解決するための手段】
【０００６】
サーバの集まりは、ミラーリング（ミラー保護）されたデータベースの既存データ冗長性を利用してページ破壊をリストアする。ページリストアは、バックアップ媒体からのリストアに時間的および／または管理上のコストを一切不要にし、かつ修復に関連するデータ消失なしで行なうことができる。さらに、データベースミラーからのオンラインページリストアは、破壊が検出されるとコンピュータシステムによって自動的に開始し、実行することができる。この考え方は、個々のページまたはページセットではなく、ファイル全体またはデータベース全体のリストアを可能にするように拡張することができる。このメカニズムは、主サーバ(principal server)上の破壊ページをミラーからリストアするためだけでなく、ミラー上の破壊ページを主サーバからリストアするためにも使用することができる。データベースミラーからのオンラインページリストアによると、データを消失することなくページ破壊をほぼ瞬時に修正(fixing)することができる。また、データとログのバックアップを探し、ロードし、スキャンし、適用しなくてもページデータ回復ができるので、データ回復を効率化し、潜在的に自動化することを可能にしている。
【０００７】
従って、バックアップを用意しなくても、あるいはバックアップが存在していなくても、リストアを行なうことができる。１または２以上のページは、１または２以上のミラーに要求することができ、戻されたページが破壊検出時の主サーバのページに時間的に追いついていることを確かめるための検査を行なうことができる（ミラーでの「ｒｅｄｏ」オペレーションは、ページ要求がミラーによって受信されたとき主サーバの「ｄｏ」オペレーションに追いつかないことがある）。ページ破壊は、クラッシュ回復シナリオ期間に自動的に修正される場合と、破壊が検出されたときは通常のオペレーション期間に自動的に修正される場合とがある。クラッシュ回復期間には、トランザクションのロールバックを遅延させる破壊ページは、人間の介入なしで自動的にリストアされるので、遅延されたトランザクションのロールバックを人間の介入なしで進行させることが可能になっている。複数のミラーが利用可能であるときは、要求されたページを戻すために選択されたミラーは、どのミラーのレスポンスタイムが経歴的に高速であるかに基づいて、あるいはどのミラーがログを再現(replay)するのに主サーバから最も遠くに離れているか（すなわち、どのミラーが最新であるか）に基づいて選択されることがある。複数のミラーにまたがるマルチページのリストアは、負荷分散(load balancing)されることもある。１または２以上のページリストアは、破壊検出時に自動的に行なわれる場合と、ユーザによって駆動される場合とがある。主サーバ側の破壊が修正されるまでは、ページは、読み取り専用クエリのためにミラーから供されることがある。また、主サーバ側の破壊が修正されるまでは、ページは、読み書きクエリのためにミラーから供されることがある。これとは逆に、ミラーが主サーバになることもある。主サーバ側の破壊は、ミラーからリストアされる場合があるが、逆にミラー側の破壊が主サーバからリストアされる場合もある。
【発明を実施するための最良の形態】
【０００８】
概要
図２は、従来技術において公知であるデータベース内のページをリストアするシステム２００を示すブロック図である。Microsoft社のＳＱＬサーバ、ＩＢＭ社のＤＢ２、Ｏｒａｃｌｅなどのように、スタンドアロンサーバ２０２などのコンピュータ上のデータベースサーバ２０４は、データベース２１０の一部が破壊したとき（つまり、ページ２０８が破壊したとき）、ユーザインプット２１８（例えば、コンピュータオペレータおよび／またはデータベースアドミニストレータからの）で表わされているように、ユーザの介入を必要とするバックアップテープ２０６などによって、図２に表わされている１または２以上のバックアップ媒体からデータベース２１０のリストアを可能にするリペア（修復）／リストア（復元）ソフトウェア２１６を備えていることがある。図４は従来技術において公知であるデータベース内のページをリストアする方法を示すフロー図である。４０２において、データページ破壊が検出される。この時点で、データベースは利用不能になるのが代表的である。４０４において、データベースアドミニストレータまたは他の人間はどのように進めるかを決定しなければならない。例えば、ＤＢＡは４０７でページ修復を開始したと想定する。４０８において、サーバ側の修復ソフトウェアは、ページ内容の修正(fix)を試みるのが代表的である。代表例として、データおよびビジネスロジックが消失すると、データベース内に不一致が生じることになる。４１８において、修復が完了すると、データベースは再び利用可能になる。別の方法として、４１０において、ＤＢＡは、データベースページをバックアップからリストアすることを決定する。４１２において、バックアップ媒体を見つけ、ロードし、必要とするページを得るためにスキャンする必要があるが、データベース全体がバックアップ媒体から再ロードされる場合は、バックアップ媒体全体をシーケンスにロードしてデータベースに適用する必要がある。４１４において、ページが見つけられ、データベースに適用されるか、あるいはバックアップセット全体がデータベースに適用される。４１６において、ページは１または２以上のログを適用することによって更新され、４１８においてリストアが完了すると、データベースは再び利用可能になる。以上から理解されるように、修復オプション（ステップ４０４−４０８および４１８）は、データ消失とデータベース不一致を引き起こす恐れがある。また、リストアオプション（ステップ４１０−４１８）は、プロセスが長くなり、少なくとも一人の人間の介入が必要になる恐れがある。どちらのオプションも、データベースは、修復またはリストアのプロセス期間中は利用できないのが代表的である。
【０００９】
本発明の実施形態によれば、全体がソフトウェアをベースとする障害回復ソリューション(disaster recovery solution)が以下に詳しく説明されている。要約すると、単純なシナリオは、次の通りである。
１．破壊ページが検出される。
２．データベースアドミニストレータは、リストア機能（例えば、「RESTORE DATABASE foo PAGE x FROM MIRROR」）を実行するか、あるいはこのリストア機能はコンピュータにより自動的に（人間の介入なしで）開始される。
３．サーバはデータベース内の破壊ページをロックする。
４．データベースページを求める要求が主サーバから少なくとも１つのミラーに送信される。この要求は破壊ページ（または複数ページ）のページＩＤと、主サーバ側の現時点のログシーケンス番号(log sequence number  LSN)を含んでいる。現時点のＬＳＮが与えられるのは破壊ページ上のＬＳＮが信頼できないからである。
【００１０】
ＬＳＮが重要であるのは、ＳＱＬサーバは、データベースに行なわれた変更をトランザクションログに書き出し、あるトランザクションが開始したが完了に失敗した場合、ログからの変更が取り出されて再適用（「ロールバック」）されるか、あるいは取り消されるようにするからである。あるトランザクションがコミットしたときは、ＳＱＬサーバはそのトランザクションに関する全てのログレコードをディスク上の永続ストレージに書き出す。従って、ＳＱＬサーバが変更されたデータページをディスクに書き出す前に、システムに障害が起った場合でも、ログレコードはディスク上に残っている。ＳＱＬサーバが再び開始したとき、完了したが、その対応するデータページがディスクに書き出されていなかったトランザクションを回復する、つまり、ロールフォワード(roll forward)するのに十分な情報がログから得られる。トランザクションログに書き出される各レコードには、順次ログシーケンス番号（大きくなっていくのが通常）が割り当てられ、トランザクションが適用されたときの順序を追跡するのを容易にしている。
【００１１】
５．ミラーは、要求されたページに対するすべての変更がログからリプレイ（再現）されて、ページに適用されたことを確かめるために要求の中で与えられたＬＳＮを、その「ｒｅｄｏ」オペレーションが渡すのを待っている。
６．ミラーは、そのバッファプールまたはそのディスクのどちらかからページをフェッチする。ミラーによって現在保持されているページは、主サーバ側のデータベースと一致することが保証されるのは、どの更新もその間にページに行なうことができず（そのページはステップ３でロックされていたため）、ログがロッキング個所（５において）を通過してリプレイされていたからである。
７．データベースミラーリング通信インフラストラクチャを使用して、新しいメッセージタイプがページをミラーから主サーバに送信するために使用される。
８．ページを受信すると、主サーバは、リストアを持続するためにページをディスクに書き出し、ロックを解除して、修正ページが再びクエリで利用できるようにする。
【００１２】
ミラーが利用可能でないときなにが起こるか、ミラーリングが一時中止されたときなにが起こるか、データベースミラーリングフェールオーバ(failover)がリストアオペレーション期間にトリガされた場合なにが起るか、などに関連するエラー処理プロセッシングが用意されている。
【００１３】
自動モードでは、プロセスは、クラッシュ回復期間または正常のオペレーション期間に破壊ページが検出されると、人間の介入なしでコンピュータによって自動的に開始される。破壊ページが検出されると、そのページに更新を行なっているトランザクションのためにロックが自動的に保持される。据え置きトランザクション(deferred transaction)とは、なんらかの外部イベントが発生するまで解決（アボートまたはコミット）できないトランザクションのことである。ここで言うイベントとは、矛盾のないページ(consistent page)を回復することであり、これは自動的に発生させることができる。（従来、その結果の「据え置きトランザクション」には、基礎となる問題を解決するためにアドミニストレータの介入が要求されている。）データベースミラーからのオンラインページリストアメカニズムの自動モード機能が起動されたときは、破壊ページ（ページＩＤで特定された）はロックされ、ページリストアがミラーから完了したあと、据え置きトランザクションをロールバックするためのコードが起動されるので、データベースページ破壊はシームレスに修復されることになる。
【００１４】
上述した手法は、ファイル全体（例えば、ディスククラッシュが起った場合）をミラーからリストアするように拡張することができる。逆に、データベースがミラーにフェールオーバして、ミラーがアクティブ（主）データベースになり、障害を起こしたコピーがミラーになることがある。この場合、そのミラーは、データを新しい主データベースから送ることによって、自動修復のターゲットになることがある。マニュアルモード（人間の介入が必要）が起動されたときは、オリジナルロケーションが使用できない場合には、ファイルロケーションがオプションとして指定される。自動モードでは、デフォルトロケーションが試みられることがあり、そうでなければ、サーバは、マニュアルオペレーションが実行されるのを待つことになる。
【００１５】
自動モードがオフにされるか、取り入れられていないときは、破壊ページが修正されるまで、読み取り専用クエリのためにページをミラーから供するためにその基礎となるページリストアメカニズムが使用されることがある。このオプションでは、上述した方法に従うが、ミラーから受け取られたページ（１または２以上）は主サーバ側のディスクに書き戻されない。このようにすると、データ可用性(data availability)が向上すると共に、アドミニストレータは、リストアをマニュアルで制御することが可能になる。
【００１６】
次のような最適化が行なわれている。
１）複数のミラーの場合、主サーバは、どのミラーのレスポンスタイムが最高速であるか（高速レスポンスタイムは、ネットワークの違い、物理的ロケーションなどを含む、いくつかの要因に起因することがある）を記録にとっておき、そのレスポンスタイムが最高速であるミラーからリストアページを要求する。
２）複数のミラーが主サーバから受け取られたログからの「ｒｅｄｏ」に追いつく異なるステージにあるときは、主サーバはリストアページを最新（現行）ミラーに要求することがある。
３）複数のページがリストアされているとき、ミラーは異なるミラーからページブロックを要求することによって負荷分散することができる。
【００１７】
例示コンピューティング環境
図１と以下の説明は、本発明を実現することができる適当なコンピューティング環境を要約して、概説することを目的としている。なお、当然に理解されるように、本発明によれば、ハンドヘルド、ポータブル、およびあらゆる種類の他のコンピューティングデバイスが本発明に関連して使用されることを意図している。以下では汎用コンピュータが説明されているが、これは単なる一例であり、本発明に要求されるのは、ネットワークサーバ相互運用性(interoperability)と相互作用性(interaction)を有するシンクライアント(thin client)だけである。従って、本発明は、関係するクライアントリソースが非常に少なく、最小限であるようなネットワーキングホストサービスの環境、例えば、クライアントデバイスが単にワールドワイドウェブ(World Wide Web  WWW)へのブラウザまたはインタフェースとなるような環境で実現することができる。
【００１８】
必ずしも必要でないが、本発明は、開発者によって使用されるアプリケーションプログラミングインタフェース(Application Programming Interface  API)を介して実現することも、および／またはプログラムモジュールのように、クライアントワークステーション、サーバまたは他のデバイスなどの１または２以上のコンピュータによって実行されるコンピュータ実行可能命令の一般的コンテキストの中で説明されているネットワークブラウジングソフトウェア(network browsing software)に組み込んでおくことも可能である。一般的に、プログラムモジュールとしては、特定のタスクを実行し、あるいは特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがある。代表例として、これらプログラムモジュールの機能は、種々の実施形態において望み通りに組み合わせることも、分散させることもできる。さらに、この分野の精通者ならば理解されるように、本発明は他のコンピュータシステムと共に実施することもできる。本発明と共に使用するのに適した他の周知コンピューティングシステム、環境および／コンフィギュレーションとしては、パーソナルコンピュータ（ＰＣ）、自動化テラーマシン(automated teller machine)、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどがあるが、これらに限定されない。本発明は、タスクが通信ネットワークや他のデータ伝送媒体を通してリンクされたリモート処理デバイスによって実行されている分散コンピューティング環境で実施されることもある。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルとリモートの両方のコンピュータ記憶媒体に置かれていることがある。
【００１９】
図１は、本発明を実現することができる適当なコンピューティングシステム環境１００の例を示す図であるが、上記で明らかにしたように、このコンピューティングシステム環境１００は、適当なコンピューティング環境の単なる一例であり、本発明の使用または機能の範囲についていかなる制限をも示唆するものではない。コンピューティング環境１００は、この例示動作環境１００に図示のどのコンポーネントに関しても、またどのようなコンポーネントの組み合わせに関しても、なんらの依存関係または要求条件があるものと解釈されるものでもない。
【００２０】
図１を参照して説明すると、本発明を実現するための例示システムは、コンピュータ１１０の形体をした汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネントとしては、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１があるが、これらに限定されない。システムバスは、数種タイプのバス構造のいずれにすることも可能であり、その中には、種々のバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスが含まれている。例を挙げると、このようなアーキテクチャとしてはＩＳＡ(Industry Standard Architecture)バス、ＭＣＡ(Micro Channel Architecture)バス、ＥＩＳＡ(Enhanced ISA)バス、ＶＥＳＡ(Video Electronics Standards Association)ローカルバス、およびＰＣＩ(Peripheral Component Interconnect)バス（Mezzanineバスとも知られている）があるが、これらに限定されない。
【００２１】
コンピュータ１１０は、種々のコンピュータ可読媒体(computer readable media)を備えているのが代表的である。コンピュータ可読媒体は、コンピュータ１１０によってアクセスできる利用可能な媒体であれば、どのような媒体でもよく、揮発性と不揮発性媒体で、取り外し可能と取り外し不能媒体の両方を備えている。例を挙げると、コンピュータ可読媒体としては、コンピュータ記憶媒体と通信媒体があるが、これらに限定されない。コンピュータ記憶媒体としては、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報をストアするためのいずれかの方法またはテクノロジで実現された揮発性と不揮発性で、取り外し可能と取り外し不能媒体の両方がある。コンピュータ記憶媒体としては、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリテクノロジ、ＣＤＲＯＭ、デジタルバーサタイルディスク(digital versatile disk  DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または必要とする情報をストアするために使用でき、コンピュータ１１０によってアクセス可能な他の媒体があるが、これらに限定されない。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波や他のトランスポートメカニズムなどの変調データ信号で具現化しているのが代表的であり、その中には、任意の情報配信媒体が含まれている。「変調データ信号(modulated data signal)」という用語は、信号の中の情報を符号化するような形でその特性の１つまたは２つ以上がセットまたは変更されている信号を意味している。例を挙げると、通信媒体には、ワイヤドネットワークや直接ワイヤドコネクションのようなワイヤド（有線）媒体、および音響、ＲＦ、赤外線および他のワイヤレス媒体のようなワイヤレス（無線）媒体が含まれるが、これらに限定されない。上記のいずれかの組み合わせも、コンピュータ可読媒体の範囲に含まれることは当然である。
【００２２】
システムメモリ１３０には、リードオンリメモリ（Ｒ０Ｍ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２のような、揮発性および／または不揮発性メモリの形体をしたコンピュータ記憶媒体が含まれている。スタートアップ期間のように、コンピュータ１１０内のエレメント間で情報を転送するのを支援する基本ルーチンからなる基本入力／出力システム(basic input/output system  BIOS)１３３は、ＲＯＭ１３１に格納されているのが代表的である。ＲＡＭ１３２は、処理ユニット１２０に即時にアクセス可能である、および／または処理ユニットによって現在操作の対象になっているデータおよび／またはプログラムモジュールを収めているのが代表的である。例を挙げると、図１はオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７を示しているが、これらに限定されない。
【００２３】
コンピュータ１１０は、他の取り外し可能／取り外し不能で揮発性／不揮発性コンピュータ記憶媒体を装備していることもある。例を挙げると、図１は、取り外し不能で不揮発性の磁気媒体との間で読み書きを行なうハードディスクドライブ１４１、取り外し可能で不揮発性の磁気ディスク１５２との間で読み書きを行なう磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体のような取り外し可能で不揮発性の光ディスク１５６との間で読み書きを行なう光ディスクドライブ１５６を示しているが、これらに限定されない。例示動作環境で使用できる他の取り外し可能／取り外し不能揮発性／不揮発性コンピュータ記憶媒体としては、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがあるが、これらに限定されない。ハードディスクドライブ１４１は。インタフェース１４０のような取り外し不能メモリインタフェースを通してシステムバス１２１に接続されているのが代表的であり、磁気ディスクドライブ１５１と光ディスクドライブ１５５は、インタフェース１５０のような取り外し可能メモリインタフェースを介してシステムバス１２１に接続されているのが代表的である。
【００２４】
上述し、図１に図示されている、これらのドライブおよびその関連コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータをコンピュータ１１０のためにストアしている。図１において、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７をストアするものとして示されている。なお、これらのコンポーネントはオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであることもあれば、異なっていることもある。ここで、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７に異なる符合が付されているのは、最低限でも、これらが異なるコピーであることを示すためである。ユーザは、キーボード１６２および一般にマウス、トラックボールまたはタッチパッドとも呼ばれるポインティングデバイス１６１などの、入力デバイスを通してコマンドと情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどがある。これらおよび他の入力デバイスは、システムバス１２１に結合されたユーザ入力インタフェース１６０を通して処理ユニット１２０に接続されていることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの、他のインタフェースおよびバス構造によって接続されていることもある。
【００２５】
モニタ１９１または他のタイプのディスプレイデバイスも、ビデオインタフェース１９０のようなインタフェースを介してシステムバス１２１に接続されている。Northbridgeのようなグラフィックスインタフェース１８２も、システムバス１２１に接続されていることがある。Northbridgeは、ＣＰＵまたはホスト処理ユニット１２０と通信するチップセットであり、ＡＧＰ(accelerated graphics port)通信を担当している。１または２以上のグラフィックス処理ユニット(graphics processing unit  GPU)１８４は、グラフィックスインタフェース１８２と通信している。この点に関して、ＧＰＵ１８４は、レジスタストレージのようなオンチップメモリストレージを備えているのが一般的であり、ＧＰＵ１８４は、ビデオメモリ１８６と通信している。なお、ＧＰＵ１８４は、コプロセッサの単なる一例であり、種々のコプロセッシングデバイスがコンピュータ１１０に装備されていることがある。モニタ１９１または他のタイプのディスプレイデバイスも、ビデオインタフェース１９０のようなインタフェースを介してシステムバス１２１に接続されており、ビデオインタフェースの方はビデオメモリ１８６と連絡していることがある。モニタ１９１のほかに、コンピュータは、スピーカ１９１やプリンタ１９６のような、他の周辺出力デバイスを備えている場合もあり、これらの周辺出力デバイスは出力周辺インタフェース１９５を通して接続されていることがある。
【００２６】
コンピュータ１１０は、リモートコンピュータ１８０のような、１または２以上のリモートコンピュータとの論理的コネクションを使用したネットワーキング環境で動作することができる。リモートコンピュータ１８０としては、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードがあり、図１にはメモリストレージデバイス１８１だけが示されているが、コンピュータ１１０に関連して上述したエレメントの多くまたは全部を備えているのが代表的である。図１に図示の論理的コネクションとしては、ローカルエリアネットワーク(local area network  LAN)１７１とワイドエリアネットワーク(wide area network  WAN)１７３があるが、他のネットワークが含まれている場合もある。このようなネットワーキング環境は、オフィス、企業内コンピュータネットワーク、イントラネットおよびインターネットで普及している。
【００２７】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、ネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続されている。ＷＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、インターネットのようにＷＡＮ１７３上の通信を確立するモデム１７２または他の手段を装備しているのが代表的である。モデム１７２は、内蔵型と外付け型があり、どちらも、ユーザ入力インタフェース１６０または他の該当メカニズムを介してシステムバス１２１に接続されている。ネットワーキング環境において、コンピュータ１１０に関連して図示したプログラムモジュールまたはその一部は、リモートメモリストレージデバイスにストアされていることがある。例を挙げると、図１は、リモートアプリケーションプログラム１８５がメモリデバイス１８１に置かれているものと示しているが、これに限定されない。以上から理解されるように、図示のネットワークコネクションは例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することも可能である。
【００２８】
この分野の通常の知識を有するものならば理解されるように、コンピュータ１１０または他のクライアントデバイスは、コンピュータネットワークの一部として配置することができる。この点に関して、本発明は、任意の数のメモリまたはストレージユニットを装備し、任意の数のアプリケーションまたはプロセスが任意の数のストレージユニットまたはボリュームにまたがって実行されている、どのようなコンピュータシステムにも関係している。本発明は、リモートまたはローカルストレージを装備したサーバコンピュータおよびクライアントコンピュータがネットワーク環境内に配置されているような環境に適用することができる。また、本発明は、プログラミング言語機能、解釈・実行能力を有するスタンドアロンコンピューティングデバイスにも適用可能である。
【００２９】
データベースミラーからのオンラインページリストア
図３および図５は、本発明の例示的な実施形態を説明する。システム３００は、図１に関連して上述したように１または２以上のコンピュータに置かれていることがある。システム３００は、以下に示すコンポーネントの１または２以上を装備していることがある。すなわち、主データベース（図３では、主サーバ３０２に置かれているデータベース３０８）および１または２以上のミラーデータベース（１または２以上のサーバ３２０、３３０などに置かれているデータベース３２８、３３８などで示されている）である。従って、主サーバ３０２は、Microsoft社のＳＱＬサーバ、ＩＢＭ社のＤＢ２、Ｏｒａｃｌｅなどの主データベースサーバのインスタンスである、主データベース（図３にデータベース３０８で示されている）の１つまたは２以上を備えていることがある。主データベースサーバ３０４は、以下で説明するように、データベースメカニズムからのオンラインページリストアの機能を実行するソフトウェアモジュール３０６を備えていることがある。同様に、１または２以上のミラーデータベースサーバ３２０、３３０などは、Microsoft社のＳＱＬサーバ、ＩＢＭ社のＤＢ２、Ｏｒａｃｌｅのどのミラーデータベースサーバなどのインスタンスである、ミラーデータベース（図３にデータベース３２８、３３８で示されている）の１つまたは２つ以上を備えていることがある。ミラーデータベースサーバ３２４、３３４などは、以下で説明するように、データベースメカニズムからのオンラインページリストアの機能を実行するソフトウェアモジュール３２６、３３６などを備えていることがある。
【００３０】
本発明の一部の実施形態では、データベースからのオンラインページリストアモジュール３０６、３２６、３３６などは、以下で詳しく説明するように、完全にソフトウェアをベースとしている障害回復ソリューション(disaster recovery solution)を構成している。本発明の一部の実施形態では、オンラインページリストアモジュールは、主サーバ上の１または２以上の破壊ページを検出する。マニュアルモードにあるときは、モジュール３０６は、リストア機能を実行する命令を受け取ることがある。例示の命令（これに限定されない）は、例えば、「RESTORE DATABASE foo PAGE x FROM MIRROR」であることがある。これとは逆に、自動モードにあるときは、破壊ページを検出すると、リストアソフトウェア３０６は、人間の介入なしでコンピュータによって自動的に起動されることがある。次いで、主サーバ３０２は、主サーバ上のデータベース内の１または２以上の破壊ページ（図３にページ３０９で示されている）をロックし、破壊ページ（選択されたミラーがミラー１  ３２０であればページ３２９、選択されたミラーがミラー２  ３３０であればページ３３９など）に対応する、ミラー上のページを求める要求を少なくとも１つのミラーに送信することがある。一部の実施形態では、ページはページＩＤで特定されている。主サーバ側の現時点のログシーケンス番号が送信されることがあるのは、破壊ページのＬＳＮが信頼できないからである。ミラー（３２０、３３０など）は、要求されたページに対するすべての変更がログからリプレイされて、ミラー上のページ（ページ３２９、３３９など）に適用されたことを確かめるために要求の中で与えられたＬＳＮを、その「ｒｅｄｏ」オペレーションが渡すのを待ち、最新（現行）のページが主サーバ３０２に送信されるようにする。ミラーは、そのバッファプールまたはそのディスクのどちらかからページ（ページ３２９、３３９など）をフェッチする。ミラーによって現在保持されているページは、主サーバ側のデータベースと一致することが保証されるのは、そのページがロックされていたためどの更新もそのページに行なうことができず、ログがロッキング個所を通過してリプレイされていたからである。データベースミラーリング通信インフラストラクチャを使用して、特殊なメッセージタイプがページをミラーから主サーバに送信するために使用され、そのページが破壊ページをリストアするために使用されるページとして特定される。ページを受信すると、主サーバは、リストアされたページをディスクに書き出して、リストアを持続することができる。ロックは解除され、修正ページは再びクエリで利用できるようにされる。
【００３１】
エラー処理プロセッシングは、１または２以上のミラーが利用可能でなく、ミラーリングが一時中止された場合、あるいはデータベースミラーリングフェールオーバがリストアオペレーション期間にトリガされた場合などに実行される。
【００３２】
自動モードでは、プロセスは、クラッシュ回復期間または正常のオペレーション期間に破壊ページが検出されると、人間の介入なしでコンピュータによって自動的に開始される。破壊ページが検出されると、そのページに更新を行なっているトランザクションのためにロックが自動的に保持される。（従来では、その結果の「据え置きトランザクション」には、基礎となる問題を解決するためにアドミニストレータの介入が必要であった。）データベースミラーからのオンラインページリストアメカニズムの自動モード機能が起動されたときは、破壊ページ（ページＩＤで特定された）はロックされ、ページリストアがミラーから完了したあと、据え置きトランザクションをロールバックするためのコードが起動されるので、データベースページ破壊は、シームレスに修復されることになる。
【００３３】
上述した方法は、ファイル全体（例えば、ディスククラッシュが起った場合）をミラーからリストアするように拡張することができる。マニュアルモード（人間の介入が必要）が起動されたときは、オリジナルロケーションが使用できない場合には、ファイルロケーションがオプションとして指定される。自動モードでは、デフォルトロケーションが試みられることがあり、さもなければサーバはマニュアルオペレーションが実行されるのを待つことがある。
【００３４】
自動モードがオフにされるか、あるいは取り入れられていないときは、破壊ページが修正されるまで、読み取り専用クエリのためにページをミラーから供するために基礎となるページリストアメカニズムが使用されることがある。このオプションでは、上述した方法に従うが、ミラーから受け取られたページは、主サーバ側のディスクに書き戻されない。このようにすると、データ可用性が向上すると共に、アドミニストレータは、リストアをマニュアルで制御することが可能になる。
【００３５】
次のような最適化が行なわれている。
１）複数のミラーの場合、主サーバは、どのミラーのレスポンスタイムが最高速であるか（高速レスポンスタイムは、ネットワークの違い、物理的ロケーションなどを含む、いくつかの要因に起因することがある）を記録にとっておき、そのレスポンスタイムが最高速であるミラーからリストアページを要求する。
２）複数のミラーが主サーバから受け取られたログからの「ｒｅｄｏ」に追いつく異なるステージにあるときは、主サーバは、リストアページを最新（現行）ミラーに要求することがある。
３）複数のページがリストアされているとき、ミラーは、異なるミラーからページブロックを要求することによって負荷分散することができる。
【００３６】
図５は、本発明の一部の実施形態に従い、図３を参照して上述したデータベースからのオンラインページリストアのための例示方法を示すフロー図である。５０２において、破壊が検出される。破壊は、クラッシュ回復期間または正常オペレーション期間に検出されることがある。破壊は、シングルページまたはページセットに限定されることもあれば、ファイルまたはデータベース全体に関係することもある。オンラインページリストアがマニュアルモードで動作しているときは、人間の介入が要求される（５０６）。例えば、データベースアドミニストレータのように、だれかが、リストアすべき特定ページ、リストアすべきページセット、その全体をリストアすべきファイル（ファイルシステムのファイルまたはデータベースファイル）を指定したコマンドを実行することができる。さらに、ページ（１または２以上）が属しているデータベースと対応する未破壊ページ（１または２以上）がそこから受け取られるミラー（１または２以上）とを指定することもできる。リストアすべきページまたはリストアすべきページセットは、ページＩＤまたはある範囲のページＩＤで特定することができる。破壊が検出された時点に関連するＬＳＮも指定することができる。以上から理解されるように、破壊ページに関連するＬＳＮが信頼できないのは、そのＬＳＮが壊されることがあるからである。
【００３７】
オンラインページリストアが自動モードで動作している場合は、５０４で破壊が検出されると、リストアは、コンピュータ上で実行されているソフトウェアによって、人間の介入を必要とすることなく開始される。自動モードでは、以前に説明したパラメータがコンピュータ上で実行されているオンラインページリストアソフトウェアによってセットされる。５０８において、マニュアルモードにあるか、自動モードにあるかに関わりなく、主データベースにある１または２以上の破壊ページはロックされる。このロックの時点では、１または２以上の破壊ページは、利用不能になるが、データベースの残り部分はまだアクセス可能になっている（例えば、ユーザのクエリや更新などのために利用可能になっている）。破壊ページまたはページセットは、少なくとも１つのミラーから要求される。ページ要求を受け入れるミラー（１または２以上）は、経歴的にレスポンスタイムが最速であったミラーに基づくか、最新（現行）ミラーに基づくか、あるいは他の適当な基準に基づいて選択されることがある。多数のページまたはファイル全体をリストアする必要がある場合は、必要とするページのサブセットに対する要求（オプションとしてオーバラップしていない）を複数のミラーに送信することによって負荷分散化が行なわれることがある。理解を容易にするために、シングルページが破壊され、該当するミラー、すなわち、ミラー１がページ要求を受けるために選択されたと想定する。なお、以上から理解されるように、本発明は以上に限定されないことを意図している。５０８において、主サーバは、上述したようにミラー１に対するページｉｄ  Ｘの要求とＬＳＮを送信することがある。５１０において、ミラーはその要求を受信すると、ページが最新であること（破壊検出前に行われたページに対する変更が適用されていること）を確かめるためにそのログ更新が受信したＬＳＮに適用されるまで待つことになる。少なくとも受信したＬＳＮが示している個所にログが適用されると、破壊ページに対応するミラーページ（１または２以上の）は、ミラー上のバッファプールからフェッチされることも、ミラーディスクからフェッチされることもある。メッセージをオンラインページリストアメッセージとして特定している特定タイプのメッセージが生成され、主サーバに送信されることになる。５１２において、ページは、主サーバで受信され、データベースに適用される。ページはリストアされたページをそのまま残しておくために、ディスクに書き出される。ロックが解除され（５１４）、リストアされたページは、データベースの特性によって判断されたとおりに、クエリと更新のために利用可能にされる。
【００３８】
本発明の一部の実施形態では、破壊ページ（１または２以上）がリストアされている間、破壊ページに向けられたクエリは、ミラーから供されるので、データの可用性が向上することになる。
【００３９】
これまでに説明してきた種々の手法は、ハードウェアまたはソフトウェアと関連付けて実現されることも、該当する場合には、両者を組み合わせたものと関連付けて実現されることもある。従って、本発明の方法と装置、またはそのある種の側面または部分は、フロッピディスケット、ＣＤ−ＲＯＭ、ハードドライブまたは他のマシン可読記憶媒体のような、有形媒体に具現化されたプログラムコード（つまり、命令）の形体をとっていることがあり、そこでは、プログラムコードがコンピュータのようなマシンにロードされ、マシンによって実行されるとき、そのマシンは本発明を実施するための装置となる。プログラムコードがプログラマブルコンピュータ上で実行される場合は、コンピューティングデバイスは、プロセッサ、プロセッサによって可読の記憶媒体（揮発性および不揮発性メモリおよび／または記憶素子を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを装備しているのが一般的である。本発明のドメイン固有プログラミングモデル(domain-specific programming models)の側面の作成および／または実装を、例えば、データ処理ＡＰＩなどの使用を通して利用することができる１または２以上のプログラムは、好ましくは、高水準手続き型またはオブジェクト指向プログラミング言語で実現され、コンピュータシステムと通信するようにしている。しかし、これらのプログラムは、必要ならば、アセンブリ言語またはマシン言語で実現することができる。いずれの場合も、言語は、コンパイル型または解釈型言語にすることができ、ハードウェア実装と組み合わせることもできる。
【００４０】
各図に示す好適実施形態と関連付けて本発明を説明してきたが、当然に理解されるように、本発明の範囲から逸脱しない限り、他の類似の実施形態を使用することも、上述した実施形態に変更および追加を行なって、本発明の同一機能を実行させることも可能である。従って、本発明は、どの単一実施形態に限定されるものではなく、むしろ添付の特許請求の範囲に従った広がりと範囲で解釈されるものである。
【図面の簡単な説明】
【００４１】
【図１】本発明の側面を実現することができる例示コンピューティング環境を示すブロック図である。
【図２】従来技術において公知であるデータベース内のページをリストアするシステムを示すブロック図である。
【図３】本発明の一部の実施形態によるデータベースミラーからのオンラインページリストアのためのシステムを示すブロック図である。
【図４】従来技術において公知であるデータベース内のページをリストアする方法を示すフロー図である。
【図５】本発明の一部の実施形態によるデータベースミラーからのオンラインページリストアの方法を示すフロー図である。
【図１】
2009505280.tif 000003
【図２】
2009505280.tif 000004
【図３】
2009505280.tif 000005
【図４】
2009505280.tif 000006
【図５】
2009505280.tif 000007
【国際調査報告】
2009505280.tif 000008