(57)【特許請求の範囲】
【請求項１】
ユーザ環境と再現環境を備える共有メモリ環境再現システムであり、
前記ユーザ環境は、
第一の共有メモリと、
前記第一の共有メモリの変更を定期的に監視し、変更内容を時刻情報と共にジャーナルファイルに記録する共有メモリ監視記録手段と、
を備え、前記再現環境は、
第二の共有メモリと、
前記ジャーナルファイルに基づいて、前記第二の共有メモリへ前記変更内容を展開させて、前記第一の共有メモリの状態を前記第二の共有メモリ上で復元する共有メモリ展開手段と、
を備える共有メモリ環境再現システム。
【請求項２】
前記共有メモリ監視記録手段は、前記第一の共有メモリ上のヒープ領域の状態や変更の推移を前記ジャーナルファイルに記録することを特徴とする請求項１に記載の共有メモリ環境再現システム。
【請求項３】
前記共有メモリ監視記録手段は、データベース起動直後の最初の走査では、前記第一の共有メモリ上の前記ヒープ領域全体を、前記ジャーナルファイルに記録することを特徴とする請求項１又は２に記載の共有メモリ環境再現システム。
【請求項４】
前記ジャーナルファイルの各エントリは、時刻情報と、アドレスの情報と、変更サイズの情報と、変更後のメモリ内容の情報とを含むことを特徴とする請求項１乃至３のいずれかに記載の共有メモリ環境再現システム。
【請求項５】
前記共有メモリ展開手段は、前記ジャーナルファイルに記録された前記時刻情報を参照して、指定された任意の時刻における第一の共有メモリの状態を復元することを特徴とする請求項１乃至４のいずれかに記載の共有メモリ環境再現システム。
【請求項６】
第一の共有メモリと共有メモリ監視記録手段とを備えるユーザ環境と、第二の共有メモリと共有メモリ展開手段とを備える再現環境と、を含むシステムにおいて、前記第一の共有メモリの内容を前記第二の共有メモリ上に再現する方法であって、
前記共有メモリ監視記録手段が、前記第一の共有メモリの変更を定期的に監視し、変更内容を時刻情報と共にジャーナルファイルに記録し、
前記共有メモリ展開手段が、前記ジャーナルファイルに基づいて、前記第二の共有メモリへ前記変更内容を展開させて、前記第一の共有メモリの状態を前記第二の共有メモリ上で復元する、共有メモリ環境再現方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベースの共有メモリの管理技術に関し、データベースの共有メモリの推移を記録し、別環境に同一の状態を再現する。
【背景技術】
【０００２】
従来、データベース（以下「ＤＢ」と省略することがある。）では共有メモリ上の独自管理のヒープ領域にリソースの状況など各プロセス間で共有すべきデータを保持しているが、ヒープの状態や変更の推移を別の環境で再現することはできない。そのため、ユーザ環境で発生したヒープ上のメモリ障害を別の環境で同一の状態を再現させることは困難である。また、メモリ破壊が発生されてから、時間が経った後に破壊を検知するようなケースでは、メモリ破壊が発生した状況まで遡ることは困難である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１４９２１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
障害発生時の調査には同一事象を再現させることが有効であるが、メモリが破壊されるような障害では障害発生時のメモリの状態により発生頻度が大きく変わり、同一の状況にするためには事象発生までのメモリの推移も考慮に入れる必要がある。しかし、メモリの推移も考慮して同一のメモリ状況を作り出すことは非常に困難であり、メモリ破壊が伴うメモリ障害の調査・解析のために膨大な工数をかける必要がある。
【０００５】
障害発生時のトレースとしてメモリダンプがファイルに出力されることがあるが、一般にメモリダンプファイルの解析は専門の知識が必要であり、メモリダンプを元に直接障害の再現を行うことは実用上の手段がなかった。
【０００６】
特許文献１には、特定のユーザの構成情報に特化して、ユーザ単位での環境再現を行うことが記載されている。しかし、特許文献１はユーザ単位での環境再現に限定されるものであり、複数ユーザが使用するデータベースサーバの共有メモリ上の情報という揮発性の情報について、障害発生時のデータベース全体の再現環境を作成するものではない。
【０００７】
本発明は、かかる実情に鑑み、共有メモリの状態や変更の推移を記録し、共有メモリと同一の状況を再現させる技術を提供しようとするものである。
【課題を解決するための手段】
【０００８】
本発明の一態様による共有メモリ環境再現システムは、ユーザ環境と再現環境を備える共有メモリ環境再現システムである。ユーザ環境は、第一の共有メモリと、第一の共有メモリの変更を定期的に監視し、変更内容を時刻情報と共にジャーナルファイルに記録する共有メモリ監視記録手段と、を備える。再現環境は、第二の共有メモリと、ジャーナルファイルに基づいて、第二の共有メモリへ変更内容を展開させて、第一の共有メモリの状態を第二の共有メモリ上で復元する共有メモリ展開手段と、を備える。
【０００９】
好適には、共有メモリ監視記録手段は、第一の共有メモリ上のヒープ領域の状態や変更の推移をジャーナルファイルに記録する。
【００１０】
さらに好適には、共有メモリ監視記録手段は、データベース起動直後の最初の走査では、第一の共有メモリ上のヒープ領域全体を、ジャーナルファイルに記録する。
【００１１】
また、ジャーナルファイルの各エントリは、時刻情報と、アドレスの情報と、変更サイズの情報と、変更後のメモリ内容の情報とを含むことが好ましい。
【００１２】
さらに好適には、共有メモリ展開手段は、ジャーナルファイルに記録された時刻情報を参照して、指定された任意の時刻における第一の共有メモリの状態を復元する。
【００１３】
本発明の一態様による共有メモリ環境再現方法は、第一の共有メモリと共有メモリ監視記録手段とを備えるユーザ環境と、第二の共有メモリと共有メモリ展開手段とを備える再現環境と、を含むシステムにおいて、第一の共有メモリの内容を第二の共有メモリ上に再現する方法である。共有メモリ監視記録手段が、第一の共有メモリの変更を定期的に監視し、変更内容を時刻情報と共にジャーナルファイルに記録し、共有メモリ展開手段が、ジャーナルファイルに基づいて、第二の共有メモリへ変更内容を展開させて、第一の共有メモリの状態を第二の共有メモリ上で復元する。
【発明の効果】
【００１４】
本発明によれば、共有メモリの状態や変更の推移を記録し、共有メモリと同一の状況を再現させることができるようになる。また、複数ユーザが使用するデータベースサーバの共有メモリ上の情報という揮発性の情報について、障害発生時のデータベース全体の再現環境を作成することができるようになる。これにより、ユーザ環境と同一の共有メモリの状態を再現させることでメモリ破壊を伴う障害の再現がしやすくなり、また時系列でのメモリ状態の変更を追うことができるという効果がある。
【図面の簡単な説明】
【００１５】
【図１】共有メモリ環境再現システム１０の構成の一実施例を示すブロック図である。
【図２】共有メモリジャーナルファイル３６の一例である。
【図３】共有メモリ監視記録手段３５の処理モジュールを示すブロック図である。
【図４】共有メモリ監視記録手段３５の処理の流れを示すフローチャートである。
【図５】アドレス・サイズ・チェックサム情報保持モジュールＭ１０４によって保持される情報の一例である。
【図６】共有メモリ展開手段６５の処理モジュールを示すブロック図である。
【図７】共有メモリ展開手段６５の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。
【００１７】
図１は、本発明による共有メモリ環境再現システム１０の構成の一実施例を示すブロック図である。
【００１８】
同図に示すように、本発明の実施例では、共有メモリ環境再現システム１０は、ユーザ環境１と再現環境４を含む。ユーザ環境１は、ＤＢクライアント２と、データベースシステム３とを備え、再現環境４は、ＤＢクライアント５と、データベースシステム６を含んで構成される。
【００１９】
ユーザ環境１上のデータベースシステム３は、ＤＢクライアント２からＤＢアクセスの要求を受け付けるＤＢインスタンス３１と、ＤＢ起動時の各種パラメータを記載する初期化パラメータファイル３２と、ＤＢリソース情報や高速アクセスのためのバッファ情報を保持するためにＤＢインスタンス３１で使用される共有メモリ３３と、ＤＢインスタンス３１によりデータの内容を恒久的に保持するＤＢファイル３４と、定期的に共有メモリ３３の内容を共有メモリジャーナルファイル３６に記録する共有メモリ監視記録手段３５を備えている。
【００２０】
再現環境４上のデータベースシステム６は、ＤＢクライアント５からＤＢアクセスの要求を受け付けるＤＢインスタンス６１と、ＤＢ起動時の各種パラメータを記載する初期化パラメータファイル６２と、ＤＢインスタンスで使用される共有メモリ６３と、ＤＢインスタンスによりデータの内容を恒久的に保持するＤＢファイル６４と、ユーザ環境から転送された共有メモリジャーナルファイル６６を共有メモリ６３に反映する共有メモリ展開手段６５を備えている。
【００２１】
ユーザ環境１上のＤＢクライアント２及びデータベースシステム３、並びに、再現環境４上のＤＢクライアント５及びデータベースシステム６のそれぞれは、各部の動作や処理を制御するための制御手段としてのプロセッサ、外部記憶装置やメモリ等、各種のデータを記録したり作業領域として用いられる記憶手段、入出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。
【００２２】
次に、本実施例の動作について詳細に説明する。
【００２３】
ユーザ環境１と再現環境４共に、データベースは、初期化パラメータの構成情報を元に起動され、起動後、ＤＢクライアント２、５はＤＢインスタンス３１、６１にＤＢアクセスを要求する。ＤＢインスタンス３１、６１はリソース情報やＤＢファイル３４、６４のバッファなどを共有メモリ３３、６３に保持する。また、非同期にＤＢインスタンス３１、６１は共有メモリ３３、６３からバッファの情報をＤＢファイル３４、６４に反映する。
【００２４】
ユーザ環境１では、共有メモリ監視記録手段３５により、ユーザ環境１でのデータベース起動時に共有メモリ３３上のヒープの内容がオフセット（ｏｆｆｓｅｔ）値によるアドレス情報とメモリ内のデータの組で共有メモリジャーナルファイル３６に出力される。それ以降はある一定期間毎に共有メモリ３３を走査し、共有メモリに変更があった箇所のみ、オフセットと変更後の値を共有メモリジャーナルファイル３６に追記していく。このとき共有メモリジャーナルファイル３６にはその情報を追記した時刻情報を付与し、後に復元する際に指定した時刻まで復元できるようにする。図２は、このようにして作成される共有メモリジャーナルファイル３６の一例である。
【００２５】
作成された共有メモリジャーナルファイル３６はＦＴＰ（File Transfer Protocol）やファイル共有などで再現環境４に転送される。再現環境４では受信した共有メモリジャーナルファイル６６を使用して、共有メモリ展開手段６５により共有メモリ３３の再現を共有メモリ６３上に行う。このとき共有メモリ展開手段６５により、共有メモリジャーナルファイル６６は先頭から順に指定された時刻までの変更を記録したエントリまで読み込まれ、共有メモリ６３のオフセットに対して変更後のデータを反映して、ユーザ環境１と同一状態への再現を行う。
【００２６】
次に、図３〜図５を参照して、共有メモリ監視記録手段３５の具体的な処理内容について説明する。
【００２７】
図３は、共有メモリ監視記録手段３５の処理モジュールを示すブロック図である。図４は、共有メモリ監視記録手段３５の処理の流れを示すフローチャートである。共有メモリ監視記録手段３５により、データベース起動直後の最初の共有メモリ走査では、共有メモリ３３上のヒープ全体が共有メモリジャーナルファイル３６に記録される（ステップＣ１０１）。
【００２８】
通常、データベースはＯＳのメモリ管理とは異なり独自のメモリ管理を行い、共有メモリ上のメモリをヒープやチャンクと呼ばれる単位で管理し、ヒープやチャンクのアドレスとサイズ情報を保持している。共有メモリ監視記録手段３５において、アドレス・サイズ・チェックサム情報保持モジュールＭ１０４により、共有メモリ３３のチャンクのアドレスの情報、サイズの情報、及びチャンクの内容のチェックサム情報が保持される（ステップＣ１０２）。なお、図５は、アドレス・サイズ・チェックサム情報保持モジュールＭ１０４によって保持される、共有メモリ３３のチャンクのアドレスの情報、サイズの情報、及びチャンクの内容のチェックサム情報の一例である。
【００２９】
その後一定間隔で、共有メモリ読み取りモジュールＭ１０１により共有メモリ３３を走査し（ステップＣ１０３）、アドレス・サイズ・チェックサム比較モジュールＭ１０２によりチャンクをチェックし、前回保持したアドレスの情報やサイズの情報、チャンクの内容のチェックサム情報が異なっているかチェックし（ステップＣ１０４）、異なっていた場合は共有メモリ３３の内容が変更されたとみなしてジャーナル書出しモジュールＭ１０３により共有メモリジャーナルファイル３６に変更後のメモリ内容が時刻、オフセット、及びサイズと共に記録され（Ｃ１０５）、アドレス・サイズ・チェックサム情報保持モジュールＭ１０４によりチェックサム情報が更新される(Ｃ１０６)。これを一定期間毎にＤＢが停止するまで実行する（Ｃ１０７）。
【００３０】
次に、図６と図７を参照して、ユーザ環境１で採取されたジャーナルファイルから再現環境４で共有メモリ６３に展開する共有メモリ展開手段６５の具体的な処理内容について説明する。
【００３１】
図６は共有メモリ展開手段６５の処理モジュールを示すブロック図である。図７は共有メモリ展開手段６５の処理の流れを示すフローチャートである。ＤＢ起動時、初期化パラメータ読み取りモジュールＭ２０４により初期化パラメータファイル６２を読み取り、初期化パラメータとして時間指定でジャーナルからの共有メモリ再現が指定されているか確認する（Ｃ２０１）。共有メモリ再現が指定されている場合、共有メモリ展開手段６５により、まず転送された共有メモリジャーナルファイル６６に記録された共有メモリ３３のヒープ全体の情報が再現環境４の共有メモリ６３にコピーされる(ステップＣ２０２)。
【００３２】
次に、ジャーナルファイル読み取りモジュールＭ２０１により共有メモリジャーナルファイル６６に記録されている次のエントリが読み込まれ（Ｃ２０３）、時刻情報チェックモジュールＭ２０２によりジャーナルに記録されている時刻がパラメータで指定された時刻以前であるか判定し（Ｃ２０４）、指定された時刻以前ならば共有メモリ書出しモジュールＭ２０３によりジャーナルに記録されているメモリ内容が共有メモリ６３のオフセットが示すアドレスにコピーされる（Ｃ２０５）。この動作を共有メモリジャーナルファイル６６の最後に到達するまで繰り返し（Ｃ２０６）、ユーザ環境１の共有メモリ３３の状態を再現させる。
【００３３】
以上で説明したように、本実施形態によれば、データベースサーバの共有メモリ上のヒープ領域の情報という揮発性の情報を時系列でジャーナリングすることにより、障害発生時のデータベース全体の再現環境を作成できる。これにより、ユーザ環境と同一の共有メモリの状態を再現させることでメモリ破壊を伴う障害の再現がしやすくなる。また時系列でのメモリ状態の変更を追うことができるようになる。こうして、障害発生時の問題の調査・解析を実効的に行うことができるようになる。
【００３４】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００３５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限
られない。
【００３６】
（付記１）ユーザ環境と再現環境を備える共有メモリ環境再現システムであり、前記ユーザ環境は、第一の共有メモリと、前記第一の共有メモリの変更を定期的に監視し、変更内容を時刻情報と共にジャーナルファイルに記録する共有メモリ監視記録手段と、を備え、前記再現環境は、第二の共有メモリと、前記ジャーナルファイルに基づいて、前記第二の共有メモリへ前記変更内容を展開させて、前記第一の共有メモリの状態を前記第二の共有メモリ上で復元する共有メモリ展開手段と、を備える共有メモリ環境再現システム。
【００３７】
（付記２）前記共有メモリ監視記録手段は、前記第一の共有メモリ上のヒープ領域の状態や変更の推移を前記ジャーナルファイルに記録することを特徴とする付記１に記載の共有メモリ環境再現システム。
【００３８】
（付記３）前記共有メモリ監視記録手段は、データベース起動直後の最初の走査では、前記第一の共有メモリ上の前記ヒープ領域全体を、前記ジャーナルファイルに記録することを特徴とする付記１又は２に記載の共有メモリ環境再現システム。
【００３９】
（付記４）前記ジャーナルファイルの各エントリは、時刻情報と、アドレスの情報と、変更サイズの情報と、変更後のメモリ内容の情報とを含むことを特徴とする付記１乃至３のいずれかに記載の共有メモリ環境再現システム。
【００４０】
（付記５）前記共有メモリ展開手段は、前記ジャーナルファイルに記録された前記時刻情報を参照して、指定された任意の時刻における第一の共有メモリの状態を復元することを特徴とする付記１乃至４のいずれかに記載の共有メモリ環境再現システム。
【００４１】
（付記６）第一の共有メモリと共有メモリ監視記録手段とを備えるユーザ環境と、第二の共有メモリと共有メモリ展開手段とを備える再現環境と、を含むシステムにおいて、前記第一の共有メモリの内容を前記第二の共有メモリ上に再現する方法であって、前記共有メモリ監視記録手段が、前記第一の共有メモリの変更を定期的に監視し、変更内容を時刻情報と共にジャーナルファイルに記録し、前記共有メモリ展開手段が、前記ジャーナルファイルに基づいて、前記第二の共有メモリへ前記変更内容を展開させて、前記第一の共有メモリの状態を前記第二の共有メモリ上で復元する、共有メモリ環境再現方法。
【符号の説明】
【００４２】
１……ユーザ環境、２……ＤＢクライアント、３……データベースシステム、４……再現環境、５……ＤＢクライアント、６……データベースシステム、１０……共有メモリ環境再現システム、３１……ＤＢインスタンス、３２……初期化パラメータファイル、３３……共有メモリ、３４……ＤＢファイル、３５……共有メモリ監視記録手段、３６……共有メモリジャーナルファイル、６１……ＤＢインスタンス、６２……初期化パラメータファイル、６３……共有メモリ、６４……ＤＢファイル、６５……共有メモリ展開手段、６６……共有メモリジャーナルファイル
【図１】
0005534209.tif 000002
【図２】
0005534209.tif 000003
【図３】
0005534209.tif 000004
【図４】
0005534209.tif 000005
【図５】
0005534209.tif 000006
【図６】
0005534209.tif 000007
【図７】
0005534209.tif 000008