(57)【要約】【課題】データベースで処理されているＳＱＬ等の実行情報を低負荷で取得することが可能な情報処理装置、ＳＱＬ実行情報取得方法、及びＳＱＬ実行情報取得プログラムを提供する。【解決手段】ネットワークを介してデータベースサーバに接続され、前記データベースサーバにおいて実行されるＳＱＬ（Structured  Query  Language）の実行情報を取得するクライアントコンピュータであって、データベースサーバに格納され、監視対象となるデータベースのスキーマ情報を取得するスキーマ情報取得部と、データベースサーバが有するキャッシュに記憶された、スキーマ情報に示されたテーブルに対して行われたＳＱＬの実行情報を取得するＳＱＬ実行情報取得部と、スキーマ情報取得部とＳＱＬ実行情報取得部とを所定のタイミングで定期的に実行させる制御部と、を備える。【選択図】  図１
2013120469.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してデータベースサーバに接続され、前記データベースサーバにおいて実行されるＳＱＬ（Structured  Query  Language）の実行情報を取得する情報処理装置であって、
前記データベースサーバに格納され、監視対象となるデータベースのスキーマ情報を取得するスキーマ情報取得部と、
前記データベースサーバが有するキャッシュに記憶された、前記スキーマ情報に示されたテーブルに対して行われたＳＱＬの実行情報を取得するＳＱＬ実行情報取得部と、
前記スキーマ情報取得部と前記ＳＱＬ実行情報取得部とを所定のタイミングで定期的に実行させる制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記スキーマ情報を記憶するためのＤＢスキーマ情報記憶部をさらに備え、
前記スキーマ情報取得部は、前記監視対象となるデータベースに含まれる全てのテーブルについてのスキーマ情報を取得し、前記ＤＢスキーマ情報記憶部に記憶させ、
前記制御部は、前記ＤＢスキーマ情報記憶部に記憶された全てのテーブルについてのスキーマ情報の取得を、前記スキーマ情報取得部に対して、所定のタイミングで定期的に実行させる、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＳＱＬ実行情報を記憶するためのＳＱＬ実行情報記憶部をさらに備え、
前記ＳＱＬ実行情報取得部は、前記データベースサーバが有するキャッシュに記憶されている全てのＳＱＬについてＳＱＬの実行情報を取得し、前記ＳＱＬ実行情報記憶部に記憶させ、
前記制御部は、前記ＳＱＬ実行情報記憶部に記憶された全てのＳＱＬについてＳＱＬの実行情報の取得を、前記ＳＱＬ実行情報取得部に対して、所定のタイミングで定期的に実行させる、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記監視対象となるデータベースの監視時刻と、前記所定のタイミングを定めた監視間隔とを記憶する監視記憶部をさらに備え、
前記ＳＱＬ実行情報取得部は、取得した前記ＳＱＬの実行情報に含まれるＳＱＬ実行時刻が、前記監視時刻と前記監視間隔とによって定まる前回監視時刻以降である場合にのみ前記ＳＱＬの実行情報を取得する、
ことを特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ＳＱＬ実行情報取得部は、過去に前記ＳＱＬの実行情報を取得しているか否かを判定し、過去に前記ＳＱＬの実行情報を取得していると判定した場合には前記ＳＱＬの実行情報を上書き更新し、過去に前記ＳＱＬの実行情報を取得していないと判定した場合には前記ＳＱＬの実行情報を追加更新する、
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記ＳＱＬ実行情報取得部が取得した前記ＳＱＬ実行情報に含まれるアクセスパスに基づいて、前記テーブルに対してフルスキャンされたテーブルに関する情報と、前記ＳＱＬ実行情報と前記スキーマ情報とに基づいて定まるインデックス情報と、を含む監視結果を示すレポートを出力するレポート生成部、
をさらに備えることを特徴とする請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
ネットワークを介してデータベースサーバに接続され、前記データベースサーバにおいて実行されるＳＱＬの実行情報を取得する情報処理装置で行われるＳＱＬ実行情報取得方法であって、
前記データベースサーバに格納され、監視対象となるデータベースのスキーマ情報を取得するスキーマ情報取得ステップと、
前記データベースサーバが有するキャッシュに記憶された、前記スキーマ情報に示されたテーブルに対して行われたＳＱＬの実行情報を取得するＳＱＬ実行情報取得ステップと、を含み、
前記スキーマ情報取得ステップと前記ＳＱＬ実行情報取得ステップとを所定のタイミングで定期的に実行させる、
ことを特徴とするＳＱＬ実行情報取得方法。
【請求項８】
ネットワークを介してデータベースサーバに接続され、前記データベースサーバにおいて実行されるＳＱＬの実行情報を取得する情報処理装置で行われるＳＱＬ実行情報取得プログラムであって、
前記データベースサーバに格納され、監視対象となるデータベースのスキーマ情報を取得するスキーマ情報取得ステップと、
前記データベースサーバが有するキャッシュに記憶された、前記スキーマ情報に示されたテーブルに対して行われたＳＱＬの実行情報を取得するＳＱＬ実行情報取得ステップと、をコンピュータに実行させ、
前記スキーマ情報取得ステップと前記ＳＱＬ実行情報取得ステップとを所定のタイミングで定期的に実行させる、
ことを特徴とするＳＱＬ実行情報取得プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに対するＳＱＬ（Structured  Query  Language）の実行情報を取得する情報処理装置、ＳＱＬ実行情報取得方法、及びＳＱＬ実行情報取得プログラムに関するものである。
【背景技術】
【０００２】
従来、データベースへのアクセス速度の低下等、データベースの性能についての原因を調査する場合、データベースの付属機能であるとレース機能を用いることによって、データベース内で実行されている処理の実行情報（例えば、ＳＱＬの実行情報）を取得している。例えば、特許文献１では、各種のパッケージソフトが有するトレース情報の固有差を除去した上で、このような実行情報を取得し、その解析を行っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２３１５００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した特許文献１等の従来技術においては、データベースのトレース機能を用いた場合、簡単にＳＱＬ等の実行情報を取得することができ、データベースの性能についての原因を調査する場合に有効な情報を得ることができるというメリットがあった。しかしながら、一般的には、トレース機能を実行させる場合にはデータベースを常に監視する必要があり、また、トレース機能により取得された情報のレポーティングをデータベースサーバ内で実行しているため、データベースに高い負荷をかけてしまう。その結果、データベースサーバに対するレスポンスの低下等が生じてしまうため、本番環境のシステムで使用中のデータベースに対してトレース機能を実行させることが難しいという問題があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、データベースで処理されているＳＱＬ等の実行情報を低負荷で取得することが可能な情報処理装置、ＳＱＬ実行情報取得方法、及びＳＱＬ実行情報取得プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明にかかる情報処理装置は、ネットワークを介してデータベースサーバに接続され、前記データベースサーバにおいて実行されるＳＱＬ（Structured  Query  Language）の実行情報を取得するクライアントコンピュータであって、前記データベースサーバに格納され、監視対象となるデータベースのスキーマ情報を取得するスキーマ情報取得部と、前記データベースサーバが有するキャッシュに記憶された、前記スキーマ情報に示されたテーブルに対して行われたＳＱＬの実行情報を取得するＳＱＬ実行情報取得部と、前記スキーマ情報取得部と前記ＳＱＬ実行情報取得部とを所定のタイミングで定期的に実行させる制御部と、を備えることを特徴とする。
【０００７】
また、本発明は、上記情報処理装置で行われるＳＱＬ実行情報取得方法、及びＳＱＬ実行情報取得プログラムである。
【発明の効果】
【０００８】
本発明によれば、データベースで処理されているＳＱＬ等の実行情報を低負荷で取得することが可能な情報処理装置、ＳＱＬ実行情報取得方法、及びＳＱＬ実行情報取得プログラムを提供することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態におけるデータベース情報取得システムの構成を示す図である。
【図２】ＤＢスキーマ情報メモリが格納する情報の構成例を示す図である。
【図３】ＳＱＬ実行情報メモリが格納する情報の構成例を示す図である。
【図４】データベース情報取得システムで行われるデータベース監視処理の処理手順を示すフローチャートである。
【図５】監視設定情報として格納される情報の構成例を示す図である。
【図６】スキーマ情報取得処理の処理手順を示すフローチャートである。
【図７】ＳＱＬ実行情報取得処理の処理手順を示すフローチャートである。
【図８】結果レポート出力処理の処理手順を示すフローチャートである。
【図９】レポート生成部２２３が出力するファイル（結果レポート）のレイアウト構造の例を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかる情報処理装置、ＳＱＬ実行情報取得方法、及びＳＱＬ実行情報取得プログラムの実施の形態を詳細に説明する。
【００１１】
図１は、本発明の実施の形態におけるデータベース情報取得システム１０００の構成を示す図である。図１に示すように、データベース情報取得システム１０００は、データベース（ＤＢ）サーバ１００と、クライアントコンピュータ２００とを有し、これらが互いにネットワーク３００により接続されている。なお、ネットワーク３００は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等の一般的なセットワークである。
【００１２】
後述するように、データベース情報取得システム１０００では、クライアントコンピュータ２００は、ネットワーク３００を介してデータベースサーバ１００が有する監視対象となっているデータベース１１０で実行されたＳＱＬの実行情報を所定のタイミング（例えば、週１日夜間等のタイミング）で定期的に取得する。データベース情報取得システム１０００において実行される各種の処理についてはフローチャートを用いて後述するが、大きく分けて、監視対象となっているデータベースのスキーマ情報を取得する処理（スキーマ情報取得処理）と、監視対象となっているデータベースに対して実行されたＳＱＬの実行情報を取得する処理（ＳＱＬ実行情報取得処理）と、データベースの監視結果を出力する処理（結果レポート出力処理）とから構成されている。
【００１３】
データベースサーバ１００は、監視対象となるデータベース１００を記憶するサーバである。データベースサーバ１００は、例えば、ＲＤＢＭＳ（Relational  DataBase  Management  System）によって管理されたＲＤＢ形式のデータベース１１０を記憶する。なお、特に図示していないが、データベースサーバ１００は、データベース１１０を記憶するためのＨＤＤ（Hard  Disk  Drive）等から構成される記憶装置や、ＲＤＢＭＳを実行するためのＣＰＵ（Central  Processing  Unit）等から構成される制御部を有している。
【００１４】
クライアントコンピュータ２００は、記憶部２１０と、制御部２２０と、を有して構成されている。
【００１５】
記憶部２１０は、ＤＢスキーマ情報メモリ２１１と、ＳＱＬ実行情報メモリ２１２と、を有している。ＤＢスキーマ情報メモリ２１１は、後述するスキーマ情報取得部２２１が取得したデータベースのスキーマ情報を記憶するものである。
【００１６】
図２は、ＤＢスキーマ情報メモリ２１１が格納する情報の構成例を示す図である。図２に示すように、ＤＢスキーマ情報メモリ２１１は、データベースに記憶されているテーブル名と、そのテーブル名のテーブルに格納されているデータの件数であるテーブルデータ件数と、データベースに定義されているそのテーブルのインデックスを示すインデックス名とが対応付けて記憶されている。これらの各情報は、後述するスキーマ情報取得処理が実行されることによって格納される。続いて、図１に戻って、ＳＱＬ実行情報メモリ２１１について説明する。
【００１７】
図３は、ＳＱＬ実行情報メモリ２１１が格納する情報の構成例を示す図である。図３に示すように、ＳＱＬ実行情報メモリ２１１は、実行されるＳＱＬを識別するためのＳＱＬ識別子と、そのＳＱＬの全文であるＳＱＬテキストと、そのＳＱＬの実行にかかるコストを示すＳＱＬコストと、そのＳＱＬが最後に実行された時刻を示す最終実行時刻と、そのＳＱＬが過去に実行された回数を示す実行回数と、そのＳＱＬ実行時に検索された行数の平均を示す平均検索行数と、そのＳＱＬの解析・実行・フェッチにかかる平均処理時間を示す平均処理時間と、そのＳＱＬ実行時にソートが行われた回数を示すソート回数と、そのＳＱＬ実行時にフェッチが行われた回数を示すフェッチ回数と、そのＳＱＬ実行時にディスクからデータを読込んだ平均回数を示す平均ディスク読み込数と、そのＳＱＬ実行時にバッファからデータを読込んだ平均回数を示す平均バッファ読み込数と、そのＳＱＬを発行した発行元のクライアントコンピュータ２００のホスト名と、そのクライアントコンピュータ１００の端末名と、そのＳＱＬを発行した発行元のプログラム名と、そのＳＱＬが実行される際のアクセスパスと、が対応付けて記憶されている。
【００１８】
さらに、上述したアクセスパスには、そのＳＱＬがデータベースオブジェクトに対して行う操作内容（コマンド等）を示すオペレーションと、その操作対象となるデータベースオブジェクトの名称を示すオブジェクト名と、そのデータベースオブジェクトのタイプ（テーブル、インデックス等）を示すオブジェクトタイプと、そのオペレーションにかかるコストと、そのオペレーションにより絞り込まれるデータ件数と、そのオペレーションにより絞り込まれるデータのバイト数とが含まれ、これらが対応付けて記憶されている。続いて、図１に戻り、制御部２２０について説明する。
【００１９】
制御部２２０は、ＣＰＵ等の演算装置から構成され、後述する各種の処理を実行する。図１に示すように、制御部２２０は、データベースサーバ１００に記憶されているデータベース１１０についてのスキーマ情報を取得するスキーマ情報取得部２２１と、そのデータベース１１０に対するＳＱＬの実行情報を取得するＳＱＬ実行情報取得部２２２と、取得されたＳＱＬ実行情報についての結果レポートを出力するレポート生成部２２３と、を有して構成されている。これらの各部が行う具体的な処理については、フローチャートを用いて後述する。
【００２０】
なお、クライアントコンピュータ２００が有する上述した各部は、スキーマ情報取得部２２１、ＳＱＬ実行情報取得部２２２、レポート生成部２２３、および制御部２２０の各機能を実現するためのソフトウェアプログラムにより実行される。これらのソフトウェアプログラムは、例えば、上述した各部を含むモジュール構成となっており、実際のハードウェアとしては、ＣＰＵ等の制御部がＨＤＤ等の記録装置からこれらのソフトウェアプログラムを読み出して実行することにより、上記各部が主記憶装置上にロードされ、スキーマ情報取得部２２１、ＳＱＬ実行情報取得部２２２、レポート生成部２２３、および制御部２２０の各部が主記憶装置上に生成されるようになっている。
【００２１】
また、上述したソフトウェアプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disc）等のコンピュータで読み取り可能な記録媒体に記録されて提供することも可能である。さらに、これらのソフトウェアプログラムを、ネットワーク経由でダウンロードさせて提供または配布するように構成してもよい。
【００２２】
続いて、データベース情報取得システム１０００で行われる各種処理について説明する。図４は、データベース情報取得システム１０００で行われるデータベース監視処理の処理手順を示すフローチャートである。
【００２３】
図４に示すように、まず、制御部２００は、データベース１００を監視するための監視設定情報を読み込む（ステップＳ４０１）。この監視設定情報は、例えば、クライアントコンピュータ２００に記憶された不図示のメモリに記憶されている。
【００２４】
図５は、上述した監視設定情報として格納される情報の構成例を示す図である。図５に示すように、監視設定情報には、監視対象となるＲＤＢＭＳのタイプを示すＲＤＢＭＳタイプと、そのＲＤＢＭＳのネットワークパスを示すサーバパスと、そのＲＤＢＭＳにログインするユーザの名称を示すＲＤＢＭＳ接続ユーザ名と、そのＲＤＢＭＳにログインするユーザのパスワードを示すＲＤＢＭＳ接続ユーザパスワードと、そのＲＤＢＭＳへの監視を終了する時刻を示す監視終了時刻と、そのＲＤＢＭＳに対して監視を行う時間の間隔を示す監視間隔と、が対応付けて記憶されている。
【００２５】
そして、制御部２００は、これらの情報を読み込み、監視対象となるデータベース１１０への接続情報を取得し（ステップＳ４０２）、データベースへの接続をオープンする（ステップＳ４０３）。
【００２６】
スキーマ情報取得部２２１は、監視対象となるデータベースに接続されると、まず初めに、図６に示すスキーマ情報取得処理を行う（ステップＳ４０４）。
【００２７】
図６は、上述したスキーマ情報取得処理の処理手順を示すフローチャートである。図６に示すように、スキーマ情報取得部２２１は、データベース１００のスキーマ情報にアクセスし（ステップＳ６０１）、そのスキーマに定義されているテーブルをカウントするためのカウンタ（不図示）に１（初期値）をセットする（ステップＳ６０２）。
【００２８】
そして、スキーマ情報取得部２２１は、上述したカウンタの値が、そのスキーマに含まれるテーブルの数以下であるか否かを判定し（ステップＳ６０３）、そのスキーマに含まれるテーブルの数以下ではない（すなわち、全てのテーブルについて処理が終了した）と判定した場合（ステップＳ６０３；Ｎｏ）、図６に示したスキーマ情報取得処理を終了させる。
【００２９】
一方、スキーマ情報取得部２２１は、そのスキーマに含まれるテーブルの数以下であると判定した場合（ステップＳ６０３；Ｙｅｓ）、そのテーブルのテーブル名、テーブルデータ件数を含むテーブル情報を取得し（ステップＳ６０４）、さらに、そのテーブルに定義されているインデックス情報を取得し（ステップＳ６０５）、取得したこれらの情報をＤＢスキーマ情報メモリ２１０に格納する（ステップＳ６０６）。その後、スキーマ情報取得部２２１は、上述したカウンタをカウントアップし（ステップＳ６０７）、ステップＳ６０３に戻って、以降の処理を繰り返し行う。続いて、図４に戻って、ステップＳ４０４以降の処理について説明する。
【００３０】
スキーマ情報取得部２２１がスキーマ情報を取得すると（ステップＳ４０４）、制御部２２０は、監視設定情報を参照して監視終了時刻を取得し（ステップＳ４０５）、不図示のタイマが計時する現在時刻と、取得した監視終了時刻とを比較し、現在時刻が監視終了時刻を越えているか否かを判定する（ステップＳ４０６）。
【００３１】
制御部２２０は、現在時刻が監視終了時刻を越えていると判定した場合（ステップＳ４０６；Ｙｅｓ）、ステップＳ４１１に進み、監視対象となっているデータベースへの接続をクローズし（ステップＳ４１１）、図４に示したデータベース監視処理を終了させる。
【００３２】
一方、制御部２２０が現在時刻が監視終了時刻を越えていないと判定した場合（ステップＳ４０６；Ｎｏ）、ＳＱＬ実行情報取得部２２２は、ＳＱＬ実行情報取得処理を行う（ステップＳ４０７）。
【００３３】
図７は、上述したＳＱＬ実行情報取得処理の処理手順を示すフローチャートである。図７に示すように、ＳＱＬ実行情報取得部２２２は、データベースサーバ１００のメモリ上にキャッシュされているＳＱＬ実行情報にアクセスし（ステップＳ７０１）、キャッシュされているＳＱＬの数をカウントするための不図示のカウンタに１（初期値）をセットする（ステップＳ７０２）。
【００３４】
その後、ＳＱＬ実行情報取得部２２２は、上述したカウンタの値が、キャッシュされているＳＱＬの数以下であるか否かを判定し（ステップＳ７０３）、キャッシュされているＳＱＬの数以下ではない（すなわち、キャッシュされている全てのＳＱＬについて処理が終了した）と判定した場合（ステップＳ７０３；Ｎｏ）、図７に示したＳＱＬ実行情報取得処理を終了させる。
【００３５】
一方、ＳＱＬ実行情報取得部２２２は、キャッシュされているＳＱＬの数以下であると判定した場合（ステップＳ７０３；Ｙｅｓ）、キャッシュされているＳＱＬ実行情報からそのＳＱＬの最終実行時刻を取得する（ステップＳ７０４）。そして、ＳＱＬ実行情報取得部２２２は、取得したＳＱＬの最終実行時刻と、前回の監視終了時刻（図５に示した監視終了時刻）とを比較し、取得したＳＱＬの最終実行時刻が前回の監視終了時刻以降であるか否かを判定する（ステップＳ７０５）。
【００３６】
そして、ＳＱＬ実行情報取得部２２２は、取得したＳＱＬの最終実行時刻が前回の監視終了時刻以降ではないと判定した場合（ステップＳ７０５；Ｎｏ）、新たに取得すべき情報はないと判断して上述したカウンタの値をカウントアップし（ステップＳ７０６）、ステップＳ７０３に戻って以降の処理を繰り返し行う。
【００３７】
一方、ＳＱＬ実行情報取得部２２２は、取得したＳＱＬの最終実行時刻が前回の監視終了時刻以降であると判定した場合（ステップＳ７０５；Ｙｅｓ）、新たに取得すべき情報があると判断し、そのＳＱＬについてのＳＱＬ実行情報を取得するとともに（ステップＳ７０７）、ＳＱＬ実行情報に記載されているＳＱＬ識別子を取得する（ステップＳ７０８）。
【００３８】
ＳＱＬ実行情報取得部２２２は、取得したＳＱＬ実行情報をＳＱＬ実行情報メモリ２１２に格納する際に、過去に取得したＳＱＬ識別子と同じＳＱＬ識別子により識別されるデータが存在するか否かを判定する（ステップＳ７０９）。
【００３９】
そして、ＳＱＬ実行情報取得部２２２は、過去に取得したＳＱＬ識別子と同じＳＱＬ識別子により識別されるデータが存在すると判定した場合（ステップＳ７０９；Ｙｅｓ）、ＳＱＬ実行情報メモリ２１２内に記憶されている情報を、取得したＳＱＬ実行情報に上書き更新する（ステップＳ７１０）。
【００４０】
一方、ＳＱＬ実行情報取得部２２２は、過去に取得したＳＱＬ識別子と同じＳＱＬ識別子により識別されるデータが存在しないと判定した場合（ステップＳ７０９；Ｎｏ）、ＳＱＬ実行情報メモリ２１２に、取得したＳＱＬ実行情報を追加更新する（ステップＳ７１１）。続いて、図４に戻って、ステップＳ４０７以降の処理について説明する。
【００４１】
ＳＱＬ実行情報取得処理(ステップＳ４０７)が終了すると、レポート生成部２２３は、データベース１１０の監視結果を示す結果レポートを出力する結果レポート出力処理を行う（ステップＳ４０８）。
【００４２】
図８は、上述した結果レポート出力処理の処理手順を示すフローチャートである。図８に示すように、レポート生成部２２３は、まず、出力先となるファイルをオープンし、ＳＱＬ実行情報メモリ２１２に格納されているＳＱＬ実行情報をＳＱＬ単位に整形し、オープンしたファイルに出力する（ステップＳ８０１）。
【００４３】
レポート生成部２２３は、ＳＱＬ実行情報メモリ２１２に記憶されているＳＱＬ単位のＳＱＬ実行情報をカウントするための不図示のカウンタに１（初期値）をセットする（ステップＳ８０２）。
【００４４】
その後、レポート生成部２２３は、上述したカウンタの値が、ＳＱＬ実行情報メモリ２１２に記憶されているＳＱＬ単位のＳＱＬ実行情報の数以下であるか否かを判定し（ステップＳ８０３）、ＳＱＬ実行情報メモリ２１２に記憶されているＳＱＬ単位のＳＱＬ実行情報の数以下でないと判定した場合（ステップＳ８０３；Ｎｏ）、ＳＱＬ実行情報メモリ２１２に記憶されている全てのＳＱＬについての処理が終了したと判断し、ステップＳ８１０に進み、ステップＳ８０１でオープンしたファイルをクローズし（ステップＳ８１０）、図８に示す結果レポート出力処理を終了させる。
【００４５】
一方、レポート生成部２２３は、ＳＱＬ実行情報メモリ２１２に記憶されているＳＱＬ単位のＳＱＬ実行情報の数以下であると判定した場合（ステップＳ８０３；Ｙｅｓ）、そのＳＱＬ実行情報に含まれるＳＱＬのアクセスパスを取得し、テーブルデータを取得する際に、アクセスパスにそのテーブルをフルスキャンする処理が記載されているか否かチェックし（ステップＳ８０４）、テーブルのフルスキャンを行っているか否かを判定する（ステップＳ８０５）。
【００４６】
レポート生成部２２３は、テーブルのフルスキャンを行っている処理がアクセスパスに含まれていると判定した場合（ステップＳ８０５；Ｙｅｓ）、そのテーブルのテーブル名をキーとしてＤＢスキーマ情報メモリ２１１を参照し、フルスキャンが行われているテーブルの情報を取得し、フルスキャンテーブル情報を生成する（ステップＳ８０６）。一方、レポート生成部２２３は、テーブルのフルスキャンを行っている処理がアクセスパスに含まれていないと判定した場合（ステップＳ８０５；Ｎｏ）、何もせずにステップＳ８０７に進む。
【００４７】
そして、レポート生成部２２３は、ＳＱＬ実行情報メモリ２１２とＤＢスキーマ情報メモリ２１１に記憶されているデータから、そのテーブルに対するＳＱＬ実行時のインデックス使用情報を生成し（ステップＳ８０７）、出力先となるファイルに、ＳＱＬ実行情報、フルスキャンテーブル情報、インデックス使用情報を出力する（ステップＳ８０８）。
【００４８】
図９は、レポート生成部２２３が出力するファイル（すなわち、結果レポート）のレイアウト構造の例を示す図である。図９に示すように、レポート生成部２２３が出力するファイルは、図３に示したＳＱＬ実行情報メモリ２１１が格納する情報に加え、ステップＳ８０５において判定されたＳＱＬ実行時のテーブルデータのフルスキャンのあり／なしを示すフルスキャン有無（Ｎｏ３）と、ＳＱＬ実行時におけるインデックスの使用状況を示すインデックス使用情報（Ｎｏ２３〜２６）と、ＳＱＬ実行時にフルスキャンされているテーブルの情報を示すフルスキャンテーブル情報（Ｎｏ２７〜３０）とが追加されたものとなっている。
【００４９】
図９に示すように、インデックス使用情報には、さらに、そのインデックスが使用されているテーブルの名称と、そのインデックスの名称と、そのテーブルに付与されているインデックスの使用有無とが対応付けて記憶されている。また、フルスキャンテーブル情報には、さらに、フルスキャンされたテーブルの名称と、そのテーブルに格納されているデータの件数を示す総データ件数と、フルスキャン実行後に絞り込まれたデータの件数を示す絞り込みデータ件数とが対応付けて記憶されている。
【００５０】
そして、レポート生成部２２３は、出力先となるファイルに上述したデータを出力した後、不図示のカウンタをカウントアップし（ステップＳ８０９）、ステップ８０３に戻って、ＳＱＬ実行情報メモリ２１２に格納されている全てのＳＱＬについての情報を出力するまでステップＳ８０４〜Ｓ８０９までの処理を繰り返す。続いて、図４に戻って、ステップＳ４０８以降の処理について説明する。
【００５１】
ステップＳ４０８においてレポート生成部２２３が結果レポートを出力すると、制御部２２０は、監視設定情報から監視間隔を取得し（ステップＳ４０９）、監視間隔で指定された時間の間待機し（ステップＳ４１０）、その後ステップＳ４０６に戻って、現在時刻が監視終了時刻を越えるまで、ステップＳ４０７〜Ｓ４１０までの処理を繰り返す。そして、利用者は、本処理終了後に出力された結果レポートを参照し、データベースのＳＱＬ性能問題の原因分析を行うこととなる。
【００５２】
このように、本実施の形態では、従来のトレース機能のように、データベースサーバ内にあるＤＢを常に監視し続けるという方法ではなく、定期的にデータベースサーバ内にあるＤＢへの監視を実行し、ＳＱＬ実行情報を取得する。ＤＢの機能として、一度ＤＢ内で実行されたＳＱＬ実行情報はメモリ上にキャッシュされるという仕組みを有しているため、このメモリ上にキャッシュされたＳＱＬ実行情報をクライアントコンピュータが定期的に取得するという仕組みになっている。さらに、取得した情報のレポーティングもクライアントコンピュータ側で行うため、データベースサーバへの負荷をなくすことができる。例えば、データベースサーバに負荷を与えることなく、ＳＱＬ実行情報を取得できるため、稼働中のデータベースでＳＱＬ性能問題が発生し、その原因等を調査する必要が生じた場合であっても容易にその原因調査を行うことができる。
【符号の説明】
【００５３】
１０００    データベース情報取得システム
１００      データベース（ＤＢ）サーバ
２００      クライアントコンピュータ
２１０      記憶部
２１１      ＤＢスキーマ情報メモリ
２１２      ＳＱＬ実行情報メモリ
２２０      制御部
２２１      スキーマ情報取得部
２２２      ＳＱＬ実行情報取得部
２２３      レポート生成部
３００      ネットワーク。
【図１】
2013120469.tif 000003
【図２】
2013120469.tif 000004
【図３】
2013120469.tif 000005
【図４】
2013120469.tif 000006
【図５】
2013120469.tif 000007
【図６】
2013120469.tif 000008
【図７】
2013120469.tif 000009
【図８】
2013120469.tif 000010
【図９】
2013120469.tif 000011