(57)【要約】  データベースのデータベースバックアップに対する整合性チェックを実行するための方法が、データベースバックアップからの元のデータベースの完全な回復を要することなしに実行される。代わりに、データベースビューが、既存の完全なデータベースバックアップの諸部分のトランザクション整合性のあるビューを提供するためのより小さいストレージ要件のツールとして使用されることが可能である。データベースビューは、データベースバックアップおよびトランザクションログとの組合せで、データベースバックアップからの元のデータベースの完全な再構成なしにデータベースバックアップに対して整合性チェックを実行するのに必要な、すべての情報を含む。整合性チェックは、データベースバックアップとともにデータベースビューに対して実行されて、完全なデータベースバックアップの整合性を確認し、データベース回復スキームに向上した信頼性を加えることが可能である。
2007531155.tif 000002
【特許請求の範囲】
【請求項１】
データベースバックアップに対して整合性チェックを実行するための方法であって、
データベースバックアップから取り出すべきページのリストを生成すること、
前記データベースバックアップを読み取ることによって前記リスト内の前記ページを取り出すこと、
前記データベースバックアップから、前記データベースバックアップ内に含まれる前記データベースより少ないメモリスペースしか要さないデータベースビューを作成すること、
トランザクションログおよび前記取り出されたページを前記データベースビューにコピーすること、
前記データベースビューをトランザクション整合性のある状態に回復すること、および
前記データベースバックアップと前記データベースビューのいずれかからすべてのデータベースページを読み取ることにより、前記データベースバックアップに対して整合性チェックを実行することを含むことを特徴とする方法。
【請求項２】
データベースのバックアップから取り出すべきページのリストを生成することは、割り当てページとメタデータページの少なくともいずれか、前記データベースバックアップが作成されている最中に前記データベース内で変更されたページ、前記データベースバックアップの完了時に未コミットの結果を含むページ、および論理的取り消し操作を実行するのに必要なページを含むページリストを生成することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
論理的取り消し操作を実行するのに必要なページを含むページリストを生成することは、更新に関するログレコードの中に含まれるキーを使用して、Ｂツリーのいずれの内部ノードページが、特定のログレコードに関する論理的取り消し操作を実行するのに必要とされるかを特定することを含むことを特徴とする請求項２に記載の方法。
【請求項４】
ページの前記リストを生成することは、前記データベースバックアップの作成中に変更されたページに関して前記データベースバックアップ内のトランザクションログをスキャンすることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記リスト内の前記ページを取り出すことは、１回だけ完全なデータベースバックアップを読み取り、前記リスト内の前記ページを前記データベースビューにコピーすることを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記データベースバックアップからデータベースビューを作成することは、特定の時点におけるデータベースバックアップの内容を反映するデータベースビューを作成することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
トランザクションログをコピーすることは、前記データベースがバックアップされている最中に行われたトランザクションを含むトランザクションログをコピーすることを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記データベースビューをトランザクション整合性のある状態に回復することは、前記データベースバックアップ操作中に行われた変更のすべては反映していなかったページに対してやり直し操作を実行することを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記やり直し操作は、関連するトランザクションログに基づき、すべてのコミットされたトランザクションが前記データベースビュー内で反映されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記関連するトランザクションログに基づいてページに対して取り消し操作を実行して、すべての未コミットのトランザクションの効果が前記データベースビューから削除されるようにすることをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記リスト内の前記ページを探し出すために１回、前記整合性チェックを実行している間に１回の２回だけ、前記データベースバックアップを読み取ることをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記データベースビューがトランザクション上の整合性を有するようにされるまで、前記整合性チェックを遅延させることをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１３】
前記データベースバックアップ、および前記トランザクション上の整合性を有するデータベースビューを使用して前記整合性チェックを実行することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１４】
整合性チェックを実行することは、
前記データベースビューからのすべてのページを１回、読み取ること、および
前記データベースビューからのページを、前記ページの訂正されたバージョンが前記データベースビュー内に存在する場合、前記整合性チェックにおいて使用することを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記データベースバックアップからのページを、前記ページの訂正されたバージョンが前記データベースビュー内に存在しない場合、前記整合性チェックにおいて使用することをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記データベースバックアップ内で見つからないが、代わりに、前記ビュー内だけで見つかるすべてのページが、前記整合性チェックの中に含まれることを確実にすることをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１７】
データベースバックアップ情報とログトランザクションデータの少なくともいずれかを受け取るための入力デバイスと、
ソフトウェアコンポーネントの命令を有するメモリへのアクセスを有するプロセッサと、
実行されると、データベースバックアップから取り出すべきページのリストを生成すること、前記データベースバックアップにアクセスすることによって前記リスト内の前記ページを取り出すこと、前記データベースバックアップから、前記データベースバックアップ内に含まれる前記データベースより少ないメモリスペースしか要さないデータベースビューを作成すること、トランザクションログおよび前記取り出されたページを前記データベースビューにコピーすること、前記データベースビューをトランザクション整合性のある状態に回復すること、および前記データベースバックアップおよび前記トランザクション整合性のあるデータベースビューを使用して、前記データベースバックアップに対して整合性チェックを実行することを含む方法を実行するソフトウェアコンポーネントとを含むことを特徴とするシステム。
【請求項１８】
整合性チェックを実行する前記ソフトウェアコンポーネントステップは、
前記データベースビューからのすべてのページを１回、読み取ること、および
前記データベースビューからのページを、前記ページの訂正されたバージョンが前記データベースビュー内に存在する場合、前記整合性チェックにおいて使用することを含むことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記データベースバックアップからのページを、前記ページの訂正されたバージョンが前記データベースビュー内に存在しない場合、前記整合性チェックにおいて使用することをさらに含むことを特徴とする請求項１８に記載のシステム。
【請求項２０】
整合性チェックを実行する前記ソフトウェアコンポーネントステップは、前記データベースバックアップ内で見つからないが、代わりに、前記ビュー内だけで見つかるすべてのページが、前記整合性チェックの中に含まれることを確実にすることをさらに含むことを特徴とする請求項１７に記載のシステム。
【請求項２１】
前記整合性チェックの前記ステータスを監視するためのディスプレイデバイスをさらに含むことを特徴とする請求項１７に記載のシステム。
【請求項２２】
前記データベースバックアップは、順次ストレージ、ディスクストレージ、およびランダムアクセスストレージのいずれかを含むことを特徴とする請求項１７に記載のシステム。
【請求項２３】
前記ソフトウェアコンポーネント方法は、前記ページリストを探し出すために１回、前記整合性チェックを実行している間に１回の２回だけ、前記データベースバックアップを読み取ることをさらに含むことを特徴とする請求項１７に記載のシステム。
【請求項２４】
ページの前記リストを生成する前記ソフトウェアコンポーネントステップは、前記データベースバックアップの作成中に変更されたページに関して前記データベースバックアップ内のトランザクションログをスキャンすることを含むことを特徴とする請求項１７に記載のシステム。
【請求項２５】
論理的取り消し操作を実行するのに必要なページを含むページリストを生成する前記ソフトウェアコンポーネントステップは、更新に関するログレコードの中に含まれるキーを使用して、Ｂツリーのいずれの内部ノードページが、特定のログレコードに関する論理的取り消し操作を実行するのに必要とされるかを特定することを含むことを特徴とする請求項１７に記載のシステム。
【請求項２６】
前記データベースバックアップからデータベースビューを作成する前記ソフトウェアコンポーネントステップは、特定の時点におけるデータベースバックアップの内容を反映するデータベースビューを作成することをさらに含むことを特徴とする請求項１７に記載のシステム。
【請求項２７】
前記データベースビューをトランザクション整合性のある状態に回復する前記ソフトウェアコンポーネントステップは、関連するトランザクションログに基づいてページに対して取り消し操作およびやり直し操作を実行して、すべてのコミットされた操作が前記データベースビュー内で反映され、すべての未コミットのトランザクションが、前記データベースビューから削除されるようにすることを特徴とする請求項１７に記載のシステム。
【請求項２８】
データベースバックアップから取り出すべきページのリストを生成すること、
前記データベースバックアップを読み取ることによって前記リスト内の前記ページを取り出すこと、
前記データベースバックアップから、前記データベースバックアップ内に含まれる前記データベースより少ないメモリスペースしか要さないデータベースビューを作成すること、
トランザクションログおよび前記取り出されたページを前記データベースビューにコピーすること、
前記データベースビューをトランザクション整合性のある状態に回復すること、および
前記データベースバックアップと前記データベースビューのいずれかからすべてのデータベースページを読み取ることにより、前記データベースバックアップに対して整合性チェックを実行することを含む、データベースバックアップに対して整合性チェックを実行する方法を実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項２９】
データベースバックアップから取り出すべきページのリストを作成する前記ステップは、割り当てページとメタデータページの少なくともいずれか、前記データベースバックアップが作成されている最中に前記データベース内で変更されたページ、前記データベースバックアップの完了時に未コミットの結果を含むページ、および論理的取り消し操作を実行するのに必要なページを含むページリストを生成することをさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
ページの前記リストを生成する前記ステップは、前記データベースバックアップの作成中に変更されたページに関して前記データベースバックアップ内のトランザクションログをスキャンすることを含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３１】
前記リスト内の前記ページを取り出す前記ステップは、完全なデータベースバックアップを読み取ることを含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３２】
前記データベースバックアップからデータベースビューを作成する前記ステップは、特定の時点におけるデータベースバックアップの内容を反映するデータベースビューを作成することをさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３３】
トランザクションログをコピーする前記ステップは、前記データベースバックアップが完了した時点におけるトランザクションを含むトランザクションログをコピーすることを含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３４】
前記データベースビューをトランザクション整合性のある状態に回復する前記ステップは、関連するトランザクションログに基づいてトランザクションに対して取り消し操作およびやり直し操作を実行して、未コミットのトランザクションが前記回復されたデータベースビューから削除されるようにすることをさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３５】
前記ページリストを探し出すために１回、前記整合性チェックを実行している間に１回の２回だけ、前記データベースバックアップを読み取るステップをさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、参照により全体が本明細書に組み込まれている、２００４年３月３１日に出願した米国特許出願第１０／８１４４５９号の優先権を主張する。
【０００２】
次の引用文献の一部の主題が、本出願と共通する。すなわち、
本発明は、一般に、コンピュータデータベースの分野に関する。より詳細には、本発明は、データベースバックアップ整合性確認システムに関する。
【背景技術】
【０００３】
最新のデータベースは、クリティカルな商取引を把握しておくのにユーザを支援する重要なツールになり得る。多くのケースで、データベース損失は、企業に被害甚大（ｄｉｓａｓｔｒｏｕｓ）である可能性がある。データベース損失は、多数の原因から、すなわち、データベースに関する他のサポート構造のいずれかに影響を与えるハードウェア障害、ソフトウェア障害、設備障害、または自然災害から突然生じる可能性がある。このため、損失後のデータベース回復は、適切なデータベース管理の重要な態様である。データベース管理の一態様では、毎週などの、定期的な間隔で完全なデータベースバックアップが通常、行われて、回復のためのバックボーンを提供する。機能する完全なデータベースバックアップを有することは、データベース損失直前の日にデータベースを回復するのに必要とされる部分的な差分の１日単位のデータベースバックアップを適用するための要件である。
【０００４】
通常、データベース管理者は、週単位の完全なデータベースバックアップを行い、そのバックアップを何らかのタイプの媒体に格納する。しばしば、その媒体は、磁気テープである。この週単位の完全なデータベースバックアップが、データベースに関する回復機構のバックボーンである。しかし、媒体に格納されたデータベースバックアップが壊れているか否かについての疑問が残る可能性がある。壊れたデータベースバックアップは、完全には回復可能でない可能性がある。データベースバックアップの存立の可能性（ｖｉａｂｉｌｉｔｙ）を検査する１つの従来技術の方法は、元のデータベースの第２の作業コピーにデータベースバックアップを再構成して、そのデータベースに対して試験を実行することである。この方法は、最新のデータベースがテラバイトサイズである可能性があるため、リソースの点で高価である。しばしば、企業には、データベースバックアップ整合性チェックが実行される未使用の第２のテラバイトのディスク、またはランダムアクセス記憶媒体が、偶然に用意されてはいない可能性がある。しかし、そのような整合性チェックは、データベースバックアップ戦略の信頼性に不可欠である。
【０００５】
データベースに対するそれらの不可欠な試験には、データベースの内部のリンクされたデータ構造に対する試験が含まれる可能性がある。Ｂツリーなどのリンクされたデータ構造は、効率的で、秩序立てられたデータ格納、データ操作、およびデータ取得を円滑にするデータの論理的構成である。リンクされたデータ構造の基本的なコンポーネントは、要素またはノードとして知られる。リンクされたデータ構造内の個々のノードは、ノードのリンクされた構造における隣接ノード群を明らかにする、つまり「ポイントする」ポインタと呼ばれる特別なフィールドによって一緒にリンクされる。また、ポインタは、ときとして、参照とも呼ばれる。
【０００６】
リンクされたデータ構造の各ノードは、リンクされたデータ構造の論理的に隣接するノード群が必ずしも記憶装置上の隣接する物理的場所の中に格納されていないため、正確に表されなければならない。記憶媒体上で１つのノードから次のノードに物理的に近接している保証がないので、無効なポインタが存在する場合、いずれのノードが実際に、リンクされたデータ構造内の次の論理的ノードであるかを知ることが困難である。このため、リンクされたデータ構造内の次の論理的ノードを正しくポイントしないポインタは、リンクされたデータ構造全体を信頼できず、使用できないものにする可能性がある。
【０００７】
図１は、複数のリンクを示し、複数のポインタを要求するデータベース内の基本的なＢツリー構造を示す。データベースノードＡ、Ｂ、Ｃ、Ｄ、およびＥ（それぞれ１０２、１０４、１０６、１０８、１１０）は、ポインタを介してサポートされる、互いに対する階層的関係を有することが可能である。例えば、ルートノード、Ａ１０２は、それぞれポインタ１５２および１５４を有する２つの子ノードＢ１０４およびＣ１０６を有する。ノードＢおよびノードＣは、兄弟であり、前方（ｆｏｒｗａｒｄ）ポインタ１５６および後方（ｂａｃｋ）ポインタ１５８を有することが可能である。リーフノードＤ１０８およびＥ１１０は、ノードＢ１０４の子ノードであり、ＢとＤの間に前方ポインタ１６０および後方ポインタ１６２を有し、ＢとＥの間にポインタ１６４およびポインタ１６６を有することも可能である。ノードＢおよびノードＥは、互いに兄弟であり、前方ポインタ１６８および後方ポインタ１７０を有することが可能である。ノードＢとノードＥの間のポインタ１６４、およびノードＤとノードＥの間のポインタ１６８が失われた、または誤っている場合、ノードＢから、またはノードＤからノードＥへのリンクが失われる。これは、データベース内の対応するデータ関連の損失をもたらす。
【０００８】
一般に、リンクされたデータ構造内のいずれかのポインタが壊れ、または別の形で無効になり、したがって、ポインタが、次のノードまたは子ノードとして意図されているものを正しくポイントしない場合、データ構造全体の整合性が損なわれる。損なわれたデータ構造は、信頼することも、使用することもできない。いくつかのノードだけを有する小さいリンクされたデータ構造内で無効なポインタを識別することは可能であるが、このタスクは、数百万のノードを有する大きいリンクされたデータ構造の場合、非常に複雑になり、時間および／またはコンピューティングリソースの点で高価になり、ノードの間に複数の無効なポインタが存在する場合、さらに困難になる。
【０００９】
したがって、データベース内のそのようなポインタの整合性を確認することがきわめて重要である。さらに、データベースバックアップに対して整合性チェックを実行して、データベースバックアップの整合性を確認し、完全な回復が可能であることを保証することがきわめて重要である。しかし、データベースのバックアップに対して整合性チェックを実行することに実際的な問題が存在する可能性がある。
【００１０】
図２は、データファイル２０５、２０６、２０８、およびログファイル２１０を含む通常のデータベース２００を示す。データファイルは、ページとも呼ばれる記憶ブロックにさらに分割される。これらの記憶ブロックは、データベース内でレコードを保持し、Ｂツリーなどのリンクされたデータ構造に関連するノード群を保持する。データベース２００の通常のデータベースバックアップ２５０は、データベース２００を構成するリテラル（ｌｉｔｅｒａｌ）データファイル２０５、２０６、２０８の全部のバックアップを必ずしも含まない可能性がある。代わりに、データベースバックアップは、何らかの、場合により異なる順序およびフォーマットのデータファイルから、現在、使用中のブロックを含むだけでよい。例えば、データベースバックアップ２５０は、元のデータベース２００内のデータファイル２０５〜２０８のバックアップである、バックアップファイル２２０を含む。データファイル２０５は、何千ものページを含む可能性があるが、数ページ（「データファイル：ページ」という記述的な数字表記法を使用して図２に示す）だけが、データベース２００によって使用される可能性がある。図２の実施例では、データベースバックアップ２５０内のバックアップファイル２２０は、データファイル２０５からの２つのページ、すなわち、２０５：３および２０５：２だけを含む。同様の状況が、データファイル２０６およびデータファイル２０８に関しても存在することが可能である。このため、データベースバックアップは、整合性チェックを実行するための都合のよい、または適合した環境または形態ではない可能性がある。ログファイル２１０Ａが、一般に、データベース２００のデータベースバックアップ２５０に関連付けられて、データベースバックアップが記憶媒体上に置かれている時点でデータベース２００を変更したトランザクションの詳細を提供することが可能である。
【００１１】
従来技術の原理を使用して、データベースバックアップをチェックするのに、データベースが、データベースバックアップから再構成されなければならず、トランザクションログが、再構成されたデータベースバックアップに適用されて、データベースバックアップ操作が完了した時点で存在していた状態にデータベースを回復させなければならず、その後、整合性チェックが実行されなければならない。データベースバックアップのこのタイプの確認を実行するのに要求されるディスクスペースまたはランダムアクセスストレージスペースは、元のデータベースと少なくとも同程度に大きく、大量の時間を要する。というのは、従来技術の整合性チェックは、リンクするポインタなどのアイテムの確認、ならびにストレージ割り当てマップおよびデータベーススキーマメタデータを含むページの探索の際に、データベースの複数回の走査（ｍｕｔｉｐｌｅ  ｐａｓｓｅｓ）を要するため、時間がかかるからである。このタスクは、データベースバックアップのためにテープなどの順次媒体（ｓｅｑｕｅｎｔｉａｌ  ｍｅｄｉａ）が使用される場合、さらに険悪（ｏｍｉｎｏｕｓ）となる。
【００１２】
このため、完全なデータベースバックアップの整合性を確認するストレージスペースと時間の効率のよい方法を可能にするシステムまたは方法の必要性が存在する。本発明は、前述した必要性に対処し、本明細書で述べる追加の利点を伴って、それらの必要性を解決する。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
このため、完全なデータベースバックアップの整合性を確認するストレージスペースと時間の効率のよい方法を可能にするシステムまたは方法の必要性が存在する。本発明は、前述した必要性に対処し、本明細書で述べる追加の利点を伴って、それらの必要性を解決する。
【課題を解決するための手段】
【００１４】
本発明は、元のデータベースよりもはるかに少ないストレージスペースを使用しながら、データベースのバックアップからデータベースの整合性チェックを実行するシステムおよび方法を実現する。データベースバックアップに対して整合性チェックを実行することは、データベースバックアップの整合性を確認して、元のデータベースの再構成が必要となった場合、完全な回復がシステム管理者によって行われることが可能であるようにするのに役立つ。方法は、データベーススキーマメタデータだけを含むデータベースビューの作成、およびデータベースビューの後の作成に必要とされるページの識別を含む。データベースビューは、作成されると、データベースバックアップのトランザクションログの中で追加し、選択された取り消し（ｕｎｄｏ）操作とともにやり直し（ｒｅｄｏ）操作を実行することにより、トランザクション整合性のある時点に至らされることが可能である。やり直しまたは取り消しに関わるページも、データベースビューの中に入れられる。トランザクション整合性のあるデータベースビューが確立されると、データベースバックアップまたはデータベースビューのいずれか訂正されたデータを有する方から、ページの正しいバージョンを読み取ることにより、データベースバックアップの中に含まれるデータベースに対して１つまたは複数の整合性チェックが実行されることが可能である。本発明は、データベースバックアップの整合性を検証して、データベースの完全なバックアップから回復を実行できることを確実にすることにより、回復ポリシーの信頼性をある程度、高める。
【００１５】
図３を使用して典型的なデータベースビューを説明した後、図４〜５に関連して典型的な方法および実施形態を説明する。典型的なコンピューティング環境も、図６に関連して説明する。
【００１６】
以上の概要、ならびに好ましい諸実施形態の以下の詳細な説明は、添付の図面と併せて読むことでよりよく理解される。本発明の諸実施形態を説明するため、図面では、本発明の典型的な構成が示されている。ただし、本発明は、開示する特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１７】
概要
本発明の一実施形態は、元のデータベースよりも少ないストレージスペースを使用しながら、データベースバックアップの中に含まれるデータベースの整合性チェックを実行する方法を実現する。本発明の文脈では、ストレージスペースという用語は、順次ストレージ、ディスクストレージ、およびランダムアクセスストレージ、および均等物を含むが、以上には限定されない、図６の典型的なコンピューティング環境に関連して説明する諸形態のストレージのいずれであることも可能である。
【００１８】
元のデータベースの整合性チェックは、データベースのバックアップから導出されたデータベースビュー、および対応するトランザクションログファイルの使用を介して、本発明の実施形態に従って達することができる。現行の実施形態では、データベースビューは、データベースバックアップの中に含まれるトランザクションログを適用することにより、元のデータベースのバックアップが行われた時点における元のデータベースのトランザクション整合性のあるビューを作成する。トランザクション整合性のあるビューが用意されると、本発明は、データベースバックアップに対して整合性チェックを実行する。整合性チェックが実行されるにつれ、データベースバックアップからのページがまず、読み込まれ、次に、同一のページのトランザクション整合性のあるコピーがデータベースビュー内に存在するかどうかのチェックが実行されることが可能である。ページがデータベースビュー内に存在する場合、そのページが使用される。存在しない場合、データベースバックアップからのページを使用して、整合性チェックを実行することができる。データベース整合性チェックの結果により、データベースの使用可能なコピーをデータベースバックアップから回復できることをシステム管理者が確認することができるようになる。
【００１９】
本発明は、データベースから行われたバックアップに自己矛盾がなく（ｓｅｌｆ  ｃｏｎｓｉｓｔｅｎｔ）、元のデータベースに障害が生じた場合に元のデータベースを回復するのに使用できることの確認において有用性がある。本発明は、データベースバックアップが、磁気テープ、または他の逐次タイプの読み取り機構などの順次媒体に格納される場合、最も有利に使用されることが可能である。データベース整合性チェックは、順次記憶媒体の２回だけの走査を要する。１回の走査は、回復（ページをトランザクション上、整合性のある状態に至らせる）を必要とする、または整合性チェックを主導する（ｄｒｉｖｅ）メタデータを提供する、識別されたページを探し出すのに使用され、第２回の走査は、整合性チェックを実行するのに使用される。また、本発明は、ディスクベースの、または他の任意のタイプのストレージバックアップシステムに対しても有利に使用することができる。というのは、ページは、元のデータベースと比べて、データベースバックアップ内の非常に異なる場所に格納される可能性があるからである。本発明は、システム管理者が、データベースの元のサイズより小さいストレージスペース内で、データベースバックアップに対して整合性チェックを実行することを有利に可能にする。この属性は、元のデータベースの第２の完全なサイズのコピーを再現することなしに整合性確認を実行する経済的な方法を提供する。
【００２０】
本発明の典型的な諸実施形態
リンクされたリスト、ならびに１次インデックスツリーおよび２次インデックスツリーを含む様々なリンクされたデータ構造タイプに関するストレージ構造の整合性の確認における進歩が、「Linked Data Structure Integrity Verification System Which Verifies Actual Node Information with Expected Node Information Stored in a Table」という名称の、２００１年２月６日にイースト（Ｅａｓｔ）他に発行された米国特許第６１８５５６９号明細書において開示されている。この同一出願人による発行済みの特許は、データベースに対して整合性チェックを実行する時間的に効率のよい方法を開示し、参照により全体が本明細書に組み込まれている。
【００２１】
データベースの完全なコピーを作成することなしにトランザクション整合性のある形でデータベースのビューを作成すること（ｖｉｅｗｉｎｇ）における進歩が、「Transaction Consistent Copy-On-Write Databases」という名称の２００３年６月３０日に出願した特許出願第１０／６１１７７４号明細書において開示されている。この同一出願人による発行済みの特許は、データベースビューを提供するストレージスペースの効率のよい方法を開示し、参照により全体が本明細書に組み込まれている。データベースビューは、データベースの完全なコピーを作成することなしに、以前の時点におけるデータベースのトランザクション整合性のあるビューを提供する。
【００２２】
本発明の態様では、データベースビューは、データベースの整合性をチェックするのに必要とされるメタデータのビューを作成するツールとして使用される。また、データベースビューは、ページをトランザクション上、矛盾がないようにするのに、トランザクションログからのやり直し操作および取り消し操作の適用を必要とするページを格納するのにも使用される。そのようなデータベースビューは、データベースバックアップとの組合せで、完全なデータベースバックアップ操作が完了した時点における元のデータベースのコピーを作成するのに必要なすべての情報を含む。ただし、データベースビューは、その情報の全部は自らの中に含まず、このため、元のデータベースの完全なコピーよりもサイズが小さいことが可能である。
【００２３】
本発明の文脈において、データベースビューは、データベースバックアップ内で表されるデータベース内の各データファイルに対応する少なくとも１つのスパース（ｓｐａｒｓｅ）ファイルを含む。スパースファイル内では、実際に必要とされるファイルの部分だけが、ストレージスペースに書き込まれる。ファイルの他のすべての領域は、未割り当てである。スパースファイルは、データベースバックアップから必要なあらゆるページのコピーを含むことが可能である。スパースファイルを使用することは、１つの可能な実施形態を提供し、元のデータファイル内のページの、スパースファイル内のそのページの位置に対するオフセットをマップするテーブルの必要性が回避される。別の可能な実施形態は、通常のファイルを使用することであり、通常のファイルをサイドファイルと呼ぶと、ビューのために必要とされるページが、次々にサイドファイルの中に入れられ、所与のＩＤを有するページをサイドファイル内の位置にマップするのにマッピングテーブルが使用される。
【００２４】
データベースに関するメタデータ、スキーマ、またはカタログデータの全体が、整合性チェック操作のために利用できることが好ましい。データベースバックアップの中に格納されたメタデータは、一般に、データベースシステムによって使用可能でない形態になっている。というのは、メタデータを含むページが、データベースバックアップのファイル群の中に散らばっており、それらのページを探し出す効率的な方法が存在しないからである。さらに、データベースバックアップ操作の時点でアクティブであったトランザクションによって操作が影響されているために、それらの操作がやり直される、または取り消される必要があるいくつかのページが、データベースバックアップ内に存在する。整合性チェックは、それらのページが整合性のある状態に至らされるまで実行されることが不可能である。一実施形態では、データベースビューは、好ましくは、メタデータページ、スキーマページ、またはカタログページが都合よく探し出される環境として使用され、トランザクションログから実行されるやり直し操作または取り消し操作を必要とするページが探し出される環境である。
【００２５】
本発明は、データベースバックアップ内のデータの単位としてページに関連して説明するが、元のデータベースに関する他のデータ単位が使用できることも企図される。
【００２６】
整合性チェック中、データベースバックアップ内のすべてのページが検査されなければならない。同一のページのトランザクション上、整合性のあるバージョンが、以前に作成されたデータベースビュー内に存在するかどうかを判定するチェックが、行われなければならない。存在する場合、データベースビューからのそのページのそのバージョンが、整合性チェックを実行するのに使用されなければならない。特定のページのいずれのバージョンを使用すべきかを判定するため、データベースビュー内におけるそのページの有効なバージョンの存在が確かめられなければならない。一実施形態では、データベースビューが直接に読み取られて、そのページの有効なバージョンが存在するかどうかが確かめられる。
【００２７】
別の実施形態では、データベースビュー内に所与のページのバージョンが存在するかどうか、および有効であるかどうかに関するデータを格納するサイドファイルマッピングテーブルが作成される。データベースビューのサイドページテーブルにより、データベースビュー内に所与のページが存在するかどうかの迅速な判定が可能になる。
【００２８】
図３に示すとおり、データベースバックアップ２５０内に含まれるデータベースのデータベースビュー３２０は、スパースファイル３０５、３０６、および３０８から成る。データベースバックアップ内のデータファイルのそれぞれ（２０５、２０６、および２０８）は、データベースビュー３２０内に対応するスパースファイル（それぞれ３０５、３０６、および３０８）を有する。やり直し操作および取り消し操作を実行することをより容易にするログ２１０Ａのコピーも、データベースビュー内に含まれることが可能である。別の実施形態では、データベースビュー内のサイドファイルのそれぞれに関して別個のサイドページテーブルが存在する。
【００２９】
前述したとおり、トランザクションログ２１０は、データベースバックアップ操作が開始されてから完了されるまで、元のデータベース２００に対して実行されたすべてのトランザクションの逐次レコードである。トランザクションログは、元のデータベース２００のデータベースバックアップ操作が完了した時点にデータベースビューを回復するのに使用される。トランザクションログは、完了したトランザクション、つまり開始とコミットの両方が行われたトランザクションと、開始されたが、コミットされなかった未完了のトランザクションをともに含むことが可能である。未完了のトランザクションは、未コミットのトランザクションとしても知られる。
【００３０】
未コミットのトランザクションは、データファイルの一部の変更が、バッファキャッシュからデータファイルに書き込まれていない可能性があり、データファイル内の未完了のトランザクションからのいくつかの変更が存在する可能性があるため、トランザクションの矛盾を生じさせる可能性がある。ログファイルが、データベースの回復にトランザクション整合性があることを確実にするのに使用される。これは、ＡＲＩＥＳ（Algorithms for Recovery and Isolation Exploiting Semantics（セマンティクスを活用する回復および分離のためのアルゴリズム））スタイルの回復を使用して行われる。データファイルに書き込まれなかった可能性があるトランザクションログの中に記録されたすべての変更は、データベース上でその変更を実行することにより、ロールフォワード（ｒｏｌｌ  ｆｏｒｗａｒｄ）される。データベースの整合性を確実にするため、トランザクションログの中で見つかったすべての未完了のトランザクションが、データベース上でその変更を取り消すことによってロールバック（ｒｏｌｌ  ｂａｃｋ）される。
【００３１】
図４は、完全なデータベースバックアップ、およびトランザクションログファイルから導出されたトランザクション整合性のあるデータベースビューの生成の実施例を示す。データベースバックアップ４００は、典型的なデータベースのページ４０１〜４０９のすべてを含むデータベースの完全なバックアップを表す。データベースバックアップ操作中、データベースバックアップ操作の進行中に行われたトランザクションのすべてを記録するトランザクションログ４３４が、逐次に生成されている。典型的なトランザクションログ４３４は、データベースバックアップの生成中にデータベースのページＰ４０２、Ｑ４０４、Ｒ４０６、およびＳ４０８の上でトランザクションが行われたことを記録した。トランザクションログは、ページＰ上のトランザクションが、ログレコード４２０で開始され、そのトランザクションが、ログレコード４３０でコミットされた（つまり、完了した）ことを記録した。同様に、ページＲ上のトランザクションが、ログレコード４２２で開始されて、ログレコード４２４でコミットされ、ページＳ上のトランザクションが、ログレコード４２８で開始され、ログレコード４３２でコミットされている。しかし、ページＱ上のトランザクションに関して、開始ログレコード４２６だけが記録されている。データベースバックアップ操作が完了された時点までに記録されたページＱ上のトランザクションに関するコミットログレコードは、存在しない。したがって、ページＱ上のトランザクションに関して、トランザクション矛盾が存在する。このため、ページＱ上のトランザクションは、ロールバックされて、データベースのデータベースビュー内の変更が削除されなければならない。
【００３２】
データベースバックアップ内に含まれるデータベースのトランザクション整合性のあるビュー４８０は、とりわけ、データベースバックアップ操作が完了した時点における、データベースのトランザクション整合性のある訂正済みのページであるページを含む。このため、ページＰ上、ページＱ上、ページＲ上、およびページＳ上におけるやり直し操作および取り消し操作に対する変更は、それらのページのコピー上で実行されて、データベースビュー４８０内でページＰ’４０２’、ページＱ’４０４’、ページＲ’４０６’、およびＳ’４０８’がもたらされ、データベースに対するマッピングが、データベースバックアップ４００内に含まれる。ただし、すべてのページが、データベースビュー内でアクティブに表されるわけではなく、例えば、Ｔ４０９およびＵ４１０がそうであり、このため、データベースバックアップ４００内に含まれるデータベースのデータベースビューが要するストレージスペースは、データベースバックアップ４００または元のデータベースより大幅に少ないことに留意されたい。
【００３３】
一般に、データベースバックアップ操作が開始した後にログレコードが生成された場合にログレコードによって影響されるページは、データベースビューを整合性があるようにするためにログレコードをやり直す必要がある可能性が高いため、データベースバックアップ内に含まれるデータベースのデータベースビュー内で現れる可能性がある。さらに、データベースビュー内でロールバックされる必要がある可能性があるトランザクションなどの、データベースバックアップ操作が完了した時点で依然としてアクティブであってトランザクションに関するログレコードによって影響されるページも、データベースビュー内で現れる可能性がある。というのは、ログレコードが、取り消される必要があることになり、トランザクションを取り消すことは、データベースビュー内のそのページのバージョンを変更することを要する可能性があるからである。
【００３４】
データベースバックアップ４００からデータベースビュー４８０にコピーされる可能性があるその他のページには、元のデータベースの内容を記述する割り当てページおよびメタデータ／カタログページが含まれる。割り当てページおよびメタデータ／カタログページは、その後に行われる整合性チェック中に繰り返し使用される可能性があり、特にデータベースバックアップが、磁気テープなどの順次媒体に格納される場合、データベースバックアップからページを繰り返し探し出すことに固有のパフォーマンス問題を回避するため、データベースビュー内に「キャッシュ」される必要がある可能性がある。一般に、割り当てページおよびメタデータ／カタログページは、データベースバックアップ内で見つかった際に識別されることが可能である。通常、この識別は、特定のページＩＤ、またはページヘッダ内のページタイプフラグまたはテーブルＩＤに基づくことが可能である。
【００３５】
データベースバックアップ４００からデータベースビュー４８０にコピーされる別のカテゴリのページが、データベースバックアップが作成されている最中にデータベース内で変更されたページである。データベースバックアップ操作が実行されている最中に変更されたページは、データベースバックアップ操作の時刻を範囲に含むトランザクションログによって識別されることが可能であり、通常、データベースバックアップ内、または別個のログバックアップ内に含まれる。トランザクションログは、データベースバックアップ操作中に算出され、データベースバックアップ内に記録された、開始／終了ログシーケンス番号、ＬＳＮに基づくデータベースバックアップ操作の時間にわたってスキャンされることが可能である。変更されたページのＩＤは、一時的メモリ内ハッシュテーブル、または類似した構造の中に格納されることが可能である。
【００３６】
データベースバックアップ４００からデータベースビュー４８０にコピーされる別のカテゴリのページは、Ｂツリーインデックスに行を挿入すること、または削除することなどの、論理的取り消し操作を実行するのに必要なページである。Ｂツリーに対するログ操作に関して、さらなるページは、Ｂツリーの内部ページである。それらのページは、バックアップ４００から獲得することができ、それらのページがカバーするキー範囲によって特定される。例えば、ＢツリーへのキーＫの挿入に関するログ記録は、キーＫを含むリーフページに対するインデックスのルートからのすべてのページを要求する。内部ページは、Ｋを含むキー範囲をカバーするページとして識別されることが可能である。ページは、データベースバックアップ４００からデータベースビュー４８０にコピーされる。
【００３７】
データベースバックアップに対するデータベースビュー革新の適用により、バックアップ４００内に含まれ、データベースビュー４８０内で表されたデータベースに対して整合性チェックを実行して、データベースバックアップの整合性を確実にする方法が提供される。図５は、データベースバックアップ内に含まれるデータベースを元のデータベースの完全なサイズのストレージスペースに復元することなしに、データベースバックアップの整合性をチェックするステップを略述する流れ図である。
【００３８】
最初に、データベースバックアップから取り出されるべきすべてのページのリストが作成される（ステップ５１０）。割り当てページおよびメタデータ／カタログページは、好ましくは、データベースバックアップ内で見つかった際に識別される。通常、この識別は、特定のページＩＤ、またはページヘッダ内のページタイプフラグまたはテーブルＩＤに基づくことが可能である。ステップ５１０のリストに含められることが可能なページには、データベースバックアップ操作が実行されている最中に変更されたページが含まれることが可能である。それらの変更されたページは、データベースバックアップ操作の時刻を範囲に含むトランザクションログによって識別されることが可能であり、通常、データベースバックアップ内、または別個のログバックアップ内に含まれることが可能である。トランザクションログは、データベースバックアップ操作中に算出され、データベースバックアップ内に記録された、開始／終了ログシーケンス番号、ＬＳＮに基づくデータベースバックアップ操作の時間にわたってスキャンされることが可能である。変更されたページは、一時的メモリ内ハッシュテーブル、または類似の構造の中に格納されることが可能である。ステップ５１０のリストは、トランザクションログによって識別された未コミットの結果を有するページも含むことが可能である。ステップ５１０のリスト内に含まれる別のタイプのページは、割り当てページおよびメタデータページを一般に含む、論理的取り消し操作のために必要なページ群、ならびにデータページのルックアップに必要である可能性があるＢツリーの内部ノード群であることが可能である。一実施形態では、潜在的に多数の内部ノードページを制限する１つのやり方は、前述したとおり、論理的取り消し操作が実行されることを要するレコード群のキーに基づいてページをフィルタリングすることである。
【００３９】
次に、データベースビューが、本明細書で説明するとおり生成されることが可能である（ステップ５１５）。次に、データベースバックアップがスキャンされて（ステップ５２０）、ステップ５１０で識別されたページ群が探し出されることが可能である。バックアップがスキャンされると、識別されたページ群、およびトランザクションログファイルが、データベースビューにコピーされる（ステップ５２５）。トランザクションログは、データベースバックアップ操作の進行中にアクティブであったトランザクションによって変更されたページ群を復元し、そのページ群を整合性のある時点に復元するのに使用される。その時点は、通常、データベースバックアップ操作の終了の時点であることが可能である。次に、トランザクション整合性のある状態への回復には、ステップ５３０の一環として、データベースビューに対してやり直し操作を実行することが関わる。トランザクションログファイルも分析されて、未完了または未コミットのトランザクションが検出される。未コミットのトランザクションは、ステップ５３０の一環として、取り消し操作を実行することによってロールバックされることが可能である。ログレコードをやり直すことの効果、および取り消すことの効果は、データベースビュー内に格納されたページのコピー上で反映される。
【００４０】
この時点までの手続きは、元のデータベースよりはるかに少ないストレージスペース内で、データベースバックアップ内に含まれるデータベースのトランザクション整合性のあるデータベースビューをもたらした。次に、１つまたは複数のデータベース整合性チェックが、データベースビューとデータベースバックアップの組合せに対して実行されて（ステップ５３５）、データベースバックアップ内に含まれるデータベースのページのすべてを完全に復元することなしに、データベースバックアップの整合性がチェックされることが可能である。一実施形態では、整合性チェックを実行することには、データベースバックアップまたはデータベースビューからすべてのデータベースページを、あたかもそれらのページが、復元済みのデータベース、または通常のデータベースビューの中に格納されているかのように、それらのページがバックアップ媒体に格納されている順序で読み取ることが関わる。このプロセスにおいて、データベース内のすべてのページに関して、そのページが、整合性チェックを必要とする（すなわち、テーブル／インデックスデータを含む）ページであった場合、そのページは、データベースバックアップから読み取られることが可能であり、データベースビュー内にそのページの変更されたコピーが存在するかどうかを調べるチェックが行われることが可能である。存在する場合、その変更されたコピーが、整合性チェックのために使用されることが可能である。存在しない場合、データベースバックアップから読み取られたページが使用されることが可能である。この手続きは、特定のページを迅速に読み取ることを可能にする順序でデータベースバックアップ内にページが格納されていない可能性があるため、好ましい可能性がある。
【００４１】
ページが、データベースバックアップ内に含まれないが、トランザクションログの中で参照されていることが可能である。このトランザクションログ参照は、通常、そのページをデータベースに関する新たなページとして割り当て、フォーマットするログレコードによって行われる可能性がある。このため、ステップ５３５のためのアルゴリズムは、データベースバックアップ内に含まれていなかったすべてのページをデータベースビューから読み取ることが含まれる。これは、いくつかの異なる手段によって容易に行うことができる。一実施形態は、メモリ内テーブルに、前述したとおりデータベースビューから読み取られるすべてのページを記録させることができる。次に、読み取られなかったページを追加する。別の実施形態では、メモリ内テーブルが大きくなり過ぎる場合、代替を提供する。すなわち、データベースビュー内の各ページに、ページが既にチェック済みであることを示すページのヘッダ内のフラグビットでマークを付けることが可能である。最後に、データベースビューは、整合性チェックの完了後、オプションとして、削除することができる（ステップ５４０）。
【００４２】
整合性チェックに合格した場合、データベース管理者は、データベースバックアップからのデータベースの再構成が必要とされる場合、データベースのデータベースバックアップが、データベースバックアップからの完全なデータベース復元を許すだけの十分な品質であることを保証されることが可能である。これは、データベースバックアップの整合性が、依拠することのできる既知数（ｋｎｏｗｎ  ｑｕａｎｔｉｔｙ）であるという点で貴重である。整合性チェックが不合格であった場合、データベース管理者は、いくつかのオプションを有する。１つのオプションは、データベースバックアップを再実行して、整合性チェック失敗を克服することであることが可能である。そのような失敗は、障害のある記憶媒体、またはその他の問題の結果である可能性がある。
【００４３】
別のオプションは、データベースバックアップに変更を行って、データベースビューの中で見られる回復済みのデータベースが、データベースビューに対して実行された整合性チェックに合格できるようにすることにより、データベースバックアップ内で見つかった特定の整合性エラーを修復することであることが可能である。このオプションは、好ましくは、やり直し操作および取り消し操作に関与しなかったページ群に対して行われた訂正に関して適用される。すると、変更されたデータベースバックアップは、データベースバックアップからのデータベースの再構成が必要とされる場合に、後の完全なデータベース回復に必要とされる完全な整合性を有することが可能である。
【００４４】
典型的なコンピューティングデバイス
図６および以下の説明は、本発明の諸実施形態を実施することができる適切なコンピューティング環境の簡単な一般的な説明を提供することを目的とする。汎用コンピュータを以下に説明するが、これは、一実施例に過ぎず、本発明の諸実施形態は、ネットワーク／バスの相互運用性および対話を有するクライアントなどの、他のコンピューティングデバイスを使用して実施することもできる。このため、本発明の諸実施形態は、非常にわずかな、または最小限のクライアントリソースだけが関わるネットワーク化された、ホストされたサービスの環境において、例えば、クライアントデバイスが、機器、または他のコンピューティングデバイス群およびオブジェクト群の内部に配置されたオブジェクトなどの、ネットワーク／バスに対するインターフェースとしての役割だけをするネットワーク化された環境において実施することもできる。基本的に、データを格納することができる、またはデータを取り出すことができる任意の場所が、動作のための望ましい、または適切な環境である。
【００４５】
必須ではないが、本発明の諸実施形態は、デバイスまたはオブジェクトのサービスの開発者が使用するために、オペレーティングシステムを介して実施されることも可能であり、かつ／またはアプリケーションソフトウェア内部に含められることも可能である。ソフトウェアは、クライアントワークステーション、サーバ、または他のデバイスなどの１つまたは複数のコンピュータによって実行される、プログラムモジュール群などの、コンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュール群には、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。通常、プログラムモジュール群の機能は、様々な実施形態において所望に応じて組み合わせることも、分散させることもできる。さらに、本発明の様々な諸実施形態は、他のコンピュータ構成を使用して実施することもできることが当業者には認められよう。使用に適する可能性がある他の周知のコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成には、パーソナルコンピュータ（ＰＣ）、現金自動預払機、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル家庭用電化製品、ネットワークＰＣ、器具類、照明、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどが含まれるが、以上には限定されない。本発明の諸実施形態は、タスクが、通信ネットワーク／バス、またはその他のデータ伝送媒体を介してリンクされたリモート処理装置群によって実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュール群は、メモリ記憶装置群を含むローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体の両方の中に配置することができ、クライアントノード群が、サーバノード群として動作することができる。
【００４６】
このため、図６は、本発明の諸実施形態を実施することができる適切なコンピューティングシステム環境の実施例を示す。ただし、以上に明記したとおり、コンピューティングシステム環境６００は、適切なコンピューティング環境の一実施例であり、本発明の実施形態の使用または機能の範囲について何ら限定を示唆するものではない。また、コンピューティング環境６００が、典型的な動作環境６００に例示したコンポーネントのいずれの１つ、または組合せに関連する依存関係または要件も有するものと解釈してはならない。
【００４７】
図６を参照すると、本発明の実施形態を実施するための典型的なシステムが、コンピュータシステム６１０の形態で汎用コンピューティングデバイスを含む。コンピュータシステム６１０のコンポーネントには、処理装置６２０、システムメモリ６３０、ならびにシステムメモリから処理装置６２０までを含む様々なシステムコンポーネントを結合するシステムバス６２１が含まれることが可能であるが、以上には限定されない。システムバス６２１は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかのタイプのバス構造のいずれであることも可能である。例として、限定としてではなく、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＭＣＡ）バス、エンハンストＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）（ＥＩＳＡ）バス、ビデオエレクトロニクススタンダーズアソシエーション（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）（ＶＥＳＡ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるペリフェラルコンポーネントインターコネクト（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）（ＰＣＩ）バスが含まれることが可能である。
【００４８】
コンピュータシステム６１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータシステム６１０がアクセスすることができる任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体がともに含まれる。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性媒体および不揮発性媒体、リムーバブルな媒体およびリムーバブルでない媒体が含まれる。コンピュータ記憶媒体には、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読み出し専用メモリ（ＣＤＲＯＭ）、書き換え可能なコンパクトディスク（ＣＤＲＷ）、デジタルバーサタイルディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータシステム６１０がアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実体化し、任意の情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号内に情報を符号化するような形で特性の１つまたは複数が設定または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、以上のいずれかの組合せも、コンピュータ可読媒体の範囲に含められなければならない。
【００４９】
システムメモリ６３０は、読み取り専用メモリ（ＲＯＭ）６３１やランダムアクセスメモリ（ＲＡＭ）６３２などの、揮発性メモリおよび／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。始動中などに、コンピュータシステム６１０内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム６３３（ＢＩＯＳ）が、通常、ＲＯＭ６３１の中に格納される。ＲＡＭ６３２は、通常、処理装置６２０が即時にアクセスすることができ、かつ／または現在、処理しているデータおよび／またはプログラムモジュール群を含む。例として、限定としてではなく、図６は、オペレーティングシステム６３４、アプリケーションプログラム群６３５、その他のプログラムモジュール群６３６、およびプログラムデータ６３７を示す。
【００５０】
コンピュータシステム６１０は、他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピュータ記憶媒体も含むことが可能である。単に例として、図６は、リムーバブルでない不揮発性の磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ６４１、リムーバブルな不揮発性の磁気ディスク６５２に対して読み取りまたは書き込みを行う磁気ディスクドライブ６５１、およびＣＤ  ＲＯＭ、ＣＤＲＷ、ＤＶＤ、またはその他の光媒体などの、リムーバブルな不揮発性の光ディスク６５６に対して読み取りまたは書き込みを行う光ディスクドライブ６５５を示す。典型的な動作環境において使用されることが可能な他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、以上には限定されない。ハードディスクドライブ６４１は、通常、インターフェース６４０のようなリムーバブルでないメモリインターフェースを介してシステムバス６２１に接続され、磁気ディスクドライブ６５１および光ディスクドライブ６５５は、通常、インターフェース６５０のようなリムーバブルなメモリインターフェースでシステムバス６２１に接続される。
【００５１】
前述し、図６に示したドライブ群、および関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール群、およびその他のデータのストレージをコンピュータシステム６１０に提供する。図６では、例えば、ハードディスクドライブ６４１が、オペレーティングシステム６４４、アプリケーションプログラム群６４５、その他のプログラムモジュール群６４６、およびプログラムデータ６４７を格納しているのが示されている。これらのコンポーネントは、オペレーティングシステム６３４、アプリケーションプログラム群６３５、その他のプログラムモジュール群６３６、およびプログラムデータ６３７と同一であることも、異なることも可能であることに留意されたい。オペレーティングシステム６４４、アプリケーションプログラム群６４５、その他のプログラムモジュール群６４６、およびプログラムデータ６４７に、少なくともそれらが異なるコピーであることを示すために、ここでは、異なる符号を付けている。ユーザは、キーボード６６２や、マウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス６６１などの入力デバイス群を介して、コマンドおよび情報をコンピュータシステム６１０に入力することができる。その他の入力デバイス群（図示せず）には、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることが可能である。以上、およびその他の入力デバイス群は、しばしば、システムバス６２１に結合されたユーザ入力インターフェース６６０を介して処理装置６２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造で接続してもよい。また、モニタ６９１、または他のタイプのディスプレイデバイスも、ビデオインターフェース６９０のようなインターフェースを介してシステムバス６２１に接続され、このインターフェースは、ビデオメモリ（図示せず）と通信することが可能である。モニタ６９１に加え、コンピュータシステムは、出力周辺インターフェース６９５を介して接続することができるスピーカ６９７やプリンタ６９６などの他の周辺出力デバイス群も含むことが可能である。
【００５２】
コンピュータシステム６１０は、リモートコンピュータ６８０のような１つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境、または分散環境において動作することもできる。リモートコンピュータ６８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、コンピュータシステム６１０に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶装置６８１だけを図６に示している。図６に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）６７１およびワイドエリアネットワーク（ＷＡＮ）６７３を含むが、他のネットワーク／バスも含むことが可能である。そのようなネットワーキング環境は、自宅、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【００５３】
ＬＡＮネットワーキング環境で使用される場合、コンピュータシステム６１０は、ネットワークインターフェースまたはネットワークアダプタ６７０を介してＬＡＮ６７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータシステム６１０は、通常、インターネットなどのＷＡＮ６７３を介して通信を確立するためのモデム６７２、または他の手段を含む。内部にあることも、外部にあることも可能なモデム６７２は、入力インターフェース６６０、または他の適切な機構を介してシステムバス６２１に接続することができる。ネットワーク化された環境では、コンピュータシステム６１０に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモートメモリ記憶装置の中に格納することができる。例として、限定としてではなく、図６は、リモートアプリケーションプログラム群６８５がメモリデバイス６８１上に存在しているのを示す。図示したネットワーク接続は、典型的であり、コンピュータ間で通信リンクを確立する他の手段も使用できることが認められよう。
【００５４】
様々な分散コンピューティングフレームワークが、パーソナルコンピューティングとインターネットの収斂に鑑みて開発されており、開発中である。個人にも、ビジネスユーザにも等しく、アプリケーション群およびコンピューティングデバイス群のためのシームレスに相互運用可能なＷｅｂ対応のインターフェースが適用されており、コンピューティング活動をますますＷｅｂブラウザ指向またはネットワーク指向にしている。
【００５５】
例えば、マイクロソフトコーポレーションから入手可能なＭＩＣＲＯＳＯＦＴ（登録商標）の．ＮＥＴ（商標）プラットフォームは、サーバ群、Ｗｅｂデータベースのデータストレージなどのビルディングブロックサービス群、およびダウンロード可能なデバイスソフトウェアを含む。本明細書における典型的な諸実施形態は、コンピューティングデバイス上に存在するソフトウェアに関連して説明しているが、本発明の実施形態の１つまたは複数の部分を、コプロセッサ、ディスプレイデバイス、および要求側オブジェクトのいずれかの間のオペレーティングシステム、アプリケーションプログラミングインターフェース（ＡＰＩ）、または「ミドルマン（ｍｉｄｄｌｅ  ｍａｎ）」オブジェクトを介して実施して、動作が、．ＮＥＴ（商標）の言語およびサービスのすべてによって実行され、それらのすべてにおいてサポートされ、それらのすべてを介してアクセスされるとともに、他の分散コンピューティングフレームワークにおいても実行され、サポートされ、アクセスされることが可能であるようにすることができる。
【００５６】
前述したとおり、本発明の典型的な諸実施形態を様々なコンピューティングデバイスおよびネットワークアーキテクチャに介して説明してきたが、基礎にある概念は、データベースバックアップに対して整合性チェックを実行するのに役立つシステムを実施することが所望される任意のコンピューティングデバイスまたはコンピューティングシステムに適用することができる。このため、本発明の諸実施形態に関連して説明した方法およびシステムは、様々なアプリケーションおよびデバイスに適用することができる。典型的なプログラミング言語、名前、および実施例を様々な選択を代表するものとして本明細書で選択したが、それらの言語、名前、および実施例は、限定することを意図していない。本発明の諸実施形態によって達せられるのと同一の、同様の、または均等のシステムおよび方法を実現するオブジェクトコードを提供する多数のやり方が存在することが、当業者には認められよう。
【００５７】
本明細書で説明する様々な技術は、ハードウェアまたはソフトウェア、あるいは適宜、その両方の組合せに関連して実施することができる。このため、本発明の方法および装置、または本発明の方法および装置のいくつかの態様または部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意のマシン可読記憶媒体などの、実体のある媒体で実現されたプログラムコード（すなわち、命令）の形態をとることができ、プログラムコードが、コンピュータなどのマシンに読み込まれ、実行されると、そのマシンが、本発明を実施するための装置になる。プログラマブルコンピュータ上でプログラムコードが実行されるケースでは、コンピューティングデバイスは、一般に、プロセッサ、そのプロセッサが読み取ることができる記憶媒体（揮発性のメモリおよび／または記憶要素、および不揮発性のメモリおよび／または記憶要素を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを含む。
【００５８】
本発明の諸態様を様々な図の好ましい諸実施形態に関連して説明してきたが、本発明を逸脱することなく本発明と同一の機能を実行するために、他の同様な諸実施形態を使用すること、あるいは説明した実施形態に変更または追加を行うこともできることを理解されたい。さらに、特に無線ネットワーク化されたデバイスの数が増えつづけているなかで、ハンドヘルドデバイスオペレーティングシステム、および他のアプリケーション固有のオペレーティングシステムを含め、様々なコンピュータプラットフォームが企図されていることも強調されなければならない。したがって、請求する発明は、いずれの単一の実施形態にも限定されるべきではなく、むしろ、添付の特許請求の範囲に従った広がりと範囲で解釈されなければならない。
【図面の簡単な説明】
【００５９】
【図１】正しさに関して検証されなければならない典型的なデータ構造を示すブロック図である。
【図２】データベースの典型的なバックアップを示すブロック図である。
【図３】本発明のデータベースビュー態様を示すブロック図である。
【図４】データベースビューの典型的なページを示すブロック図である。
【図５】本発明の方法を示す典型的な流れ図である。
【図６】本発明の諸態様を実施することができる典型的なコンピューティング環境を示すブロック図である。
【図１】
2007531155.tif 000003
【図２】
2007531155.tif 000004
【図３】
2007531155.tif 000005
【図４】
2007531155.tif 000006
【図５】
2007531155.tif 000007
【図６】
2007531155.tif 000008
【手続補正書】
【提出日】平成19年7月30日(2007.7.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベースバックアップに対して整合性チェックを実行するための方法であって、
データベースバックアップから取り出すべきページのリストを生成すること、
前記データベースバックアップを読み取ることによって前記リスト内の前記ページを取り出すこと、
前記データベースバックアップから、前記データベースバックアップ内に含まれる前記データベースより少ないメモリスペースしか要さないデータベースビューを作成すること、
トランザクションログおよび前記取り出されたページを前記データベースビューにコピーすること、
前記データベースビューをトランザクション整合性のある状態に回復すること、および
前記データベースバックアップと前記データベースビューのいずれかからすべてのデータベースページを読み取ることにより、前記データベースバックアップに対して整合性チェックを実行することを含むことを特徴とする方法。
【請求項２】
データベースのバックアップから取り出すべきページのリストを生成することは、割り当てページとメタデータページの少なくともいずれか、前記データベースバックアップが作成されている最中に前記データベース内で変更されたページ、前記データベースバックアップの完了時に未コミットの結果を含むページ、および論理的取り消し操作を実行するのに必要なページを含むページリストを生成することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
論理的取り消し操作を実行するのに必要なページを含むページリストを生成することは、更新に関するログレコードの中に含まれるキーを使用して、Ｂツリーのいずれの内部ノードページが、特定のログレコードに関する論理的取り消し操作を実行するのに必要とされるかを特定することを含むことを特徴とする請求項２に記載の方法。
【請求項４】
ページの前記リストを生成することは、前記データベースバックアップの作成中に変更されたページに関して前記データベースバックアップ内のトランザクションログをスキャンすることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記リスト内の前記ページを取り出すことは、１回だけ完全なデータベースバックアップを読み取り、前記リスト内の前記ページを前記データベースビューにコピーすることを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記データベースバックアップからデータベースビューを作成することは、特定の時点におけるデータベースバックアップの内容を反映するデータベースビューを作成することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
トランザクションログをコピーすることは、前記データベースがバックアップされている最中に行われたトランザクションを含むトランザクションログをコピーすることを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記データベースビューをトランザクション整合性のある状態に回復することは、前記データベースバックアップ操作中に行われた変更のすべては反映していなかったページに対してやり直し操作を実行することを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記やり直し操作は、関連するトランザクションログに基づき、すべてのコミットされたトランザクションが前記データベースビュー内で反映されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記関連するトランザクションログに基づいてページに対して取り消し操作を実行して、すべての未コミットのトランザクションの効果が前記データベースビューから削除されるようにすることをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記リスト内の前記ページを探し出すために１回、前記整合性チェックを実行している間に１回の２回だけ、前記データベースバックアップを読み取ることをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記データベースビューがトランザクション上の整合性を有するようにされるまで、前記整合性チェックを遅延させることをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１３】
前記データベースバックアップ、および前記トランザクション上の整合性を有するデータベースビューを使用して前記整合性チェックを実行することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１４】
整合性チェックを実行することは、
前記データベースビューからのすべてのページを１回、読み取ること、および
前記データベースビューからのページを、前記ページの訂正されたバージョンが前記データベースビュー内に存在する場合、前記整合性チェックにおいて使用することを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記データベースバックアップからのページを、前記ページの訂正されたバージョンが前記データベースビュー内に存在しない場合、前記整合性チェックにおいて使用することをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記データベースバックアップ内で見つからないが、代わりに、前記ビュー内だけで見つかるすべてのページが、前記整合性チェックの中に含まれることを確実にすることをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１７】
データベースバックアップ情報とログトランザクションデータの少なくともいずれかを受け取るための入力デバイスと、
プログラムを記録したメモリへアクセスすることができるプロセッサとを備えたシステムであって、前記プログラムは、前記プロセッサに、
データベースバックアップから取り出すべきページのリストを生成するステップと、
前記データベースバックアップにアクセスすることによって前記リスト内の前記ページを取り出すステップと、
前記データベースバックアップから、前記データベースバックアップ内に含まれる前記データベースより少ないメモリスペースしか要さないデータベースビューを作成するステップと、
トランザクションログおよび前記取り出されたページを前記データベースビューにコピーするステップと、
前記データベースビューをトランザクション整合性のある状態に回復するステップと、
前記データベースバックアップおよび前記トランザクション整合性のあるデータベースビューを使用して、前記データベースバックアップに対して整合性チェックを実行するステップと
を実行させることを特徴とするシステム。
【請求項１８】
前記整合性チェックを実行するステップは、
前記データベースビューからのすべてのページを１回、読み取ること、および
前記データベースビューからのページを、前記ページの訂正されたバージョンが前記データベースビュー内に存在する場合、前記整合性チェックにおいて使用することを含むことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記プログラムは、前記ページの訂正されたバージョンが前記データベースビュー内に存在しない場合、前記整合性チェックにおいて前記データベースバックアップからのページを使用するステップをさらに前記プロセッサに実行させることを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記整合性チェックを実行するステップは、前記データベースバックアップ内で見つからないが、代わりに、前記ビュー内だけで見つかるすべてのページが、前記整合性チェックの中に含まれることを確実にすることをさらに含むことを特徴とする請求項１７に記載のシステム。
【請求項２１】
前記整合性チェックの前記ステータスを監視するためのディスプレイデバイスをさらに備えたことを特徴とする請求項１７に記載のシステム。
【請求項２２】
前記データベースバックアップは、順次ストレージ、ディスクストレージ、およびランダムアクセスストレージのいずれかを含むことを特徴とする請求項１７に記載のシステム。
【請求項２３】
前記プログラムは、前記プロセッサに、前記ページリストを探し出すために１回、前記整合性チェックを実行している間に１回の２回だけ、前記データベースバックアップを読み取るステップをさらに実行させることを特徴とする請求項１７に記載のシステム。
【請求項２４】
前記ページのリストを生成するステップは、前記データベースバックアップの作成中に変更されたページに関して前記データベースバックアップ内のトランザクションログをスキャンすることを含むことを特徴とする請求項１７に記載のシステム。
【請求項２５】
前記論理的取り消し操作を実行するのに必要なページを含むページリストを生成するステップは、更新に関するログレコードの中に含まれるキーを使用して、Ｂツリーのいずれの内部ノードページが、特定のログレコードに関する論理的取り消し操作を実行するのに必要とされるかを特定することを含むことを特徴とする請求項１７に記載のシステム。
【請求項２６】
前記データベースバックアップからデータベースビューを作成するステップは、特定の時点におけるデータベースバックアップの内容を反映するデータベースビューを作成することをさらに含むことを特徴とする請求項１７に記載のシステム。
【請求項２７】
前記データベースビューをトランザクション整合性のある状態に回復するステップは、関連するトランザクションログに基づいてページに対して取り消し操作およびやり直し操作を実行して、すべてのコミットされた操作が前記データベースビュー内で反映され、すべての未コミットのトランザクションが、前記データベースビューから削除されるようにすることを特徴とする請求項１７に記載のシステム。
【請求項２８】
データベースバックアップに対して整合性チェックを実行するためのプログラムを記録したコンピュータ可読記録媒体であって、前記プログラムは、コンピュータに、
データベースバックアップから取り出すべきページのリストを生成するステップと、
前記データベースバックアップを読み取ることによって前記リスト内の前記ページを取り出すステップと、
前記データベースバックアップから、前記データベースバックアップ内に含まれる前記データベースより少ないメモリスペースしか要さないデータベースビューを作成するステップと、
トランザクションログおよび前記取り出されたページを前記データベースビューにコピーするステップと、
前記データベースビューをトランザクション整合性のある状態に回復するステップと、
前記データベースバックアップと前記データベースビューのいずれかからすべてのデータベースページを読み取ることにより、前記データベースバックアップに対して整合性チェックを実行するステップと
を実行させることを特徴とするコンピュータ可読記録媒体。
【請求項２９】
前記データベースバックアップから取り出すべきページのリストを作成するステップは、割り当てページとメタデータページの少なくともいずれか、前記データベースバックアップが作成されている最中に前記データベース内で変更されたページ、前記データベースバックアップの完了時に未コミットの結果を含むページ、および論理的取り消し操作を実行するのに必要なページを含むページリストを生成することをさらに含むことを特徴とする請求項２８に記載のコンピュータ可読記録媒体。
【請求項３０】
前記ページの前記リストを生成するステップは、前記データベースバックアップの作成中に変更されたページに関して前記データベースバックアップ内のトランザクションログをスキャンすることを含むことを特徴とする請求項２８に記載のコンピュータ可読記録媒体。
【請求項３１】
前記リスト内の前記ページを取り出すステップは、完全なデータベースバックアップを読み取ることを含むことを特徴とする請求項２８に記載のコンピュータ可読記録媒体。
【請求項３２】
前記データベースバックアップからデータベースビューを作成するステップは、特定の時点におけるデータベースバックアップの内容を反映するデータベースビューを作成することをさらに含むことを特徴とする請求項２８に記載のコンピュータ可読記録媒体。
【請求項３３】
前記トランザクションログをコピーするステップは、前記データベースバックアップが完了した時点におけるトランザクションを含むトランザクションログをコピーすることを含むことを特徴とする請求項２８に記載のコンピュータ可読記録媒体。
【請求項３４】
前記データベースビューをトランザクション整合性のある状態に回復するステップは、関連するトランザクションログに基づいてトランザクションに対して取り消し操作およびやり直し操作を実行して、未コミットのトランザクションが前記回復されたデータベースビューから削除されるようにすることをさらに含むことを特徴とする請求項２８に記載のコンピュータ可読記録媒体。
【請求項３５】
前記プログラムは、前記ページリストを探し出すために１回、前記整合性チェックを実行している間に１回の２回だけ、前記データベースバックアップを読み取るステップを前記コンピュータにさらに実行させることを特徴とする請求項２８に記載のコンピュータ可読記録媒体。
【国際調査報告】
2007531155.tif 000009