(57)【要約】      （修正有）【課題】実行するスクリプトの各ＳＱＬ要素に重み付けをすることで、データベースを有するサーバの負荷状況に基づいて所定のＳＱＬを実行するか否かを判定する診断プログラムを提供する。【解決手段】  診断システム１００において、クライアント端末１０は、診断スクリプトを読み込むことにより、ＳＱＬ及び付加情報から構成される１つ以上の配列から成るＳＱＬリストを作成する。ＳＱＬリストの中からＳＱＬ及び付加情報から構成された配列を読み込む。読み込んだ付加情報に基づいて、診断対象サーバ１２から動作負荷を表す判定値を取得する。そして、取得した判定値と当該付加情報とに基づいて、読み込んだＳＱＬを診断対象サーバ１２において実行するか否かを判定する。【効果】診断対象サーバ１２の負荷状況を確認しながら、その時点で発行可能なＳＱＬのみを実行し、診断スクリプト実行期間中の負荷を常に低い状態に保つことができる。【選択図】図１４
2006293838.tif 000002
【特許請求の範囲】
【請求項１】
診断を行うデータベースを有する診断対象サーバと通信可能に接続された端末装置であって、
前記診断対象サーバにおいて実行する複数のＳＱＬ及び各ＳＱＬにそれぞれ設定された付加情報から構成される診断スクリプトに基づいて、前記ＳＱＬ及び前記付加情報から構成された配列であるＳＱＬリストを作成するＳＱＬリスト作成手段と、
前記ＳＱＬリストから、前記ＳＱＬ及び前記付加情報から構成された配列を読み込む読込手段と、
前記読込手段が読み込んだ付加情報に基づいて、前記診断対象サーバから動作負荷を表す判定値を取得する判定値取得手段と、
前記判定値取得手段が取得した前記判定値及び前記読込手段が読み込んだ付加情報に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定する実行判定手段と、
前記実行判定手段が実行すると判定した場合に、前記読込手段が読み込んだＳＱＬを前記診断対象サーバへ送信するＳＱＬ送信手段と、
前記ＳＱＬ送信手段が送信したＳＱＬの実行結果を、前記診断対象サーバから取得する実行結果受信手段と、を備えることを特徴とする端末装置。
【請求項２】
前記付加情報は、前記判定値を算出するための判定関数及びしきい値を含んでおり、
前記判定値取得手段は、前記読込手段が読み込んだ付加情報に含まれる判定関数の結果を前記判定値として取得するものであって、
前記端末装置は、
前記判定値取得手段が取得した判定値と、前記読込手段が読み込んだ付加情報に含まれるしきい値とを比較する判定値比較手段をさらに備え、
前記実行判定手段は、前記判定値比較手段の結果に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定することを特徴とする請求項１に記載の端末装置。
【請求項３】
前記端末装置は、前記診断対象サーバにおいて実行されたＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列である実行済ＳＱＬリストを有しており、
前記ＳＱＬ送信手段が送信したＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列を、前記ＳＱＬリストから前記実行済ＳＱＬリストへ移動する実行済ＳＱＬリスト移動手段をさらに備えることを特徴とする請求項１又は２に記載の端末装置。
【請求項４】
前記付加情報は、前記ＳＱＬリスト内で移動する位置を示す移動関数を含んでおり、
前記実行判定手段が実行しないと判定した場合に、前記読込手段が読み込んだＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される配列を、当該付加情報に含まれる移動関数に基づいて、前記ＳＱＬリスト内で移動するＳＱＬリスト移動手段をさらに備えることを特徴とする請求項１乃至３のいずれか一項に記載の端末装置。
【請求項５】
前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストの最後に移動することを特徴とする請求項４に記載の端末装置。
【請求項６】
前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストの最初に移動することを特徴とする請求項４に記載の端末装置。
【請求項７】
前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストにおける予め設定された任意の位置に移動することを特徴とする請求項４乃至６のいずれか一項に記載の端末装置。
【請求項８】
前記付加情報は、前記実行判定手段が判定した回数を示す判定実行数と、判定する最大回数を示す最大判定実行数とを含み、
前記端末装置は、
前記実行判定手段による判定が行われた場合に、前記読込手段が読み込んだ付加情報に含まれる判定実行数を加算する加算手段と、
前記読込手段が読み込んだ付加情報に含まれる判定実行数及び最大判定実行数を比較する実行数比較手段と、をさらに備え、
前記実行判定手段は、前記実行数比較手段の結果及び前記判定値に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定することを特徴とする請求項１乃至７のいずれか一項に記載の端末装置。
【請求項９】
前記端末装置は、前記診断対象サーバにおいて実行しないＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列である未実行ＳＱＬリストを有しており、
前記実行判定手段は、前記実行数比較手段が比較結果として、前記判定実行数が前記最大判定実行数より小さいと判定した場合にのみ、前記ＳＱＬを前記診断対象サーバにおいて実行するか否かを判定するものであって、
前記実行数比較手段が比較結果として、前記判定実行数が前記最大判定実行数と等しいと判定した場合に、前記読込手段が読み込んだＳＱＬ及び付加情報から構成された配列を、前記ＳＱＬリストから前記未実行ＳＱＬリストへ移動する未実行ＳＱＬリスト移動手段をさらに備えることを特徴とする請求項８に記載の端末装置。
【請求項１０】
１つの前記ＳＱＬに対して、複数の前記判定関数の組み合わせを前記付加情報として設定することを特徴とする請求項２乃至９のいずれか一項に記載の端末装置。
【請求項１１】
前記しきい値は、予め規定された一定の前記診断対象サーバのＣＰＵ使用率であり、
前記判定関数は、結果として前記診断対象サーバのＣＰＵ使用率を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値より小さいと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項２乃至１０のいずれか一項に記載の端末装置。
【請求項１２】
前記しきい値は、予め規定された一定の前記診断対象サーバの空きメモリ容量であり、
前記判定関数は、前記診断対象サーバの空きメモリ容量を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値より大きいと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項２乃至１１のいずれか一項に記載の端末装置。
【請求項１３】
前記しきい値は、予め規定された一定の時間帯であり、
前記判定関数は、現在の時刻を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値に含まれると判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項２乃至１２のいずれか一項に記載の端末装置。
【請求項１４】
前記判定関数は、一定の定数を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記しきい値に関わらず前記判定値として前記定数を取得したと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項２乃至１３のいずれか一項に記載の端末装置。
【請求項１５】
診断を行うデータベースを有する診断対象サーバと通信可能に接続されたコンピュータにより実行される診断プログラムであって、
前記診断対象サーバにおいて実行する複数のＳＱＬ及び各ＳＱＬにそれぞれ設定された付加情報から構成される診断スクリプトに基づいて、前記ＳＱＬ及び前記付加情報から構成された配列であるＳＱＬリストを作成するＳＱＬリスト作成手段、
前記ＳＱＬリストから、前記ＳＱＬ及び前記付加情報から構成された配列を読み込む読込手段、
前記読込手段が読み込んだ付加情報に基づいて、前記診断対象サーバから動作負荷を表す判定値を取得する判定値取得手段、
前記判定値取得手段が取得した前記判定値及び前記読込手段が読み込んだ付加情報に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定する実行判定手段、
前記実行判定手段が実行すると判定した場合に、前記読込手段が読み込んだＳＱＬを前記診断対象サーバへ送信するＳＱＬ送信手段、
前記ＳＱＬ送信手段が送信したＳＱＬの実行結果を、前記診断対象サーバから取得する実行結果受信手段、として前記コンピュータを機能させることを特徴とする診断プログラム。
【請求項１６】
前記付加情報は、前記判定値を算出するための判定関数及びしきい値を含んでおり、
前記判定値取得手段は、前記読込手段が読み込んだ付加情報に含まれる判定関数の結果を前記判定値として取得するものであって、
前記プログラムは、
前記判定値取得手段が取得した判定値と、前記読込手段が読み込んだ付加情報に含まれるしきい値とを比較する判定値比較手段としてさらに前記コンピュータを機能させ、
前記実行判定手段は、前記判定値比較手段の結果に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定することを特徴とする請求項１５に記載の診断プログラム。
【請求項１７】
前記コンピュータは、前記診断対象サーバにおいて実行されたＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列である実行済ＳＱＬリストを有しており、
前記ＳＱＬ送信手段が送信したＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列を、前記ＳＱＬリストから前記実行済ＳＱＬリストへ移動する実行済ＳＱＬリスト移動手段としてさらに前記コンピュータを機能させることを特徴とする請求項１５又は１６に記載の診断プログラム。
【請求項１８】
前記付加情報は、前記ＳＱＬリスト内で移動する位置を示す移動関数を含んでおり、
前記実行判定手段が実行しないと判定した場合に、前記読込手段が読み込んだＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される配列を、当該付加情報に含まれる移動関数に基づいて、前記ＳＱＬリスト内で移動するＳＱＬリスト移動手段としてさらに前記コンピュータを機能させることを特徴とする請求項１５乃至１７のいずれか一項に記載の診断プログラム。
【請求項１９】
前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストの最後に移動することを特徴とする請求項１８に記載の診断プログラム。
【請求項２０】
前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストの最初に移動することを特徴とする請求項１８に記載の診断プログラム。
【請求項２１】
前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストにおける予め設定された任意の位置に移動することを特徴とする請求項１８乃至２０のいずれか一項に記載の診断プログラム。
【請求項２２】
前記付加情報は、前記実行判定手段が判定した回数を示す判定実行数と、判定する最大回数を示す最大判定実行数とを含み、
前記プログラムは、
前記実行判定手段による判定が行われた場合に、前記読込手段が読み込んだ付加情報に含まれる判定実行数を加算する加算手段、
前記読込手段が読み込んだ付加情報に含まれる判定実行数及び最大判定実行数を比較する実行数比較手段、としてさらに前記コンピュータを機能させ、
前記実行判定手段は、前記実行数比較手段の結果及び前記判定値に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定することを特徴とする請求項１５乃至２１のいずれか一項に記載の診断プログラム。
【請求項２３】
前記コンピュータは、前記診断対象サーバにおいて実行しないＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列である未実行ＳＱＬリストを有しており、
前記実行判定手段は、前記実行数比較手段が比較結果として、前記判定実行数が前記最大判定実行数より小さいと判定した場合にのみ、前記ＳＱＬを前記診断対象サーバにおいて実行するか否かを判定するものであって、
前記実行数比較手段が比較結果として、前記判定実行数が前記最大判定実行数と等しいと判定した場合に、前記読込手段が読み込んだＳＱＬ及び付加情報から構成された配列を、前記ＳＱＬリストから前記未実行ＳＱＬリストへ移動する未実行ＳＱＬリスト移動手段としてさらに前記コンピュータを機能させることを特徴とする請求項２２に記載の診断プログラム。
【請求項２４】
１つの前記ＳＱＬに対して、複数の前記判定関数の組み合わせを前記付加情報として設定することを特徴とする請求項１６乃至２３のいずれか一項に記載の診断プログラム。
【請求項２５】
前記しきい値は、予め規定された一定の前記診断対象サーバのＣＰＵ使用率であり、
前記判定関数は、結果として前記診断対象サーバのＣＰＵ使用率を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値より小さいと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項１６乃至２４のいずれか一項に記載の診断プログラム。
【請求項２６】
前記しきい値は、予め規定された一定の前記診断対象サーバの空きメモリ容量であり、
前記判定関数は、前記診断対象サーバの空きメモリ容量を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値より大きいと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項１６乃至２５のいずれか一項に記載の診断プログラム。
【請求項２７】
前記しきい値は、予め規定された一定の時間帯であり、
前記判定関数は、現在の時刻を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値に含まれると判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項１６乃至２６のいずれか一項に記載の診断プログラム。
【請求項２８】
前記判定関数は、一定の定数を取得する関数であって、
前記実行判定手段は、前記判定値比較手段が結果として、前記しきい値に関わらず前記判定値として前記定数を取得したと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定することを特徴とする請求項１６乃至２７のいずれか一項に記載の診断プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＱＬ実行時のサーバの負荷状況を考慮してデータベースを診断する技術に関する。
【背景技術】
【０００２】
従来、データベースを診断するスクリプトは、当該データベースを有するサーバにおけるスクリプト実行時の負荷状況とは無関係で実行されていた（例えば、特許文献１又は２）。つまり、一度実行してしまうと、スクリプト内のＳＱＬ（Structured Query Language）は全て実行されてしまい、スクリプト実行期間中の他のプログラムによるサーバの負荷状況は考慮されていなかった。ＳＱＬの実行は、ＣＰＵやメモリなどサーバのシステム資源を消費するため、サーバのシステム資源に余裕がある場合は問題ないが、余裕がない場合は当該サーバにとって相当の負荷となってしまう。
【０００３】
このことから、診断スクリプトは、通常、他のプログラムによるサーバの負荷が低い時間帯を狙って実行される。しかし、診断スクリプトの実行時間は、データ量といったデータベースの状況によって数分乃至数十分と異なるため、当該診断スクリプトの実行期間中に他のプログラムによるサーバの負荷状況が変化してしまうことも多かった。診断スクリプト及び他のプログラムによるサーバの負荷が極端に大きくなると、各プログラムの実行時間の超過や中断、サーバのフリーズといった問題が生じる。
【０００４】
なお、データベースの診断、監視、管理に関する従来技術としては、非特許文献１が挙げられる。
【０００５】
【特許文献１】特開平８−２３５０３４号公報
【特許文献２】特開平９−２８２２１０号公報
【非特許文献１】「Oracle Enterprise Manager 概要 10g リリース１（10.1）」  日本オラクル社  部品番号：Ｂ13503-02
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、以上の点に鑑みてなされたものであり、実行するスクリプトの各ＳＱＬ要素に重み付けをすることで、データベースを有するサーバの負荷状況に基づいて所定のＳＱＬを実行するか否かを判定する診断プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
本発明の１つの観点では、診断を行うデータベースを有する診断対象サーバと通信可能に接続された端末装置であって、前記診断対象サーバにおいて実行する複数のＳＱＬ及び各ＳＱＬにそれぞれ設定された付加情報から構成される診断スクリプトに基づいて、前記ＳＱＬ及び前記付加情報から構成された配列であるＳＱＬリストを作成するＳＱＬリスト作成手段と、前記ＳＱＬリストから、前記ＳＱＬ及び前記付加情報から構成された配列を読み込む読込手段と、前記読込手段が読み込んだ付加情報に基づいて、前記診断対象サーバから動作負荷を表す判定値を取得する判定値取得手段と、前記判定値取得手段が取得した前記判定値及び前記読込手段が読み込んだ付加情報に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定する実行判定手段と、前記実行判定手段が実行すると判定した場合に、前記読込手段が読み込んだＳＱＬを前記診断対象サーバへ送信するＳＱＬ送信手段と、前記ＳＱＬ送信手段が送信したＳＱＬの実行結果を、前記診断対象サーバから取得する実行結果受信手段と、を備える。
【０００８】
上記のように構成された端末装置は、ネットワークを介して診断対象サーバとデータの授受が可能なパソコンやＰＤＡ（Personal Digital Assistants）などである。端末装置は、まず、外部ファイルである診断スクリプトを読み込むことにより、ＳＱＬ及び付加情報から構成される１つ以上の配列から成るＳＱＬリストを作成する。即ち、診断スクリプトに記述されたＳＱＬ及び付加情報は、初期段階では全てＳＱＬリストに配列として格納されている。そして、端末装置は、ＳＱＬリストの中からＳＱＬ及び付加情報から構成された配列を読み込む。さらに、端末装置は、読み込んだ付加情報に基づいて、診断対象サーバから動作負荷を表す判定値を取得する。そして、端末装置は、取得した判定値と当該付加情報とに基づいて、読み込んだＳＱＬを診断対象サーバにおいて実行するか否かを判定する。つまり、診断対象サーバの負荷状況に応じて、各ＳＱＬを実行するか否かを判定する。また、各ＳＱＬにはそれぞれ任意に付加情報を設定することが可能であるため、各ＳＱＬに応じた判定が可能である。そして、端末装置は、ＳＱＬを実行すると判定した場合にのみ、当該ＳＱＬを診断対象サーバに送信し、実行結果を受信する。これによれば、診断対象サーバの負荷状況を確認しながら、その時点で発行可能なＳＱＬのみを実行し、診断スクリプト実行期間中の負荷を常に低い状態に保つことができる。よって、従来のように、診断対象サーバの負荷が極端に増加したことによるフリーズといった問題を解消することができる。
【０００９】
上記端末装置の一態様では、前記付加情報は、前記判定値を算出するための判定関数及びしきい値を含んでおり、前記判定値取得手段は、前記読込手段が読み込んだ付加情報に含まれる判定関数の結果を前記判定値として取得するものであって、前記端末装置は、前記判定値取得手段が取得した判定値と、前記読込手段が読み込んだ付加情報に含まれるしきい値とを比較する判定値比較手段をさらに備え、前記実行判定手段は、前記判定値比較手段の結果に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定する。
【００１０】
上記のように構成された端末装置において、各ＳＱＬに設定された付加情報には、判定値及びしきい値が含まれている。つまり、各ＳＱＬにはそれぞれ固有の判定値及びしきい値を任意に設定することが可能である。ここで、判定値とは、判定関数の結果であって、ＳＱＬ実行判定時点での診断対象サーバの動作負荷を表す値である。一方、しきい値とは、ＳＱＬの実行を判定するために、判定値の比較対象となる、診断対象サーバの動作負荷の目安となる一定の値である。端末装置は、判定値としきい値の比較結果に基づいて、ＳＱＬを実行するか否かを判定する。つまり、予め任意に規定した目安であるしきい値が表す負荷より、判定値が表す負荷の方が小さい場合にのみ、端末装置は、ＳＱＬを実行すると判定する。なお、判定関数を実行して判定値を取得する処理は、診断対象サーバにとってほとんど負荷とはならない。これによれば、判定値により、ＳＱＬ実行判定時点での診断対象サーバの動作負荷を数値として明確に取得することができる。また、予め任意に規定した目安であるしきい値と当該判定値とを比較するため、診断対象サーバの動作負荷を明確に反映して、ＳＱＬ実行判定を行うことができる。
【００１１】
上記端末装置の他の一態様では、前記端末装置は、前記診断対象サーバにおいて実行されたＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列である実行済ＳＱＬリストを有しており、前記ＳＱＬ送信手段が送信したＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列を、前記ＳＱＬリストから前記実行済ＳＱＬリストへ移動する実行済ＳＱＬリスト移動手段をさらに備える。これによれば、既に実行したＳＱＬ及び付加情報から構成される配列はＳＱＬリスト内に存在しなくなる。よって、ＳＱＬ実行判定手段が既に実行したＳＱＬについて実行するか否かを判定することを防止することができる。
【００１２】
上記端末装置の他の一態様では、前記付加情報は、前記ＳＱＬリスト内で移動する位置を示す移動関数を含んでおり、前記実行判定手段が実行しないと判定した場合に、前記読込手段が読み込んだＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される配列を、当該付加情報に含まれる移動関数に基づいて、前記ＳＱＬリスト内で移動するＳＱＬリスト移動手段をさらに備える。これによれば、１度ＳＱＬ実行判定手段が実行しないと判定したＳＱＬであっても、再びＳＱＬリスト内に移動される。よって、診断処理サーバの負荷状況が軽減した後に、再度ＳＱＬ実行判定を行い、当該ＳＱＬを実行することが可能となる。
【００１３】
上記端末装置の他の一態様では、前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストの最後に移動する。これによれば、１度ＳＱＬ実行判定手段が実行しないと判定したＳＱＬは、ＳＱＬリストの最後の位置に移動する。よって、ＳＱＬリストに存在する他のＳＱＬについて実行判定を行っている間に診断処理サーバの負荷状況が軽減した場合には、再度のＳＱＬ実行判定により、当該ＳＱＬを実行することが可能となる。
【００１４】
上記端末装置の他の一態様では、前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストの最初に移動する。これによれば、１度ＳＱＬ実行判定手段が実行しないと判定したＳＱＬは、ＳＱＬリストの最初に位置に移動する。よって、ＳＱＬの順番が意味を持つ場合であっても、予め診断スクリプトに記述された順番でＳＱＬを実行することが可能となる。
【００１５】
上記端末装置の他の一態様では、前記ＳＱＬリスト移動手段は、前記配列を、前記移動関数に基づいて、前記ＳＱＬリストにおける予め設定された任意の位置に移動する。これによれば、１度ＳＱＬ実行判定手段が実行しないと判定したＳＱＬを、ＳＱＬリストの任意の位置に移動させることが可能となる。
【００１６】
上記端末装置の他の一態様では、前記付加情報は、前記実行判定手段が判定した回数を示す判定実行数と、判定する最大回数を示す最大判定実行数とを含み、前記端末装置は、前記実行判定手段による判定が行われた場合に、前記読込手段が読み込んだ付加情報に含まれる判定実行数を加算する加算手段と、前記読込手段が読み込んだ付加情報に含まれる判定実行数及び最大判定実行数を比較する実行数比較手段と、をさらに備え、前記実行判定手段は、前記実行数比較手段の結果及び前記判定値に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定する。
【００１７】
上記のように構成された端末装置において、前記付加情報は、判定実行数及び判定最大実行数を含んでいる。端末装置は、付加情報に含まれる判定実行数と判定最大実行数の比較結果を考慮して、ＳＱＬを実行するか否かの判定を行う。このように、最大判定実行数を使用して、判定実行数と最大判定実行数の比較結果を考慮することで、診断処理の永久ループを避け、強制的に診断処理を終了させることが可能となる。
【００１８】
上記端末装置の他の一態様では、前記端末装置は、前記診断対象サーバにおいて実行しないＳＱＬ及び当該ＳＱＬに設定された付加情報から構成された配列である未実行ＳＱＬリストを有しており、前記実行判定手段は、前記実行数比較手段が比較結果として、前記判定実行数が前記最大判定実行数より小さいと判定した場合にのみ、前記ＳＱＬを前記診断対象サーバにおいて実行するか否かを判定するものであって、前記実行数比較手段が比較結果として、前記判定実行数が前記最大判定実行数と等しいと判定した場合に、前記読込手段が読み込んだＳＱＬ及び付加情報から構成された配列を、前記ＳＱＬリストから前記未実行ＳＱＬリストへ移動する未実行ＳＱＬリスト移動手段をさらに備える。これによれば、実行しないことを決定したＳＱＬ及び付加情報から構成される配列はＳＱＬリスト内に存在しなくなる。よって、ＳＱＬ実行判定手段が既に実行しないことを決定したＳＱＬについて実行するか否かを判定することを防止することができる。
【００１９】
上記端末装置の他の一態様では、１つの前記ＳＱＬに対して、複数の前記判定関数の組み合わせを前記付加情報として設定する。これによれば、複数の判定関数の結果、即ち複数の判定値に基づいて、複数の角度から診断対象サーバの負荷状況を認識することができる。
【００２０】
上記端末装置の他の一態様では、前記しきい値は、予め規定された一定の前記診断対象サーバのＣＰＵ使用率であり、前記判定関数は、結果として前記診断対象サーバのＣＰＵ使用率を取得する関数であって、前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値より小さいと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定する。これによれば、診断対象サーバの負荷状況を、ＣＰＵ使用率から認識することができる。ＣＰＵ使用率は、小さければ診断対象サーバの負荷が小さく、大きければ診断対象サーバの負荷が大きいことを表している。よって、端末装置は、予めしきい値として規定した一定のＣＰＵ使用率より判定値として取得したＣＰＵ使用率が小さければ、診断対象サーバの負荷が小さいとして、ＳＱＬを実行すると判定する。一方、しきい値として規定した一定のＣＰＵ使用率より判定値として取得したＣＰＵ使用率が大きければ、診断対象サーバの負荷が大きいとして、ＳＱＬを実行しないと判定する。
【００２１】
上記端末装置の他の一態様では、前記しきい値は、予め規定された一定の前記診断対象サーバの空きメモリ容量であり、前記判定関数は、前記診断対象サーバの空きメモリ容量を取得する関数であって、前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値より大きいと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定する。これによれば、診断対象サーバの負荷状況を空きメモリ容量から認識することができる。空きメモリ容量は、大きければ診断対象サーバの負荷が小さく、小さければ診断対象サーバの負荷が大きいことを表している。よって、端末装置は、予めしきい値として規定した一定の空きメモリ容量より判定値として取得した空きメモリ容量が大きければ、診断対象サーバの負荷が小さいとして、ＳＱＬを実行すると判定する。一方、しきい値として規定した一定の空きメモリ容量より判定値として取得した空きメモリ容量が小さければ、診断対象サーバの負荷が大きいとして、ＳＱＬを実行しないと判定する。
【００２２】
上記端末装置の他の一態様では、前記しきい値は、予め規定された一定の時間帯であり、前記判定関数は、現在の時刻を取得する関数であって、前記実行判定手段は、前記判定値比較手段が結果として、前記判定値が前記しきい値に含まれると判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定する。これによれば、しきい値として予め診断対象サーバの負荷が小さい時間帯を規定しておく。よって、端末装置は、予めしきい値として規定した負荷が小さい時間帯に、判定値として取得した現在の時刻が含まれていれば、ＳＱＬを実行すると判定する。一方、予めしきい値として規定した負荷が小さい時間帯に、判定値として取得した現在の時刻が含まれていなければ、ＳＱＬを実行しないと判定する。なお、予めしきい値として負荷が大きい時間帯を規定しておき、判定値がしきい値に含まれない場合にのみＳＱＬを実行すると判定することとしてもよい。
【００２３】
上記端末装置のさらに他の一態様では、前記判定関数は、一定の定数を取得する関数であって、前記実行判定手段は、前記判定値比較手段が結果として、前記しきい値に関わらず前記判定値として前記定数を取得したと判定した場合に、前記ＳＱＬを前記診断対象サーバにおいて実行すると判定する。これによれば、しきい値に関わらず、ＳＱＬを実行すると判定することが可能となる。よって、このような判定関数は、診断処理サーバの負荷状況に関わらず、必ず実行しなければならないＳＱＬに対して特に有効である。
【００２４】
本発明の別の観点では、診断を行うデータベースを有する診断対象サーバと通信可能に接続されたコンピュータにより実行される診断プログラムであって、前記診断対象サーバにおいて実行する複数のＳＱＬ及び各ＳＱＬにそれぞれ設定された付加情報から構成される診断スクリプトに基づいて、前記ＳＱＬ及び前記付加情報から構成された配列であるＳＱＬリストを作成するＳＱＬリスト作成手段、前記ＳＱＬリストから、前記ＳＱＬ及び前記付加情報から構成された配列を読み込む読込手段、前記読込手段が読み込んだ付加情報に基づいて、前記診断対象サーバから動作負荷を表す判定値を取得する判定値取得手段、前記判定値取得手段が取得した前記判定値及び前記読込手段が読み込んだ付加情報に基づいて、前記読込手段が読み込んだＳＱＬを前記診断対象サーバにおいて実行するか否かを判定する実行判定手段、前記実行判定手段が実行すると判定した場合に、前記読込手段が読み込んだＳＱＬを前記診断対象サーバへ送信するＳＱＬ送信手段、前記ＳＱＬ送信手段が送信したＳＱＬの実行結果を、前記診断対象サーバから取得する実行結果受信手段、として前記コンピュータを機能させる。
【００２５】
上記診断プログラムをコンピュータにより実行することにより、上述の端末装置を実現することができる。また、上述の端末装置の各態様も同様に実現することができる。
【発明の効果】
【００２６】
本発明によれば、実行するスクリプトの各ＳＱＬ要素に重み付けをすることで、データベースを有するサーバの負荷状況に基づいて所定のＳＱＬを実行するか否かを判定することができる。
【発明を実施するための最良の形態】
【００２７】
以下、図面を参照して本発明の好適な実施の形態について説明する。
【００２８】
[診断システム]
まず、診断システムについて図１乃至図４を参照して説明する。図１は、診断システム１００の概略構成を示す。図２は、従来の診断システムにおける診断プログラム１１ａの機能を示す図である。図３は、従来の診断システム及び本発明の診断システムそれぞれにおけるＣＰＵ使用率の変化を示す図である。図４は、本発明の診断システムにおける診断プログラム１１の機能を示す図である。
【００２９】
図１に示すように、診断システムにおいて、外部ファイルとして診断スクリプトを有するクライアント端末１０と、診断対象となるデータベースを保有する診断対象サーバ１２とはネットワーク２を介して通信可能に接続されている。ネットワーク２の１つの好適な例はインターネットである。ここで、クライアント端末１０とは、ネットワーク２を介して診断対象サーバ１２とデータの送受信が可能なパソコン、ＰＤＡ（Personal Digital Assistants）等であって、予め診断プログラム１１を保有している。この診断プログラム１１により、クライアント端末１０は、外部ファイルとして診断スクリプトを保持している。ここで、診断スクリプトは、データベースを診断するための複数のＳＱＬ（Structured Query Language；データベースの問い合わせ言語）の集合体であって、診断プログラム１１は、当該診断スクリプトを操作（ハンドリング）するプログラムである。なお、詳細は後述するが、診断スクリプトに記述されたＳＱＬは、上から順に実行される。
【００３０】
データベースがうまく動かない等の問題が生じた場合、当該データベースの診断を行う必要がある。このとき、クライアント端末１０は、予め診断プログラム１１により、診断スクリプトを保持している。そして、クライアント端末１０の診断プログラム１１は、診断スクリプトに記述されたＳＱＬと、当該ＳＱＬの実行命令とを診断対象サーバ１２に送信する。即ち、診断プログラム１１は、診断対象サーバ１２に、診断スクリプト内のＳＱＬを実行するように命令する。一方、診断対象サーバ１２は、診断プログラム１１から受信した実行命令に従い、受信したＳＱＬを実行する。さらに、診断対象サーバ１２は、当該ＳＱＬの実行結果をクライアント端末１０に送信する。このように、診断スクリプトに記述されたＳＱＬを診断対象サーバ１２が実行し、その実行結果をクライアント端末１０に送信することでデータベースの診断が行われる。
【００３１】
なお、診断対象サーバ１２でＳＱＬを実行する際には、当該診断対象サーバ１２のＣＰＵやメモリといったシステム資源が消費される。
【００３２】
従来の診断システムにおいて診断プログラム１１ａは、図２に示すように、まず、診断スクリプトから１つのＳＱＬを読み込む。なお、診断プログラム１１ａは、図１と同様にクライアント端末１０内で動作しているが、図２及び図４では当該クライアント端末１０の図示を便宜上省略する。そして、診断プログラム１１ａは、読み込んだＳＱＬを実行するように、診断対象サーバ１２に命令する。診断対象サーバ１２は、診断プログラム１１ａからの命令として受信したＳＱＬを実行する。さらに、診断対象サーバ１２は、当該ＳＱＬの実行結果をクライアント端末１０に送信する。クライアント端末１０が診断結果を受信すると、診断プログラム１１ａは、診断スクリプトから次のＳＱＬを読み込み、上述の処理を繰り返し行う。この診断処理は、当該診断スクリプトに記述された全てのＳＱＬについて終了するまで繰り返し行われる。
【００３３】
図３（ａ）は、従来の診断システムにおけるＣＰＵ使用率の変化を示す図である。具体的には、縦軸に「診断対象サーバ１２のＣＰＵ使用率」、横軸に「時間」を取り、診断プログラム１１ａを実行した際の時間の経過と、診断対象サーバ１２のＣＰＵ使用率との関係を示すグラフである。グラフ上における実線は、ＳＱＬ実行を除いた他のプログラムによるＣＰＵ使用率、破線は、ＳＱＬ実行により達するＣＰＵ使用率を示している。
【００３４】
従来の診断システムにおける診断プログラム１１ａは、上述のように、一度実行を開始すると、診断スクリプトに記述された最後のＳＱＬの実行が完了するまで、診断処理を終了しない。そのため、図３（ａ）に示すように、診断プログラム１１ａを実行中、診断対象サーバ１２上の他のプログラムが実行されることにより、診断対象サーバ１２の負荷が増大した場合であっても、診断処理を実行し続ける。そのため、診断対象サーバ１２の負荷が極端に増大することによる、各プログラムの実行時間の超過や中断、最悪の場合には、診断対象サーバ１２のフリーズといった問題が生じる。
【００３５】
これに対し、本発明の診断システム１００において診断プログラム１１は、図４に示すように、まず、診断スクリプトから１つのＳＱＬ及び当該ＳＱＬに設定された付加情報、即ち１組のＳＱＬ及び付加情報を読み込む。そして、診断プログラム１１は、読み込んだ付加情報に基づいて診断対象サーバ１２の負荷状況を考慮し、読み込んだＳＱＬを実行するか否かの判定を行う。ＳＱＬを実行すると判定した場合、診断プログラム１１は、読み込んだＳＱＬを実行するように、診断対象サーバ１２に命令する。診断対象サーバ１２は、診断プログラム１１からの命令として受信したＳＱＬを実行する。さらに、診断対象サーバ１２は、当該ＳＱＬの実行結果をクライアント端末１０に送信する。クライアント端末１０が診断結果を受信すると、診断プログラム１１は、診断スクリプトから次のＳＱＬを読み込み、上述の処理を繰り返し行う。一方、ＳＱＬを実行しないと判定した場合、診断プログラム１１は、診断対象サーバ１２に実行命令を行うことなく、診断スクリプトから次のＳＱＬを読み込み、上述の処理を繰り返し行う。この診断処理は、後述する所定の条件を完了するまで繰り返し行われる。
【００３６】
図３（ｂ）は、本発明の診断システム１００におけるＣＰＵ使用率の変化を示す図である。図３（ａ）と同様に、診断プログラム１１を実行した際の時間の経過と、診断対象サーバ１２のＣＰＵ使用率との関係を示すグラフである。
【００３７】
本発明の診断システム１００における診断プログラム１１は、上述のように、各ＳＱＬの実行前に、実行するか否かの判定を行うフェーズを設けている。具体的に、詳細は後述するが、診断プログラム１１は、付加情報に基づいて診断対象サーバ１２の負荷をチェックし、予め規定されたしきい値よりもその負荷が小さい場合にのみＳＱＬを実行する。よって、図３（ｂ）に示すように、診断プログラム１１を実行中、診断対象サーバ１２上の他のプログラムが実行されることにより、診断対象サーバ１２の負荷が増大した場合には、診断処理を中断する。そのため、従来の診断システムにおける問題点を解消することができる。
【００３８】
なお、診断対象サーバ１２の負荷をチェックする方法（コマンド）自体は、当該診断対象サーバ１２の負荷にはほとんどならないものである。また、ＳＱＬを実行するか否かを判定するしきい値は、ＳＱＬ毎に設定され、付加情報に含まれている。
【００３９】
[ＳＱＬ]
次に、ＳＱＬについて図５を参照して詳しく説明する。図５は、診断スクリプトに記述されたＳＱＬの例を示す。
【００４０】
ＳＱＬとは、データベースへの問い合わせ言語である。ＳＱＬを用いることで、表の定義やデータ操作、関係演算など、データベースに関するほとんどの操作を機械可読なテキストとして記述することができる。よって、ＳＱＬによりデータベースそのものと、データベース管理システム（以下、「ＤＢＭＳ」と呼ぶ。）との関係を抽象化することが可能となる。
【００４１】
図５（ａ）に示すようなＳＱＬを実行した場合、診断対象サーバ１２にとって高負荷となっている列などを抽出することができる。具体的に、図５における「SELECT」とは、列を指定して、特定の条件に合う情報を抽出することを表している。また、図５（ａ）の「SELECT a, b, c」における「a」、「b」、「c」はそれぞれ任意の列（発行時間、人、ＳＱＬ文など）を表している。また、「FROM table A」の「table A」は、情報を抽出する任意の表の名称を表している。よって、列「a」、「b」及び「c」が高負荷な列である場合、図５（ａ）に示すＳＱＬは、「table A」から高負荷となっている列の情報を抽出する操作を示している。
【００４２】
図５（ｂ）に示すようなＳＱＬを実行した場合、診断対象サーバ１２のメモリ使用効率などを抽出することができる。具体的に、図５（ｂ）の「avg(a)」は任意の列の平均値を表している。よって、列「a」が例えばメモリ使用効率を示す列である場合、図５（ｂ）に示すＳＱＬは、「table B」からメモリ使用効率の平均値を抽出する操作を示している。ここで、メモリ使用効率とは、ＳＱＬ全体に対して診断対象サーバ１２のメモリ上にキャッシュされている情報を返した比率である。換言すると、どのくらいの割合（％）でメモリ上の情報を要求元に返しているかを示す数値である。
【００４３】
図５（ｃ）に示すようなＳＱＬを実行した場合、データベースにおけるパラメータの名前と設定値を全て抽出することができる。具体的に、図５（ｃ）の「name」はパラメータの名前の列を、「value」は設定値の列を表している。よって、図５（ｃ）に示すＳＱＬは、「table C」からパラメータの名前と設定値を全て抽出する操作を示している。
【００４４】
図５（ｄ）に示すようなＳＱＬを実行した場合、データベースに含まれる表の情報を全て抽出することができる。具体的に、図５（ｄ）の「*（アスタリスク」）は全ての列を表している。よって、図５（ｄ）に示すＳＱＬは、「table D」の情報を全て抽出する操作を示している。
【００４５】
なお、詳細は後述するが、「table A」〜「table D」はＤＢＭＳがディクショナリ領域に管理するテーブルである。また、図５は、上記４つのＳＱＬを例として記載しているが、本発明はこれに限定されるものではなく、任意のＳＱＬを診断スクリプトに記述することが可能である。
【００４６】
[付加情報]
次に、各ＳＱＬに設定された付加情報について、図６乃至図９を参照して詳しく説明する。図６は、付加情報として含まれる情報を説明する図である。図７は、判定関数の例を示す図である。図８は、従来の診断スクリプトの例と、本発明の診断スクリプトの例を示す図である。
【００４７】
図６に示すように、付加情報は、判定関数、しきい値、判定実行数、最大判定実行数及び未実行時移動関数（以下、「移動関数」と呼ぶ。）を含んでいる。
【００４８】
図６に示す判定関数とは、しきい値との比較を行うための判定値を導く関数である。即ち、判定値とは、診断対象サーバから取得する判定関数の結果であって、ＳＱＬを実行しようとする際の診断対象サーバ１２の負荷を示す値である。なお、判定関数はＳＱＬ毎に任意に設定されるものであり、各ＳＱＬでそれぞれ異なるものである。また、複数の判定関数を１つのＳＱＬに設定してもよい。
【００４９】
ここで、判定関数について図７を参照して詳しく説明する。図７（ａ）に示すような判定関数によれば、ＯＳコマンドを実行し、診断対象サーバ１２のＣＰＵ使用率を判定値として取得することができる。ＣＰＵ使用率が小さければ診断対象サーバ１２の負荷も小さくなり、反対にＣＰＵ使用率が大きければ診断対象サーバ１２の負荷も大きくなる。この場合、後述するしきい値もＣＰＵ使用率となり、判定値がしきい値よりも小さい場合にのみ、ＳＱＬを実行することになる。
【００５０】
なお、判定関数を示す変数表記は「ｆ」である。また、図７に示す変数「ｔ」は、ＳＱＬ実行判定を行う時点の時間情報であって、判定関数「ｆ（ｔ）」を実行すると、ＳＱＬ実行判定時点での判定関数「ｆ」の結果を取得することができる。また、図７に各判定関数のコマンド例を示しているが、本発明はこれに限定されるものではなく、ＯＳに応じて任意のコマンドを使用することができる。
【００５１】
図７（ｂ）に示すような判定関数によれば、診断対象サーバ１２の空きメモリ容量を判定値として取得することができる。空きメモリ容量が小さければ診断対象サーバの負荷は大きくなり、反対に空きメモリ容量が大きければ診断対象サーバの負荷は小さくなる。この場合、後述するしきい値も空きメモリ容量となり、判定値がしきい値よりも大きい場合にのみ、ＳＱＬを実行することになる。
【００５２】
図７（ｃ）に示すような判定関数によれば、ＳＱＬ実行判定時の時間情報を判定値として取得することができる。この場合、後述するしきい値はＳＱＬの実行を許可する時間帯となり、判定値がしきい値に含まれている場合にのみ、ＳＱＬを実行することになる。または、後述するしきい値はＳＱＬの実行を許可しない時間帯となり、判定値がしきい値に含まれていない場合にのみ、ＳＱＬを実行することになる。この判定関数及びしきい値は、予め診断対象サーバ１２の負荷が増大する時間帯又は軽減する時間帯が明確な場合に有効である。
【００５３】
図７（ｄ）に示すような判定関数によれば、いかなる場合においても定数を取得することができる。この場合、後述するしきい値に関わらず、当該定数を取得した場合にはＳＱＬを実行することになる。この判定関数は、診断処理サーバ１２の負荷状況に関わらず、必ず実行しなければならないＳＱＬに対して特に有効である。
【００５４】
なお、図７は、上記４つの判定関数を例として記載しているが、本発明はこれに限定されるものではなく、任意の判定関数を各ＳＱＬに設定することができる。また、判定関数は、１つのＳＱＬに対して１つ設定すると限られるものではなく、１つのＳＱＬに対して複数の判定関数の組み合わせを設定することとしてもよい。
【００５５】
図６に示すしきい値とは、ＳＱＬを実行するか否かを判定するために予め規定された一定の値である。具体的には、しきい値と判定値とを比較し、その大小でＳＱＬを実行するか否かが判定される。
【００５６】
図６に示す判定実行数とは、ＳＱＬを実行するか否かを判定した回数である。
【００５７】
図６に示す最大判定実行数とは、ＳＱＬを実行するか否かを判定する最大回数である。判定実行数が最大判定実行数に達した上で、ＳＱＬが実行されない場合、診断プログラム１１は、当該ＳＱＬは未実行のまま診断処理を終了する。このように、最大判定実行数を使用することで、診断処理の永久ループを避け、強制的に診断処理を終了させることが可能となる。
【００５８】
図６に示す移動関数とは、しきい値と判定値を比較することにより、ＳＱＬを実行しないと判定した場合に、ＳＱＬ及び当該ＳＱＬに設定された付加情報が後述するＳＱＬリスト内で移動する位置を示す関数である。
【００５９】
具体的に、従来の診断スクリプトは、図８（ａ）に示すように、複数のＳＱＬのみから構成されていた。これに対し、本発明の診断スクリプトは、図８（ｂ）に示すように、複数組のＳＱＬ及び付加情報から構成されている。このとき、図示のように、判定関数及びＳＱＬは区切り文字（｛｝）で囲むものとする。なお、区切り文字（｛｝）は、例えば（“”）や（$$）などでも可能である。
【００６０】
[ＳＱＬリスト]
次に、診断プログラム１１が保有するＳＱＬリストについて図９乃至図１３を参照して詳しく説明する。図９は、診断プログラム１１が保有するＳＱＬリスト、実行済ＳＱＬリスト及び未実行ＳＱＬリストを説明する図である。図１０は、ＳＱＬリスト、実行済ＳＱＬリスト及び未実行ＳＱＬリストのデータ構成を模式的に示す図である。なお、図１０に示すように、判定関数、しきい値、判定実行数、最大判定実行数及び移動関数の変数表記をそれぞれ「ｆ」、「ｂ」、「ｅ」、「ｃ」及び「ｍ」とする。図１１は、診断スクリプトに基づくＳＱＬリストの作成を説明する図である。図１２は、移動関数の例を示す図である。図１３は、診断対象サーバ１２が保有するデータベースの構成を模式的に示す図である。
【００６１】
図９に示すように、診断プログラム１１は、ＳＱＬリスト、実行済ＳＱＬリスト及び未実行ＳＱＬリストを保有している。
【００６２】
図１０（ａ）に示すように、ＳＱＬリストとは、実行するか否かを判定するＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される配列である。外部ファイルである診断スクリプトに記述された全てのＳＱＬ及び付加情報は、診断プログラム１１が保有するＳＱＬリストに格納される。具体的に、診断プログラム１１は、例えば図１１（ａ）に示すような外部ファイルである診断スクリプトを読み込むことにより、図１１（ｂ）に示すような複数組のＳＱＬ及び付加情報から構成される配列であるＳＱＬリストを作成し、内部ファイルとして保有している。よって、ＳＱＬリストは、初期段階では診断スクリプトに記述された１組以上のＳＱＬ及び付加情報から構成されており、複数組から構成される場合はリストの１番最初の組がＳＱＬ実行判定の対象となる。
【００６３】
なお、しきい値と判定値を比較することにより、ＳＱＬを実行しないと判定した場合、ＳＱＬ及び当該ＳＱＬに設定された付加情報は、移動関数に基づいてＳＱＬリスト内で移動する。この移動関数に基づくＳＱＬリスト内での移動について、図１２を参照して説明する。
【００６４】
図１２（ａ）に示すような移動関数「LAST」によれば、診断プログラム１１はＳＱＬを実行しないと判定した場合に、ＳＱＬリストの最初に位置する当該ＳＱＬ及び付加情報から構成される１つの配列を、図示のようにＳＱＬリストの最後に移動する。このような移動関数による方式を、巡回方式と呼ぶ。
【００６５】
図１２（ｂ）に示すような移動関数「FIRST」によれば、診断プログラム１１はＳＱＬを実行しないと判定した場合に、ＳＱＬリストの最初に位置する当該ＳＱＬ及び付加情報から構成される１つの配列を、図示のように再びＳＱＬリストの最初に移動する。換言すると、ＳＱＬを実行しないと判定した場合であっても、当該ＳＱＬ及び付加情報から構成される１つの配列は同じ位置に留まる。このような移動関数による方式を、固定方式と呼ぶ。これによれば、ＳＱＬの順番が意味を持つ場合であっても、予め診断スクリプトに記述された順番でＳＱＬを実行することが可能となる。
【００６６】
なお、このような移動関数では、診断対象サーバ１２の負荷が一瞬だけ高い場合を除いて、診断プログラム１１が当該ＳＱＬを連続的に実行しないと判定することが考えられる。このような連続的な判定を回避する方法として、判定関数において、診断対象サーバ１２の負荷を示す判定値を一定時間待機した後に取得するように設定することなどが考えられる。
【００６７】
図１２（ｃ）に示すような移動関数「n」によれば、診断プログラム１１はＳＱＬを実行しないと判定した場合に、ＳＱＬリストの最初に位置する当該ＳＱＬ及び付加情報から構成される１つの配列を、任意の順番の位置に移動する。また、図１２（ｃ）に示すような移動関数「min(n, LAST）」によれば、診断プログラム１１はＳＱＬを実行しないと判定した場合に、ＳＱＬリストの最初に位置する当該ＳＱＬ及び付加情報から構成される１つの配列を、ＳＱＬリストのｎ番目、又は、ＳＱＬリストがｎより短いときはＳＱＬリストの最後に移動する。具体的に、移動関数が配列を２番目の位置に移動することを示している場合には、図示のように、配列は移動する。しかし、移動関数が配列を５番目の位置に移動することを示している場合には、当該５番目の位置が存在しないため、ＳＱＬリストの最後に配列は移動する。これによれば、ＳＱＬ及び付加情報からなる配列の個数が変動するＳＱＬリストであっても、容易に任意の順番の位置に移動するような移動関数を利用することができる。
【００６８】
図９及び図１０（ｂ）に示すように、実行済ＳＱＬリストは、診断対象サーバ１２により実行されたＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される配列である。つまり、診断対象サーバ１２により実行されたＳＱＬ及び付加情報は、ＳＱＬリストから実行済ＳＱＬリストへ移動する。よって、初期段階では実行済ＳＱＬリストには何も格納されていないが、診断処理が進行するにつれて、診断対象サーバ１２により実行されたＳＱＬ及び付加情報が格納されていく。
【００６９】
図９及び図１０（ｃ）に示すように、未実行ＳＱＬリストは、判定実行数が最大判定実行数に達したため未実行のまま診断処理を終了すると判定されたＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される配列である。つまり、診断プログラム１１により未実行のまま診断処理を終了すると決定されたＳＱＬ及び付加情報は、ＳＱＬリストから未実行ＳＱＬリストへ移動する。よって、診断プログラム１１により未実行のまま診断処理を終了すると決定されたＳＱＬ及び付加情報がない場合には、未実行ＳＱＬリストには何も格納されないこともある。また、未実行ＳＱＬリストに格納されたＳＱＬは、診断処理サーバ１２により実行されていないため、未実行ＳＱＬリストにＳＱＬ及び付加情報が格納されている場合には、診断処理は完全に完了したとはいえない。よって、診断プログラムは、診断処理を完全に完了するために、その後、診断スクリプトに記述されたＳＱＬを改めて実行したり、未実行ＳＱＬリストに格納されたＳＱＬのみを実行したりといった補完処理を行う必要がある。
【００７０】
ここで、図１３を参照して、診断対象サーバ１２が保有するデータベースの構成について説明する。診断対象サーバが保有するデータベースは、図示のように、ユーザ自らが社員表や売上表などを書き込むユーザ領域と、データベースを管理するためにＤＢＭＳが自動的に統計情報などを書き込むディクショナリ（「辞書」又は「カタログ」とも呼ぶ。）領域とから構成されている。このように、データベースはユーザ領域とディクショナリ領域に分かれているものの、どちらの領域を使用する場合であっても同一の診断対象サーバ１２に負荷がかかる。よって、本発明のように、診断対象サーバ１２の負荷に基づいてＳＱＬを実行するか否かを判定する診断処理が有益となる。なお、診断処理において実行時にＳＱＬが読みに行くデータベースの領域は、破線で囲むディクショナリ領域である。
【００７１】
[クライアント端末]
次に、クライアント端末１０について図１４を参照して詳しく説明する。図１４は、診断システム１００における、特にクライアント端末１０の内部構成を示す図である。図示のように、クライアント端末１０は、診断プログラム１１、ＳＱＬリスト作成機能１０１、読込機能１０２、ＳＱＬ実行判定機能１０３、ＳＱＬ送信機能１０４、実行済ＳＱＬリスト移動機能１０５及び実行結果受信機能１０６から構成されている。また、ＳＱＬ実行判定機能１０３は、さらに実行数比較機能１３１、未実行ＳＱＬリスト移動機能１３２、判定関数実行機能１３３、判定値比較機能１３４、判定実行数加算機能１３５及びＳＱＬリスト移動機能１３６から構成されている。なお、これら各機能は、診断プログラム１１をクライアント端末１０内のＣＰＵなどが実行することにより実現される。
【００７２】
診断プログラム１１は、各ＳＱＬに設定された付加情報及び診断対象サーバ１２の負荷状況に基づいて、当該ＳＱＬを実行するか否かを判定した上で、データベースの診断処理を実行するプログラムである。
【００７３】
ＳＱＬリスト作成機能１０１は、図１１（ａ）に示すような外部ファイルである診断スクリプトを読み込むことで、図１１（ｂ）に示すようなＳＱＬリストを内部ファイルとして作成する機能である。
【００７４】
読込機能１０２は、ＳＱＬリスト作成機能１０１が作成したＳＱＬリストの最初に位置し、ＳＱＬ及び付加情報から構成される１つの配列を読み込む機能である。
【００７５】
ＳＱＬ実行判定機能１０３は、読込機能１０２が読み込んだ付加情報と、診断対象サーバ１２の負荷状況とに基づいて、読み込んだＳＱＬを実行するか否かを判定する機能である。
【００７６】
実行数比較機能１３１は、読込機能１０２が読み込んだ付加情報に含まれる判定実行数と最大判定実行数とを比較する機能である。
【００７７】
未実行ＳＱＬリスト移動機能１３２は、実行数比較機能１３１が、判定実行数が最大判定実行数と等しい又は判定実行数が最大判定実行数より大きいと判定した場合に、読込機能１０２が読み込んだＳＱＬを実行しないことを決定する機能である。また、未実行ＳＱＬリスト移動機能１３２は、実行しないことを決定したＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される１つの配列を、図１０（ａ）に示すようなＳＱＬリストから、図１０（ｃ）に示すような未実行ＳＱＬリストへ移動する機能である。このように、未実行ＳＱＬリストへ移動することで、既に実行しないことを決定したＳＱＬを、ＳＱＬ実行判定機能１０３が再度判定してしまうことを防止することができる。
【００７８】
判定関数実行機能１３３は、実行数比較機能１３１が、判定実行数が最大判定実行数より小さいと判定した場合に、読込機能１０２が読み込んだ付加情報に含まれる判定関数を実行する機能である。判定関数実行機能１３３は、判定関数を実行することで、診断対象サーバ１２から、当該診断対象サーバ１２の負荷を示す判定値を取得する。
【００７９】
判定値比較機能１３４は、読込機能１０２が読み込んだ付加情報に含まれるしきい値と、判定関数実行機能１３３が取得した判定値とを比較する機能である。なお、ＳＱＬ実行判定機能１０３は、この判定値比較機能１３４による比較結果に基づいて、読込機能１０２が読み込んだＳＱＬを実行するか否かを判定する。
【００８０】
判定実行数加算機能１３５は、判定値比較機能１３４が比較したしきい値及び判定値に対応する付加情報に含まれる判定実行数に「１」を加算する機能である。
【００８１】
ＳＱＬリスト移動機能１３６は、ＳＱＬ実行判定機能１０３が、読込機能１０２が読み込んだＳＱＬを実行しないと判定した場合に、読込機能１０２が読み込んだ付加情報に含まれる移動関数に基づいて当該ＳＱＬ及び付加情報から構成される１つの配列を、図１２に示すようにＳＱＬリスト内で移動する機能である。
【００８２】
ＳＱＬ送信機能１０４は、ＳＱＬ実行判定機能１０３が、読込機能１０２が読み込んだＳＱＬを実行すると判定した場合に、当該ＳＱＬと、当該ＳＱＬの実行命令とを診断対象サーバ１２へ送信する機能である。
【００８３】
実行済ＳＱＬリスト移動機能１０５は、ＳＱＬ送信機能１０４が送信したＳＱＬ及び当該ＳＱＬに設定された付加情報から構成される１つの配列を、図１０（ａ）に示すようなＳＱＬリストから、図１０（ｂ）に示すような実行済ＳＱＬリストへ移動する機能である。このように、実行済ＳＱＬリストへ移動することで、既に実行したＳＱＬを、ＳＱＬ実行判定機能１０３が再度判定してしまうことを防止することができる。
【００８４】
実行結果受信機能１０６は、診断対象サーバ１２から、ＳＱＬ送信機能１０４が送信したＳＱＬの実行結果を受信する機能である。このように受信したＳＱＬの実行結果に基づいて、診断プログラム１１は、診断対象サーバ１２が有するデータベースを診断することができる。
【００８５】
[診断処理]
次に、図１５を参照して、上記診断システム１００を構成するクライアント端末１０により実行される診断処理について説明する。図１５は、診断処理のフローチャートである。
【００８６】
図示のように、診断処理において、クライアント端末１０の診断プログラム１１は、まず外部ファイルである診断スクリプトに基づいて、内部ファイルであるＳＱＬリストを作成する。さらに、診断プログラム１１は、ＳＱＬリストから１組のＳＱＬ及び付加情報を読み込む（ステップＳ１）。そして、診断プログラム１１は、読み込んだ付加情報に含まれる判定実行数と最大判定実行数とを比較する（ステップＳ２）。判定実行数が最大判定実行数と等しいと判定した場合、診断プログラム１１は、読み込んだＳＱＬ及び付加情報から構成される１つの配列を、ＳＱＬリストから未実行ＳＱＬリストへ移動する（ステップＳ１１）。
【００８７】
一方、判定実行数が最大判定実行数より小さいと判定した場合、診断プログラム１１は、読み込んだ付加情報に含まれる判定関数を実行する（ステップＳ３）。これにより、診断プログラム１１は、診断対象サーバ１２から、負荷状況を示す判定値を取得することができる。判定値を取得すると、診断プログラム１１は、読み込んだ付加情報に含まれるしきい値と、取得した当該判定値とを比較する（ステップＳ４）。具体的に、判定値及びしきい値がＣＰＵ使用率であった場合、診断プログラム１１は、判定値がしきい値より大きいと判定すると、診断対象サーバ１２の負荷が大きいため、読み込んだＳＱＬを実行しないと判定する。よって、診断プログラム１１は、読み込んだ付加情報に含まれる判定実行数に「１」を加算し（ステップＳ５）、読み込んだＳＱＬ及び付加情報から構成される１つの配列を、当該付加情報に含まれる移動関数に基づいて、ＳＱＬリスト内で移動する（ステップＳ６）。
【００８８】
一方、判定値がしきい値と等しい又は判定値がしきい値より小さいと判定すると、診断プログラム１１は、診断対象サーバ１２の負荷が小さいため、読み込んだＳＱＬを実行すると判定する。よって、診断プログラム１１は、読み込んだ付加情報に含まれる判定実行数に「１」を加算し（ステップＳ７）、読み込んだＳＱＬ及び当該ＳＱＬの実行命令を診断対象サーバ１２へ送信する（ステップＳ８）。さらに、診断プログラムは、読み込んだＳＱＬ及び付加情報から構成される１つの配列を、ＳＱＬリストから実行済ＳＱＬリストへ移動する（ステップＳ９）。さらに、診断プログラム１１は、ステップＳ８において送信したＳＱＬの実行結果を、診断対象サーバ１２から受信する（ステップＳ１０）。
【００８９】
そして、診断プログラム１１は、ＳＱＬリストに次のＳＱＬ及び付加情報から構成される配列が存在するか否かを判定する（ステップＳ１２）。次のＳＱＬ及び付加情報から構成される配列が存在する場合（ステップＳ１２；Ｙｅｓ）、診断プログラム１１は、ステップＳ１乃至１０の処理を繰り返し行う。一方、次のＳＱＬ及び付加情報から構成される配列が存在しない場合、即ちＳＱＬリストが空の場合（ステップＳ１２；Ｎｏ）、診断プログラム１１は、診断処理を終了する。
【００９０】
次に、クライアント端末１０により実行される診断処理について、図１６乃至２１を参照して詳細に説明する。
【００９１】
図１６乃至図２０は、診断処理における配列の変化を説明する図である。図１６（ａ）乃至図２０（ａ）は、診断処理におけるＳＱＬリスト、実行済ＳＱＬリスト及び未実行ＳＱＬリスト間での配列の移動を特に説明する図である。図１６（ｂ）乃至図２０（ｂ）は、診断処理の流れを特に説明するフローチャートである。図１６（ｃ）乃至図２０（ｃ）は、診断処理における配列内での動きを特に説明する図である。また、図２１は、縦軸に「値」、横軸に「時間」を取り、診断処理におけるしきい値及び判定値と、時間との関係を説明するグラフである。
【００９２】
なお、後述の診断処理においても、図１５に示す診断処理と同様に、しきい値及び判定値はＣＰＵ使用率であるものとする。
【００９３】
診断プログラム１１は、まず、診断スクリプトに基づいて、図１６（ａ）上部に示すようなＳＱＬリストを作成する。さらに、図１６（ｂ）のフローチャートが示すように、診断プログラム１１は、作成したＳＱＬリストの最初に位置するＳＱＬ及び付加情報から構成される１つの配列を読み込む（ステップＳ２１）。読み込んだ配列は、図１６（ｃ）に示す配列である。そして、診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ１）「０」と、判定最大実行数（ｃ１）「１」とを比較する（ステップＳ２２）。この場合、判定実行数が判定最大実行数より小さいため、診断プログラム１１は、判定関数（ｆ１）を実行する（ステップＳ２３）。診断プログラム１１は、判定関数（ｆ１）を実行した結果、図１６（ｃ）に示すように、判定値（ｒ１）「３０」を取得したとする。一方、判定実行数が判定最大実行数と等しい又は判定実行数が判定最大実行数より大きい場合には、診断プログラム１１は、処理Ａとして図１５に示すステップＳ１１の処理を行う。
【００９４】
判定値（ｒ１）を取得した診断プログラム１１は、当該判定値（ｒ１）「３０」と、読み込んだ配列の付加情報に含まれるしきい値（ｂ１）「８０」とを比較する（ステップＳ２４）。この場合、判定値がしきい値より小さいため、診断プログラム１１は、読み込んだＳＱＬ１を実行すると判定する。一方、判定値がしきい値より大きかった場合には、診断プログラム１１は、処理Ｂとして図１５に示すステップＳ５及びＳ６の処理を行う。
【００９５】
ＳＱＬ１を実行すると判定した診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ１）「０」を加算して「１」とする（ステップＳ２５）。そして、診断プログラム１１は、ＳＱＬ１及び当該ＳＱＬ１の実行命令を診断対象サーバ１２へ送信する（ステップＳ２６）。診断対象サーバ１２は、受信したＳＱＬを実行する。一方、診断プログラム１１は、ＳＱＬ１及び付加情報から構成される１つの配列を、図１６（ａ）下部に示すように、ＳＱＬリストから実行済ＳＱＬリストへ移動する（ステップＳ２７）。さらに、診断プログラム１１は、診断対象サーバ１２からＳＱＬ１の実行結果を受信し（ステップＳ２８）、ＳＱＬリストに次のＳＱＬ及び付加情報から構成される配列が存在するか否かを判定する（ステップＳ２９）。図１６（ａ）下部に示すＳＱＬリストには次の配列が存在するため、診断プログラム１１は、図１７（ｂ）のフローチャートが示すステップＳ３１へ進む。一方、次の配列が存在しない場合、診断プログラム１１は、診断処理を終了する。
【００９６】
図１７（ｂ）に示すステップＳ３１において、診断プログラム１１は、図１７（ａ）上部に示すＳＱＬリストの最初に位置するＳＱＬ及び付加情報から構成される１つの配列を読み込む（ステップＳ３１）。読み込んだ配列は、図１７（ｃ）に示す配列である。そして、診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ２）「０」と、判定最大実行数（ｃ２）「１」とを比較する（ステップＳ３２）。この場合、判定実行数が判定最大実行数より小さいため、診断プログラム１１は、判定関数（ｆ２）を実行する（ステップＳ３３）。診断プログラム１１は、判定関数（ｆ２）を実行した結果、図１７（ｃ）に示すように、判定値（ｒ２）「５０」を取得したとする。一方、判定実行数が判定最大実行数と等しい又は判定実行数が判定最大実行数より大きい場合には、診断プログラム１１は、処理Ｃとして図１５に示すステップＳ１１の処理を行う。
【００９７】
判定値（ｒ２）を取得した診断プログラム１１は、当該判定値（ｒ１）「５０」と、読み込んだ配列の付加情報に含まれるしきい値（ｂ２）「２０」とを比較する（ステップＳ３４）。この場合、判定値がしきい値より大きいため、診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ２）「０」を加算して「１」とする（ステップＳ３５）。さらに、診断プログラム１１は、読み込んだＳＱＬ２及び付加情報から構成される１つの配列を、図１７（ａ）の下部に示すように、移動関数（LAST）に基づいて、ＳＱＬリスト内の最後の位置に移動する（ステップＳ３６）。そして、診断プログラム１１は、図１８（ｂ）のフローチャートが示すステップＳ４１へ進む。
【００９８】
図１８（ｂ）に示すステップＳ４１において、診断プログラム１１は、図１８（ａ）上部に示すようなＳＱＬリストの最初に位置するＳＱＬ及び付加情報から構成される１つの配列を読み込む（ステップＳ４１）。読み込んだ配列は、図１８（ｃ）に示す配列である。そして、診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ３）「０」と、判定最大実行数（ｃ３）「２」とを比較する（ステップＳ４２）。この場合、判定実行数が判定最大実行数より小さいため、診断プログラム１１は、判定関数（ｆ３）を実行する（ステップＳ４３）。診断プログラム１１は、判定関数（ｆ３）を実行した結果、図１８（ｃ）に示すように、判定値（ｒ３）「８０」を取得したとする。なお、判定実行数が判定最大実行数と等しい又は判定実行数が最大判定実行数より大きい場合には、診断プログラム１１は、処理Ｅとして図１５に示すステップＳ１１の処理を行う。
【００９９】
判定値（ｒ３）を取得した診断プログラム１１は、当該判定値（ｒ３）「８０」と、読み込んだ配列の付加情報に含まれるしきい値（ｂ３）「６０」とを比較する（ステップＳ４４）。この場合、判定値がしきい値より大きいため、診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ３）「０」を加算して「１」とする（ステップＳ４５）。さらに、診断プログラム１１は、読み込んだＳＱＬ３及び付加情報から構成される１つの配列を、図１８（ａ）下部に示すように、移動関数（LAST）に基づいて、ＳＱＬリスト内の最後の位置に移動する（ステップＳ４６）。そして、診断プログラム１１は、図１９（ｂ）のフローチャートが示すステップＳ５１へ進む。なお、ステップＳ４４において判定値がしきい値と等しい又は判定値がしきい値より小さい場合には、診断プログラム１１は、処理Ｆとして図１５に示すＳ７乃至Ｓ１０の処理を行う。
【０１００】
図１９（ｂ）に示すステップＳ５１において、診断プログラム１１は、図１９（ａ）上部に示すようなＳＱＬリストの最初に位置するＳＱＬ及び付加情報から構成される１つの配列を読み込む（ステップＳ５１）。読み込んだ配列は、図１９（ｃ）に示す配列である。そして、診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ２）「１」と、判定最大実行数（ｃ２）「１」とを比較する（ステップＳ５２）。この場合、判定実行数が判定最大実行数と等しいため、診断プログラム１１は、読み込んだＳＱＬ２及び付加情報から構成される１つの配列を、図１９（ａ）下部に示すように、ＳＱＬリストから未実行ＳＱＬリストに移動する（ステップＳ５３）。なお、判定実行数が判定最大実行数より小さいと判定された場合には、診断プログラム１１は、処理Ｇとして図１５に示すステップＳ３乃至Ｓ１０の処理を行う。
【０１０１】
そして、診断プログラム１１は、ＳＱＬリストに次のＳＱＬ及び付加情報から構成される配列が存在するか否かを判定する（ステップＳ５４）。図１９（ａ）下部に示すＳＱＬリストには次の配列が存在するため、診断プログラム１１は、図２０（ｂ）のフローチャートが示すステップＳ６１へ進む。なお、次の配列が存在しなかった場合、診断プログラム１１は、診断処理を終了する。
【０１０２】
図２０（ｂ）に示すステップＳ６１において、診断プログラム１１は、図２０（ａ）上部に示すようなＳＱＬリストの最初に位置するＳＱＬ及び付加情報から構成される１つの配列を読み込む（ステップＳ６１）。読み込んだ配列は、図２０（ｃ）に示す配列である。そして、診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ３）「１」と、判定最大実行数（ｃ３）「２」とを比較する（ステップＳ６２）。この場合、判定実行数が判定最大実行数より小さいため、診断プログラム１１は、判定関数（ｆ３）を実行する（ステップＳ６３）。診断プログラム１１は、判定関数（ｆ３）を実行した結果、図２０（ｃ）に示すように、判定値（ｒ３）「３０」を取得したとする。なお、判定実行数が判定最大実行数と等しい又は判定実行数が最大判定実行数より大きい場合には、診断プログラム１１は、処理Ｈとして図１５に示すステップＳ１１の処理を行う。
【０１０３】
判定値（ｒ３）を取得した診断プログラム１１は、当該判定値（ｒ３）「３０」と、読み込んだ配列の付加情報に含まれるしきい値（ｂ３）「６０」とを比較する（ステップＳ６４）。この場合、判定値がしきい値より小さいため、診断プログラム１１は、読み込んだＳＱＬ３を実行すると判定する。なお、判定値がしきい値より大きかった場合には、診断プログラム１１は、処理Ｉとして図１５にｎ示すステップＳ５及びＳ６を行う。
【０１０４】
ＳＱＬ１を実行すると判定した診断プログラム１１は、読み込んだ配列の付加情報に含まれる判定実行数（ｅ３）「１」を加算して「２」とする（ステップＳ６５）。そして、診断プログラム１１は、ＳＱＬ３及び当該ＳＱＬ３の実行命令を診断対象サーバ１２へ送信する（ステップＳ６６）。診断対象サーバ１２は、受信したＳＱＬを実行する。一方、診断プログラム１１は、ＳＱＬ３及び付加情報から構成される１つの配列を、図２０（ａ）下部に示すように、ＳＱＬリストから実行済ＳＱＬリストへ移動する（ステップＳ６７）。さらに、診断プログラム１１は、診断対象サーバ１２からＳＱＬ３の実行結果を受信し（ステップＳ６８）、ＳＱＬリストに次のＳＱＬ及び付加情報から構成される配列が存在するか否かを判定する（ステップＳ６９）。図２０（ａ）下部に示すＳＱＬリストには次の配列が存在しないため、診断プログラム１１は、診断処理を終了する。なお、ＳＱＬリストに次の配列が存在する場合には、診断プログラム１１は、処理Ｊとして図１５に示すステップＳ１乃至Ｓ１１の処理を行う。
【０１０５】
図１６乃至図２０を参照して説明するように診断処理を実行した場合、当該診断処理における、判定値及びしきい値と、時間との関係は、図２１に示すようになる。
【０１０６】
本発明によれば、診断処理において、実行する各ＳＱＬにそれぞれ設定された付加情報と、診断処理サーバ１２の負荷状況とに基づいて、当該ＳＱＬを実行するか否かを判定することができる。つまり、診断対象サーバ１２の負荷状況を確認しながら、その時点で発行可能なＳＱＬを実行し、診断スクリプトの実行期間中のサーバ負荷を常に低い状態に保つことが可能となる。よって、本発明では、従来生じていた診断処理サーバのフリーズといった問題を解消することが可能となる。
【産業上の利用可能性】
【０１０７】
本発明は、データベースの診断を行う際、常に当該データベースを有するサーバの負荷を低い状態に保つことができる診断プログラムとして利用することができる。
【図面の簡単な説明】
【０１０８】
【図１】本発明における診断システムの概略構成を示す図である。
【図２】従来の診断システムにおける診断プログラムの機能を示す図である。
【図３】従来の診断システム及び本発明の診断システムそれぞれにおけるＣＰＵ使用率の変化を示すグラフである。
【図４】本発明の診断システムにおける診断プログラムの機能を示す図である。
【図５】診断スクリプトに記述されたＳＱＬの例を示す。
【図６】付加情報として含まれる情報を説明する図である。
【図７】判定関数の例を示す図である。
【図８】従来の診断スクリプトの例と、本発明の診断スクリプトの例を示す図である。
【図９】ＳＱＬリスト、実行済ＳＱＬリスト及び未実行ＳＱＬリストを説明する図である。
【図１０】ＳＱＬリスト、実行済ＳＱＬリスト及び未実行ＳＱＬリストのデータ構成を模式的に示す図である。
【図１１】診断スクリプトに基づくＳＱＬリストの作成を説明する図である。
【図１２】移動関数の例を示す図である。
【図１３】診断対象サーバが保有するデータベースの構成を模式的に示す図である。
【図１４】クライアント端末の機能ブロック図である。
【図１５】本発明における診断処理のフローチャートである。
【図１６】診断処理における配列の変化を説明する図である。
【図１７】診断処理における配列の変化を説明する図である。
【図１８】診断処理における配列の変化を説明する図である。
【図１９】診断処理における配列の変化を説明する図である。
【図２０】診断処理における配列の変化を説明する図である。
【図２１】診断処理におけるしきい値及び判定値と、時間との関係を説明するグラフである。
【符号の説明】
【０１０９】
２…ネットワーク
１０…クライアント端末
１１…診断プログラム
１２…診断対象サーバ
１００…診断システム
１０１…ＳＱＬリスト作成機能
１０２…読込機能
１０３…ＳＱＬ実行判定機能
１０４…ＳＱＬ送信機能
１０５…実行済ＳＱＬリスト移動機能
１０６…実行結果受信機能
【図１】
2006293838.tif 000003
【図２】
2006293838.tif 000004
【図３】
2006293838.tif 000005
【図４】
2006293838.tif 000006
【図５】
2006293838.tif 000007
【図６】
2006293838.tif 000008
【図７】
2006293838.tif 000009
【図８】
2006293838.tif 000010
【図９】
2006293838.tif 000011
【図１０】
2006293838.tif 000012
【図１１】
2006293838.tif 000013
【図１２】
2006293838.tif 000014
【図１３】
2006293838.tif 000015
【図１４】
2006293838.tif 000016
【図１５】
2006293838.tif 000017
【図１６】
2006293838.tif 000018
【図１７】
2006293838.tif 000019
【図１８】
2006293838.tif 000020
【図１９】
2006293838.tif 000021
【図２０】
2006293838.tif 000022
【図２１】
2006293838.tif 000023