(57)【特許請求の範囲】
【請求項１】
コンピュータを、
データベースにデータを格納するためのプログラムを解析して監視条件を抽出する抽出手段、
前記監視条件とその監視条件が成立したときに実行すべきアクションを定義するアクション情報とを対応づけることにより監視ルールを作成する監視ルール設定手段、
前記監視ルールに従って前記データベースに格納されているデータを監視し、前記監視条件が成立したときに前記アクション情報に従って対応するアクションを実行するアクション実行手段、として機能させるものであり、
前記抽出手段は、前記プログラムにおいて、前記データベースの第１のフィールドに格納すべきデータのサイズを定義するサイズ定義情報と、前記第１のフィールドに係わる参照変数のサイズを記述する参照変数サイズ情報とを比較し、前記サイズ定義情報と同一サイズの参照変数サイズ情報が検出されたときに、前記第１のフィールドに格納されているデータのサイズが前記サイズ定義情報により定義されているサイズの上限値であることを前記監視条件として出力する
ことを特徴とするデータベース監視プログラム。
【請求項２】
前記コンピュータをさらに、前記第１のフィールドに格納されているデータの末尾の情報に基づいて、住所を表すデータとして不適切と推定されるデータを検出する検出手段として機能させ、
前記アクション実行手段は、前記検出手段により不適切と推定されるデータが検出されたときに、警告を出力する
ことを特徴とする請求項１に記載のデータベース監視プログラム。
【請求項３】
データベースにデータを格納するためのプログラムを解析して監視条件を抽出する抽出手段と、
前記監視条件とその監視条件が成立したときに実行すべきアクションを定義するアクション情報とを対応づけることにより監視ルールを作成する監視ルール設定手段と、
前記監視ルールに従って前記データベースに格納されているデータを監視し、前記監視条件が成立したときに前記アクション情報に従って対応するアクションを実行するアクション実行手段と、を備え、
前記抽出手段は、前記プログラムにおいて、前記データベースの第１のフィールドに格納すべきデータのサイズを定義するサイズ定義情報と、前記第１のフィールドに係わる参照変数のサイズを記述する参照変数サイズ情報とを比較し、前記サイズ定義情報と同一サイズの参照変数サイズ情報が検出されたときに、前記第１のフィールドに格納されているデータのサイズが前記サイズ定義情報により定義されているサイズの上限値であることを前記監視条件として出力する
ことを特徴とするデータベース監視装置。
【請求項４】
コンピュータによるデータベース監視方法であって、
前記コンピュータが、
データベースにデータを格納するためのプログラムを解析して、前記データベースの第１のフィールドに格納すべきデータのサイズを定義するサイズ定義情報と、前記第１のフィールドに係わる参照変数のサイズを記述する参照変数サイズ情報とを比較し、前記サイズ定義情報と同一サイズの参照変数サイズ情報が検出されたときに、前記第１のフィールドに格納されているデータのサイズが前記サイズ定義情報により定義されているサイズの上限値であることを監視条件として出力し、
前記監視条件とその監視条件が成立したときに実行すべきアクションを定義するアクション情報とを対応づけることにより監視ルールを作成し、
前記監視ルールに従って前記データベースに格納されているデータを監視し、前記監視条件が成立したときに前記アクション情報に従って対応するアクションを実行する
ことを特徴とするデータベース監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに格納されているデータが適切であるか監視するための装置、方法、およびプログラムに係わる。
【背景技術】
【０００２】
各種データを格納して管理するデータベースシステムは、様々な分野において広く普及している。近年では、データベースに格納されるデータ量も膨大であり、その保守または管理に要する労力も大きくなってきている。このため、データベースを監視する技術が実用化されている。
【０００３】
従来技術におけるデータベースの監視方法としては、例えば、以下のものが知られている。
（１）ファイルの使用率を監視する。
（２）データベースの使用状況をモニタし、容量不足が発生する時期を予測する。
（３）ファイル管理の一元化およびディスク等のコンピュータ資源の効率的な運用の推進が可能なようにファイルの情報を管理する。
（４）データベースの再編成が必要な時期の判断と予測を行い、適確な時期に再編成命令を生成して自動的に再編成を行う。
【０００４】
また、業務システムに入力されたデータをチェックする方法として、下記のものが知られている。すなわち、データ格納サーバは、データチェックのルールを保持するデータチェックテーブル、その例外や詳細を保持する備考テーブルを備える。業務クライアント端末の業務アプリケーションは、起動時に上記テーブルをロードする初期化処理手段、一連のデータを入力するデータ入力手段、対応するデータチェックテーブルおよび備考テーブルを用いて入力されたデータについてその資料区分や有効期間の妥当性をチェックするデータチェック処理手段を備える。データチェック処理手段は、チェックテーブルの検査内容でチェック関数を選択し、パラメータを設定し、チェックテーブルの調査項目を検査する。
【特許文献１】特開２００５−１８４７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来技術においては、一般に、データベースの容量不足等のような大雑把な監視をしていた。また、上述のように、いくつかの調査項目について検査を行う方法も提案されているが、それらの調査項目はデータベースを監視するオペレータにより決定されるものであり、不適切なデータ入力を十分に監視できなかった。
【０００６】
したがって、データベースに格納されているデータが適切であるか否かを、精度よく監視する技術が望まれている。
本発明は、特に他社が開発した業務アプリケーションシステムのように、システムの仕様を詳細に知る術のないような場合であっても、そのシステムの運用を監視する必要があるようなケースを想定している。このような場合には、システムを構成するプログラムの中身を解析することができないため、各プログラムの出力データを監視することで異常データの発生を検知する必要があるためである。
【課題を解決するための手段】
【０００７】
一態様のデータベース監視プログラムは、コンピュータを、データベースにデータを格納するためのプログラムを解析して監視条件を抽出する抽出手段、前記監視条件とその監視条件が成立したときに実行すべきアクションを定義するアクション情報とを対応づけることにより監視ルールを作成する監視ルール設定手段、前記監視ルールに従って前記データベースに格納されているデータを監視し、前記監視条件が成立したときに前記アクション情報に従って対応するアクションを実行するアクション実行手段、として機能させる。前記抽出手段は、前記プログラムにおいて、前記データベースの第１のフィールドに格納すべきデータのサイズを定義するサイズ定義情報と、前記第１のフィールドに係わる参照変数のサイズを記述する参照変数サイズ情報とを比較し、前記サイズ定義情報と同一サイズの参照変数サイズ情報が検出されたときに、前記第１のフィールドに格納されているデータのサイズが前記サイズ定義情報により定義されているサイズの上限値であることを前記監視条件として出力する。
【０００８】
また、前記コンピュータをさらに、前記第１のフィールドに格納されているデータの末尾の情報に基づいて、住所を表すデータとして不適切と推定されるデータを検出する検出手段として機能させるようにしてもよい。この場合、前記アクション実行手段は、前記検出手段により不適切と推定されるデータが検出されたときに、警告を出力する。
【発明の効果】
【０００９】
一態様の監視プログラム、監視装置、監視方法によれば、データベースに格納されているデータが適切であるか否かを精度よく監視できる。
【発明を実施するための最良の形態】
【００１０】
図１は、実施形態のデータベース監視が行われるシステムの構成を示す図である。図１において、情報システム１は、監視対象のデータベースを含む情報システムである。情報システム１は、コンピュータおよび記憶装置を含んで構成される。情報システム１のコンピュータには、データベースプログラムおよびＤＢスキーマが与えられる。なお、以下の説明においては、データベースプログラム（または、データベースプログラムおよびＤＢスキーマ）を、単に「プログラム２」と呼ぶことがある。また、記憶装置には、データベースプログラムおよびＤＢスキーマに従ってデータベース（図１では、ＤＢ１〜ＤＢ３）３が構築される。データベース３には、ユーザにより入力されるデータ、或いは情報システム１が読み込んだデータが、プログラム２に従って格納される。
【００１１】
データベース監視装置１１は、コンピュータにより実現され、データベース監視ルール１２を保持すると共に、データベース監視実行部１３、およびアクション実行部１４を備える。データベース監視ルール１２は、後で詳しく説明するが、プログラム２から抽出される監視条件を用いて作成される。監視ルールは、監視条件とその監視条件が成立したときに実行すべきアクションとを対応付けることにより作成される。データベース監視実行部１３は、データベース３から取得したデータに対して、データベース監視ルール１２として設定されている条件が成立するかを監視する。そして、アクション実行部１４は、監視条件が成立したときに、データベース監視ルール１２で指定されているアクションを実行する。
【００１２】
図２は、実施形態のデータベース監視方法の概要を示すフローチャートである。ステップＳ１では、監視対象の情報システム１が実行するプログラム２を解析する。ステップＳ２では、ステップＳ１における解析結果に基づいて、データベース監視条件を抽出する。ステップＳ３では、ステップＳ２で抽出したデータベース監視条件とその監視条件に対応する監視アクションを関連付けることにより、データベース監視ルール１２を設定する。ステップＳ４では、データベース監視ルール１２に基づいて、データベース３に格納されているデータを監視する。ステップＳ５では、データベース監視ルール１２に規定されて
いる監視条件が成立したときに、その監視条件に対応するアクションを実行する。
【００１３】
図３は、実施形態のデータベース監視装置の構成を示す図である。実施形態のデータベース監視装置１１は、プログラム入力部２１、プログラム解析部２２、データベース監視条件抽出部２３、データベース監視アクション設定部２４、データベース監視ルール設定部２５、ＤＢ格納データ取得部２６、データベース監視実行部２７、およびアクション実行部２８を含んで構成される。なお、データベース監視実行部２７およびアクション実行部２８は、図１においては、データベース監視実行部１３およびアクション実行部１４に相当する。
【００１４】
プログラム入力部２１は、情報システム１の動作を記述するプログラム資産（図１においては、データベースプログラムおよびＤＢスキーマなどのプログラム２）を、データベース監視装置１１に入力する。入力すべきプログラム資産は、例えば、そのプログラム資産が格納されているファイルシステム上のパスにより指定される。プログラム資産のファイルパスの指定は、例えば、ＸＭＬファイルに記述する方法、ダイアログウィンドウ上で指定する方法により実現される。
【００１５】
プログラム解析部２２は、プログラム入力部２１により入力されたプログラム資産を解析する。ここで、図４を参照しながら、プログラム解析部２２の処理を説明する。ステップＳ１１では、入力されたプログラムを順に解析し、構文木を作成する。ステップＳ１２では、作成した構造木を用いて、変数の参照更新関係からデータフローを生成する。ステップＳ１３では、データベースフィールドを更新する変数のデータフローを分析し、関連する変数や条件式などを収集し、フィールドに対するプログラム処理内容を集計する。プログラムを解析する方法については、後で、具体例を用いて説明する。
【００１６】
データベース監視条件抽出部２３は、設定された監視条件分析ルール２９に基づいて、プログラム解析部２２による解析結果を分析することにより、データベース３の監視条件を抽出する。ここで、図５を参照しながら、データベース監視条件抽出部２３の処理を説明する。ステップＳ２１では、監視条件分析ルール２９が設定される。監視条件分析ルール２９は、特に限定されるものではないが、例えば、データベースを監視するオペレータにより作成される。ステップＳ２２では、プログラム解析部２２の解析結果を取得する。ステップＳ２３では、プログラム解析部２２の解析結果において、全てのフィールドについて監視条件分析ルール２９を適用し、監視対象フィールドおよび監視条件を抽出する。ステップＳ２４では、監視対象フィールドおよび監視条件をデータベース監視条件として出力する。
【００１７】
データベース監視アクション設定部２４は、データベース監視条件抽出部２３により得られるデータベース監視条件が成立した場合に実行すべきアクションを設定する。実行すべきアクションは、例えば、以下の通りである。
（１）データベース監視条件が成立したデータを識別表示する（及び、警告を出力する）（２）データベース監視条件が成立したデータを記録する
なお、上記（１）（２）において、データベース監視条件が成立したデータベース、フィールド、データ、データベース監視ルールを表示または記録するようにしてもよい。さらに、プログラムから抽出された監視条件とは異なる条件が満たされたときに、対応するアクションを実行するようにしてもよい。
【００１８】
データベース監視ルール設定部２５は、データベース監視条件およびアクション情報から構成されるデータベース監視ルールを作成する。データベース監視条件は、データベース監視条件抽出部２３により設定される。また、アクション情報は、データベース監視アクション設定部２４により設定される。そして、データベース監視条件および対応するア
クション情報を関連付けることにより、データベース監視ルールが作成される。なお、複数のデータベース監視ルールが存在する場合には、データベース監視ルール設定部２５は、それらの間の優先度の設定、および各ルールについて採用／不採用の設定を行う。
【００１９】
ＤＢ格納データ取得部２６は、データベース３に格納されているデータを取得する。具体的には、ＤＢ格納データ取得部２６は、データベース監視ルール設定部２５によって設定されたデータベース監視ルールに基づいて、指定されたデータベースの指定されたフィールドのデータを取得する。
【００２０】
データベース監視実行部２７は、設定されたデータベース監視ルールに基づいて、データベース３に格納されたデータを監視する。具体的には、データベース監視実行部２７は、ＤＢデータ取得部２６によって取得されたＤＢデータについて、データベース監視ルールの監視条件でチェックを行う。
【００２１】
図６は、データベース監視実行部２７の処理を示すフローチャートである。ここでは、定期的に（例えば、２４時間毎に）、データベース３に格納されているデータを監視するものとする。また、複数のデータベース監視ルールが設定されており、各ルールに対してルール番号が付与されているものとする。
【００２２】
ステップＳ３１では、ルール番号を指し示すカウンタをリセットする。ステップＳ３２では、データベース監視実行部２７によるデータベースの監視を継続するか否かをチェックする。監視を継続しない場合は処理を終了し、監視を継続する場合はステップＳ３３に進む。ステップＳ３３では、上記カウンタをインクリメントし、次のデータベース監視ルールを取得する。ステップＳ３４では、取得したデータベース監視ルールの監視条件に記述された監視対象フィールドのＤＢデータを取得する。
【００２３】
ステップＳ３５では、取得したＤＢデータが監視条件を満たしているか否かをチェックする。監視条件を満たさない場合は、ステップＳ３３に戻って次のデータベース監視ルールを取得する。一方、監視条件が成立した場合は、ステップＳ３６において、アクション実行部２８に対してアクション実行指示を与える。これによりアクション実行部２８は、データベース監視ルールとして設定されているアクションを実行する。ステップＳ３７では、全てのデータベース監視ルールを実行したかチェックする。未実行のデータベース監視ルールが存在する場合は、ステップＳ３３に戻る。全てのデータベース監視ルールを処理した場合は、ステップＳ３８に進む。ステップＳ３８は、予め決められた所定時間（例えば、ステップＳ３１の実行から２４時間）が経過したときにステップＳ３１の処理を起動するために設けられている。なお、図６に示すフローチャートの処理は、データベース３が更新されたことをトリガとして実行するようにしてもよい。
【００２４】
アクション実行部２８は、データベース監視ルールとして記述されている監視条件が成立したときに、対応するアクションを実行する。具体的には、監視条件を満たすデータが検出されたときに、例えば、警告を出力する。
【００２５】
このように、上記構成のデータベース監視装置１１においては、プログラム解析部２２によってプログラム２に記述されたデータベース３に関する条件が解析される。また、データベース監視条件抽出部２３によって、設定された監視条件分析ルールに基づいてプログラム解析結果を分析してデータベース３の監視条件が抽出される。ここで、データベース監視条件は、プログラム２の中に記述されている業務内容や実装方法に起因する条件である。そして、データベース監視ルール設定部２５によって、抽出されたデータベース監視条件と対応する監視アクションから構成されるデータベース監視ルールが設定される。
【００２６】
ＤＢ格納データ取得部２６によってデータベース３に格納されたデータを取得される。また、データベース監視実行部２７によって設定されたデータベース監視ルールに基づいて、データベース３に格納されたデータが監視される。そして、データベース監視ルールとして設定されている監視条件が成立した場合に、アクション実行部２８によって、データベース監視ルールに記述されているアクションが実行される。
【００２７】
上記構成により、監視対象データベースの特定のフィールドに格納されるデータのサイズや形式を監視したり、業務コード値の残量を監視したりするなど、プログラム２で記述された業務内容や実装方法に起因した監視条件で、データベース３に格納されるデータを監視することができる。なお、上記データベース監視装置をコンピュータで実現するためのデータベース監視プログラムは、コンピュータが読み取り可能な可搬媒体メモリ、半導体メモリ、ハードディスクなどの適当な記録媒体に格納することができる。
【００２８】
次に、データベース監視装置およびデータベース監視方法の具体的な実施例について説明する。なお、以下の実施例では、図７〜図９に示すプログラム２が情報システム１に与えられるものとする。また、図１０は、ＤＢスキーマの実施例である。ＤＢスキーマに記載されている情報からデータベース３を生成するためのスクリプト（ＳＱＬ）が作成される。
【００２９】
図７〜図９に示すプログラム２において、ライン９０〜１１０では、「銀行テーブル」内のデータのフィールドが定義されている。ここでは、「住所」「銀行コード」「事業所コード」についての型およびサイズが定義されている。ライン１４０〜１６０では、「支店テーブル」内のデータのフィールドが定義されている。ここでは、「支店名」「支店コード」「訂正区分」についての型およびサイズが定義されている。なお、プログラム２を実行してデータを入力すると、ＳＱＬにより、データベース３の対応するフィールドにそのデータが格納される。
【００３０】
ライン１８０〜２４０では、プログラム内の処理で使用される変数が定義されている。ここでは、７つの変数（変数Ａ〜Ｇ）が定義されている。ライン２８０〜３９０、４９０〜５３０には、テーブル毎に定義されている変数に、プログラム変数のデータを代入する命令文が記述されている。例えば、ライン２８０に記述されている命令文は、変数Ａとして入力されたデータを「銀行テーブル」の「住所」に代入するための処理を意味する。ライン４１０〜４５０、５５０〜５９０には、テーブル毎に定義されている変数に、定数データを代入する命令文が記述されている。例えば、ライン４１０に記述されている命令文は、「K01」を「銀行テーブル」の「事業者コード」に代入するための処理を意味する。ライン６２０〜７８０には、変数を使用した条件式が記述されている。例えば、ライン６２０には、「銀行コード」が「0001」であるか否かを判断するための条件式が記述されている。ライン９００〜９８０には、EVALUATE文が記述されている。
【００３１】
図１１は、プログラム解析部２２が図７〜図９に示すプログラムを解析したときの解析結果を示す図である。なお、プログラム解析の手順は、例えば、図４を参照しながら説明した通りである。
【００３２】
図１１において、「テーブル名」は、プログラムが処理する各データベースの名称である。「フィールド名」は、データベースのフィールド名である。「型／サイズ」は、データベースフィールドの型およびサイズである。本実施例では、「N(30)」は２バイトの日本語でサイズ３０、「9(4)」は半角数字でサイズ４、「X(3)」は半角英数字でサイズ３を意味する。「型およびサイズ」に係わる情報は、図７〜図９に示すプログラムのライン９０〜１１０、１４０〜１６０から抽出される。「参照変数の型／サイズ」は、プログラム２に記述された処理においてデータベースフィールドに値を登録する変数の型とサイズである。「参照変数の型／サイズ」は、例えば、ライン１８０〜２４０、２８０〜３９０を参照して抽出される。一例として、ライン２８０、３００において変数Ａ、Ｂがそれぞれ「住所」に代入されている。したがって、この場合、変数Ａ、Ｂが「住所」の参照変数であるので、「住所」に対応する「参照変数の型／サイズ」として、ライン１８０、１９０からそれぞれ「N(40)」「N(30)」が抽出される。
【００３３】
「代入値」は、プログラムに記述された処理においてデータベースフィールドに代入される定数（アルファベット等を含んでもよい。）である。「代入値」は、例えば、ライン１１０、１６０、４１０〜４５０、５５０〜５９０を参照して抽出される。一例として、ライン４１０、４３０において「K01」「K12」がそれぞれ「事業所コード」に代入されている。したがって、この場合、「事業所コード」に対応する「代入値」としてそれぞれ「K01」「K12」が抽出される。
【００３４】
「比較値」は、プログラムに記述された処理においてデータベースフィールドに格納される変数に関する条件である。「比較値」は、例えば、ライン６２０〜９７０から抽出される。一例として、ライン６２０において「銀行コード」の比較値として「0001」が与えられている。また、ライン６３０では、「銀行コード」の変数である変数Ｅの比較値として「0016」が与えられている。よって、この場合、「銀行コード」に対応する比較値として「0001」「0016」が抽出される。「上限値」および「下限値」は、それぞれ「比較値」を集計することにより得られるデータベースフィールドの上限値および下限値である。この実施例では、例えば、ライン８５０から得られる。
【００３５】
以下、具体的な実施例を説明する。
＜第１の実施例＞
図１２は、第１の実施例の監視処理を説明する図である。第１の実施例では、監視条件分析ルール２９として「参照変数のサイズがフィールドのサイズ以上であれば、そのフィールドを監視対象フィールドとし、判定条件は、「フィールドサイズと同じサイズのデータか？」とする。」が与えられるものとする。このルールは、例えば、データベースを監視するオペレータにより作成される。
【００３６】
データベース監視条件抽出部２３は、監視条件分析ルール２９が与えられると、プログラム解析部２２によるプログラム解析結果を参照し、監視条件を抽出する。プログラム解析結果は、図１１に示した通りであり、図１２ではその一部が記載されている。図１２に示す例では、銀行ＤＢの「住所」フィールドにおいて、「型／サイズ」として「N(30)」が設定されているのに対し、「参照変数の型／サイズ」として「N(30)」「N(40)」が設定されている。すなわち、「住所」として定義されているサイズよりも大きなサイズの参照変数が存在している。よって、この場合、銀行ＤＢの「住所」フィールドが監視対象として選択される。
【００３７】
データベース監視アクション設定部２４は、データベース監視条件抽出部２３による抽出結果を参照し、データベース監視ルールを作成する。この実施例では、以下のルールが作成される。
対象フィールド：銀行ＤＢの「住所」フィールド
監視条件：全角でサイズ３０のデータか？
アクション：監視条件を満たすデータを識別表示して警告する
【００３８】
データベース監視実行部２７は、データベース監視アクション設定部２４により作成されたデータベース監視ルールでデータベース３に格納されているデータを監視する。この実施例では、ＤＢ格納データ取得部２６が「住所」フィールドから下記の２つのデータを取得したものとする。なお、ＤＢ格納データ取得部２６は、データベース監視ルールに係わるデータのみを取得することができる。
データ１：東京都いろは市いろは町１丁目２番３号
データ２：東京都いろは市いろは町１丁目２番マンションあかさたなはま１０
この場合、データ１の文字数は３０未満である。よって、データ１に対しては警告は出力されない。一方、データ２の文字数は、３０である。したがって、データ２に対しては警告が出力される。
【００３９】
この実施例のプログラムでは、図７に示すように、「住所」に対応する変数Ａの型／サイズが「N(40)」である。このため、変数Ａとして３０字を超えるデータが入力される可能性がある。このとき、変数Ａとして３０字を超えるデータが入力されると、データベース３の「住所」には、例えば、３０字分のデータ（すなわち、一部の情報が欠落したデータ）が格納されることとなる。したがって、「住所」のデータが３０字であった場合には、一部の情報が欠落している可能性がある。そこで、第１の実施例では、このようなデータが検出され、警告が出力される。
【００４０】
このように、第１の実施例の監視方法によれば、データベースプログラムを解析することによって、格納データが不適切である可能性の高いフィールドが検出され、そのフィールドのデータについて監視が行われる。したがって、巨大なデータベースであっても、短時間で格納データの異常を検出できる。
【００４１】
＜第１の実施例の変形例＞
図１３は、第１の実施例の変形例を説明する図である。図１３に示す監視方法では、「住所」としてデータベース３に格納されているデータが、「住所」として妥当か否かを判定する機能が追加されている。この実施例では、以下の２つの判定方法を採用する。
【００４２】
（１）データベースの「住所」に格納されているデータが、予め用意されている住所ＤＢに登録されているか否かをチェックする。そして、登録されていなければ、「住所」として妥当でないと判定される。なお、住所ＤＢは、例えば、公的機関により提供されるデータベースを使用するようにしてもよい。
（２）データベースの「住所」に格納されているデータの末尾が、「住所」の末尾として妥当か否かチェックする。すなわち、格納されているデータの末尾の情報が欠落している可能性を検出する。具体的には、以下の５つの判定方法を採用する。
（２ａ）データの末尾がハイフンである。
（２ｂ）データの末尾の数字が２桁以下であり、且つ、末尾の数字の直前にハイフンがあるか又は「丁目」以外の文字列である。（例：「○×マンション１０」）
（２ｃ）データの末尾の文字がアルファベットである。（例：「○×マンションＡ」）
（２ｄ）データの末尾が小文字である。（例：「○×マンショ」）
（２ｅ）番地、マンション名に続いて３桁の数字があり、さらに「号」で終了している場合には、住所として妥当であるものとする。
【００４３】
一例を示す。ここでは、ＤＢ格納データ取得部２６が「住所」フィールドから下記の２つのデータを取得したものとする。
データ１：東京都いろは市いろは町１丁目２番マンションあかさたな１０２号
データ２：東京都いろは市いろは町１丁目２番マンションあかさたなはま１０
【００４４】
この場合、データ１、２共に、文字数は３０である。よって、図１２に示す実施例の監視方法によれば、データ１、２共に、警告が出力されることとなる。しかし、本実施例の監視方法によれば、データ１は、上記条件２ａ〜２ｄのいずれにも該当しない。したがって、データ１は「住所」として適切であると判定され、警告は出力されない。一方、データ２は、上記条件２ｂに該当するので、「住所」として不適切である可能性が高いと判定され、警告が出力される。なお、「住所」フィールドのデータの文字数が３０未満であっ
ても、上述の判定方法によって「住所として妥当でない」と判定された場合には、警告を出力するようにしてもよい。
このように、図１３に示す実施例では、住所データの妥当性を判定する機能が追加されている。よって、格納データの異常を検出する精度が向上する。
【００４５】
＜第２の実施例＞
図１４は、第２の実施例の監視処理を説明する図である。第２の実施例では、監視条件分析ルール２９として「参照変数の型がフィールドの型と異なれば、そのフィールドを監視対象フィールドとし、判定条件は、「データが参照変数の型か？」とする。」が与えられるものとする。
【００４６】
データベース監視条件抽出部２３は、監視条件分析ルール２９が与えられると、プログラム解析部２２によるプログラム解析結果を参照し、監視条件を抽出する。図１４に示す例では、「銀行コード」フィールドにおいて、「型／サイズ」として「9(4)」が設定されているのに対して、「参照変数の型／サイズ」として「X(4)」「9(004)」が設定されている。すなわち、「銀行コード」として定義されている型と異なる型の参照変数が存在している。この場合、「銀行コード」として、誤って英文字を含むデータが入力されてしまうおそれがある。よって、銀行ＤＢの「銀行コード」フィールドが監視対象として選択される。
【００４７】
データベース監視アクション設定部２４は、データベース監視条件抽出部２３による抽出結果を参照し、データベース監視ルールを作成する。この実施例では、以下のルールが作成される。
対象フィールド：銀行ＤＢの「銀行コード」フィールド
監視条件：データは英文字型か？
アクション：監視条件を満たすデータを識別表示して警告する
【００４８】
データベース監視実行部２７は、データベース監視アクション設定部２４により作成されたデータベース監視ルールでデータベース３に格納されているデータを監視する。この実施例では、ＤＢ格納データ取得部２６が「銀行コード」フィールドから下記の３つのデータを取得したものとする。
データ１：0123
データ２：3456
データ３：AB01
この場合、データ１、２は、数字データである。よって、データ１、２に対しては警告は出力されない。一方、データ３は、英字を含んでいる。したがって、データ３に対しては警告が出力される。
【００４９】
この実施例のプログラムでは、図７に示すように、「銀行コード」に対応する変数Ｅの型が「X(4)」である。このため、変数Ｅとして英文字が入力される可能性がある。ところが、この実施例では、図１０に示すＤＢスキーマに定義されているように「銀行コード」は４桁の数字である。そして、第２の実施例の監視方法では、英文字を含む不適切なデータが検出され、警告が出力される。
【００５０】
このように、第２の実施例の監視方法においても、格納データが不適切である可能性の高いフィールドが検出され、そのフィールドのデータについて監視が行われる。よって、巨大なデータベースであっても、短時間で格納データの異常を検出できる。
【００５１】
＜第３の実施例＞
図１５は、第３の実施例の監視処理を説明する図である。第３の実施例では、監視条件分析ルール２９として「フィールドの代入値または比較値が特定のパターンを有していれ
ば、そのフィールドを監視対象フィールドとし、判定条件は、「データが上記特定のパターンから外れているか？」とする。」が与えられるものとする。
【００５２】
データベース監視条件抽出部２３は、監視条件分析ルール２９が与えられると、プログラム解析部２２によるプログラム解析結果を参照し、監視条件を抽出する。図１５に示す例では、「事業所コード」フィールドにおいて、「代入値」「比較値」が参照される。この実施例では、「代入値」「比較値」が特定のパターンを有していることが検出される。具体的には、「[K][0-9]{2}」が検出される。この正規表現は、先頭に「Ｋ」が配置され、それに続いて２桁の数字が配置されることを意味する。
【００５３】
データベース監視アクション設定部２４は、データベース監視条件抽出部２３により得られ正規表現を参照し、データベース監視ルールを作成する。この実施例では、以下のルールが作成される。
対象フィールド：銀行ＤＢの「事業所コード」フィールド
監視条件：データは「[K][0-9]{2}」から外れているか？
アクション：監視条件を満たすデータを識別表示して警告する
【００５４】
データベース監視実行部２７は、データベース監視アクション設定部２４により作成されたデータベース監視ルールでデータベース３に格納されているデータを監視する。この実施例では、ＤＢ格納データ取得部２６が「事業所コード」フィールドから下記の３つのデータを取得したものとする。
データ１：K12
データ２：A12
データ３：12A
この場合、データ１は、「[K][0-9]{2}」に該当する。よって、データ１に対しては警告は出力されない。一方、データ２、３は、「[K][0-9]{2}」に該当しない。したがって、データ２、３に対しては警告が出力される。
【００５５】
なお、「代入値」「比較値」が特定のパターンに該当するか否かは、例えば、格納データが予め用意してあるフォーマットパターンと一致するかをチェックすることで判定するようにしてもよい。「代入値」「比較値」が３文字である場合のフォーマットパターンの例を下記に示すが、４文字以上の場合も同様である。
（１）すべて数字
（２）１文字目がアルファベット、２、３文字目が数字
（３）２文字目がアルファベット、１、３文字目が数字
（４）３文字目がアルファベット、１、２文字目が数字
（５）１、２文字目がアルファベット、３文字目が数字
（６）１、３文字目がアルファベット、２文字目が数字
（７）２、３文字目がアルファベット、１文字目が数字
（８）すべてアルファベット
【００５６】
また、正規表現のフォーマットパターンの一部を下記に示す。
（１）[A-Z][0-9] ：アルファベットの大文字が１文字、数字が１文字
（２）[A-Z][0-9]+ ：アルファベットの大文字が１文字、数字が１文字以上
（３）[A-Z]+[0-9] ：アルファベットの大文字が１文字以上、数字が１文字
（４）[A-Z]+[0-9]+ ：アルファベットの大文字が１文字以上、数字が１文字以上
（５）[a-z]+[0-9]+ ：アルファベットの小文字が１文字以上、数字が１文字以上
（６）[0-9]+[a-z]+ ：数字が１文字以上、アルファベットの小文字が１文字以上
（７）[0-9]+[A-Z]+ ：数字が１文字以上、アルファベットの大文字が１文字以上
（８）[a-z]+[0-9]+[A-Z] ：アルファベットの小文字が１文字以上、数字が１文字以上、アルファベットの大文字が１文字以上
（９）[0-9]+[a-z]+[0-9] ：数字が１文字以上、アルファベットの小文字が１文字以上、
数字が１文字以上
【００５７】
＜第４の実施例＞
図１６は、第４の実施例の監視処理を説明する図である。第４の実施例では、監視条件分析ルール２９として「対象フィールドが特定フォーマットであるとき、そのフォーマットで記述可能なデータの個数のうち、未使用のデータ数が規定値以下か？」が与えられるものとする。
【００５８】
データベース監視条件抽出部２３は、監視条件分析ルール２９が与えられると、プログラム解析部２２によるプログラム解析結果を参照し、監視条件を抽出する。図１６に示す例では、「事業所コード」フィールドの「代入値」「比較値」の形式が「[K][0-9]{2}」である。「[K][0-9]{2}」は、上述したように、先頭に「Ｋ」が配置され、それに続いて２桁の数字が配置されることを意味する。したがって、「事業所コード」に格納すべきデータの取り得る値は、「K00」から「K99」までの１００個に限定される。また、この実施例では、残量（すなわち、未使用のデータの個数）の規定値として「１０」が設定される。なお、規定値は、残量の比率などに応じて自動的に設定することもできるし、オペレータが所望の値を設定することもできる。
【００５９】
データベース監視アクション設定部２４は、監視条件を利用してデータベース監視ルールを作成する。この実施例では、以下のルールが作成される。
対象フィールド：銀行ＤＢの「事業所コード」フィールド
監視条件：データ形式が「[K][0-9]{2}」であり、未使用のデータの個数は１０未満か？
アクション：監視条件を満たすデータを識別表示して警告する
【００６０】
データベース監視実行部２７は、上記データベース監視ルールでデータベース３に格納されているデータを監視する。この実施例では、ＤＢ格納データ取得部２６が「事業所コード」フィールドから下記の３つのデータを取得したものとする。
データ１：K88
データ２：K89
データ３：K90
ここで、「事業所コード」は、「K00」から順番に割り当てられるものとする。そうすると、データ１に対しては未使用のデータは１１個（「K89」〜「K99」）残っており、また、データ２に対しては未使用のデータは１０個（「K90」〜「K99」）残っている。よって、データ１、２に対しては警告は出力されない。一方、データ３に対して未使用のデータは９個（「K91」〜「K99」）しか残っていない。したがって、データ３に対しては警告が出力される。なお、データの値がランダムな順番で利用される場合には、使用済みコードの個数をカウントする機能が備えるようにすれば良い。
【００６１】
このように、第４の実施例の監視方法によれば、特定のフィールに入力すべきデータとして使用可能な値の個数が少なくなると、警告が出力される。したがって、データベースに不適切なデータが格納される事態を事前に予測することができる。
【００６２】
以上説明したように、実施形態の監視方法によれば、データベースプログラム中に記述された業務ロジックや実装方法に起因するデータベース条件が抽出される。また、この条件は、データベースの全てのフィールドデータを対象とするものではなく、特定のフィールドを対象とする。したがって、業務ロジックや実装方法に関連する条件でデータベースを効率的に監視することができる。
【００６３】
なお、上述の実施形態の監視装置において、プログラム解析部２２およびデータベース監視条件抽出部２３は、プログラム資産に変更があった場合には、プログラムの解析からデータベース監視条件の抽出までの処理を再実行する。また、データベース監視ルール設定部２４は、上記処理の再実行に際してデータベース監視ルールの監視条件が変化した場
合に限って、監視ルールを再作成するようにしてもよい。
【００６４】
上述の実施例１〜４を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
コンピュータを、
データベースにデータを格納するためのプログラムを解析して監視条件を抽出する抽出手段、
前記監視条件とその監視条件が成立したときに実行すべきアクションを定義するアクション情報とを対応づけることにより監視ルールを作成する監視ルール設定手段、
前記監視ルールに従って前記データベースに格納されているデータを監視し、前記監視条件が成立したときに前記アクション情報に従って対応するアクションを実行するアクション実行手段、として機能させるものであり、
前記抽出手段は、前記プログラムにおいて、前記データベースの第１のフィールドに格納すべきデータのサイズを定義するサイズ定義情報と、前記第１のフィールドに係わる参照変数のサイズを記述する参照変数サイズ情報とを比較し、前記サイズ定義情報と同一サイズの参照変数サイズ情報が検出されたときに、前記第１のフィールドに格納されているデータのサイズが前記サイズ定義情報により定義されているサイズの上限値であることを前記監視条件として出力する
ことを特徴とするデータベース監視プログラム。
（付記２）
前記コンピュータをさらに、前記第１のフィールドに格納されているデータの末尾の情報に基づいて、住所を表すデータとして不適切と推定されるデータを検出する検出手段として機能させ、
前記アクション実行手段は、前記検出手段により不適切と推定されるデータが検出されたときに、警告を出力する
ことを特徴とする付記１に記載のデータベース監視プログラム。
（付記３）
前記コンピュータをさらに、前記第１のフィールドにおいて予め用意されている住所データベースに登録されていないデータを検出する検出手段として機能させ、
前記アクション実行手段は、前記検出手段により前記住所データベースに登録されていないデータが検出されたときに、警告を出力する
ことを特徴とする付記１に記載のデータベース監視プログラム。
（付記４）
前記抽出手段は、前記プログラムにおいて、前記データベースの第２のフィールドに格納すべきデータの型を定義する型定義情報と、前記第２のフィールドに係わる参照変数の型を記述する参照変数型情報とを比較し、前記型定義情報と異なる参照変数型情報が検出されたときに、前記第２のフィールドに格納されているデータの型が前記型定義情報により定義されている型と異なることを、前記監視条件として出力する
ことを特徴とする付記１に記載のデータベース監視プログラム。
（付記５）
前記抽出手段は、前記プログラムにおいて、前記データベースの第３のフィールドに格納すべきデータの代入値または比較値として特定パターンが存在する場合には、前記第３のフィールドに格納されているデータが前記特定パターンでないことを、前記監視条件として出力する
ことを特徴とする付記１に記載のデータベース監視プログラム。
（付記６）
前記抽出手段は、前記プログラムにおいて、前記データベースの第４のフィールドに格納すべきデータの取り得る値が所定個数に限定される場合には、前記第４のフィールドのデータとして使用されていない個数が閾値よりも小さくなったことを、前記監視条件として出力する
ことを特徴とする付記１に記載のデータベース監視プログラム。
（付記７）
データベースにデータを格納するためのプログラムを解析して監視条件を抽出する抽出手段と、
前記監視条件とその監視条件が成立したときに実行すべきアクションを定義するアクション情報とを対応づけることにより監視ルールを作成する監視ルール設定手段と、
前記監視ルールに従って前記データベースに格納されているデータを監視し、前記監視条件が成立したときに前記アクション情報に従って対応するアクションを実行するアクション実行手段と、を備え、
前記抽出手段は、前記プログラムにおいて、前記データベースの第１のフィールドに格納すべきデータのサイズを定義するサイズ定義情報と、前記第１のフィールドに係わる参照変数のサイズを記述する参照変数サイズ情報とを比較し、前記サイズ定義情報と同一サイズの参照変数サイズ情報が検出されたときに、前記第１のフィールドに格納されているデータのサイズが前記サイズ定義情報により定義されているサイズの上限値であることを前記監視条件として出力する
ことを特徴とするデータベース監視装置。
（付記８）
コンピュータによるデータベース監視方法であって、
前記コンピュータが、
データベースにデータを格納するためのプログラムを解析して、前記データベースの第１のフィールドに格納すべきデータのサイズを定義するサイズ定義情報と、前記第１のフィールドに係わる参照変数のサイズを記述する参照変数サイズ情報とを比較し、前記サイズ定義情報と同一サイズの参照変数サイズ情報が検出されたときに、前記第１のフィールドに格納されているデータのサイズが前記サイズ定義情報により定義されているサイズの上限値であることを監視条件として出力し、
前記監視条件とその監視条件が成立したときに実行すべきアクションを定義するアクション情報とを対応づけることにより監視ルールを作成し、
前記監視ルールに従って前記データベースに格納されているデータを監視し、前記監視条件が成立したときに前記アクション情報に従って対応するアクションを実行する
ことを特徴とするデータベース監視方法。
【図面の簡単な説明】
【００６５】
【図１】データベース監視が行われるシステムの構成を示す図である
【図２】実施形態のデータベース監視方法の概要を示すフローチャートである。
【図３】実施形態のデータベース監視装置の構成を示す図である。
【図４】プログラム解析部の処理を示すフローチャートである。
【図５】データベース監視条件抽出部の処理を示すフローチャートである。
【図６】データベース監視実行部の処理を示すフローチャートである。
【図７】データベースプログラムの実施例（その１）である。
【図８】データベースプログラムの実施例（その２）である。
【図９】データベースプログラムの実施例（その３）である。
【図１０】ＤＢスキーマの実施例である。
【図１１】図７〜図９に示すプログラムについての解析結果を示す図である。
【図１２】第１の実施例の監視処理を説明する図である。
【図１３】第１の実施例の変形例を説明する図である。
【図１４】第２の実施例の監視処理を説明する図である。
【図１５】第３の実施例の監視処理を説明する図である。
【図１６】第４の実施例の監視処理を説明する図である。
【符号の説明】
【００６６】
１      情報システム
２      プログラム
３      データベース
１１    データベース監視装置
１２    データベース監視ルール
１３、２７  データベース監視実行部
１４、２８  アクション実行部
２１    プログラム入力部
２２    プログラム解析部
２３    データベース監視条件抽出部
２４    データベース監視アクション設定部
２５    データベース監視ルール設定部
２６    ＤＢ格納データ取得部
２９    監視条件分析ルール
【図１】
0005146048.tif 000002
【図２】
0005146048.tif 000003
【図３】
0005146048.tif 000004
【図４】
0005146048.tif 000005
【図５】
0005146048.tif 000006
【図６】
0005146048.tif 000007
【図７】
0005146048.tif 000008
【図８】
0005146048.tif 000009
【図９】
0005146048.tif 000010
【図１０】
0005146048.tif 000011
【図１１】
0005146048.tif 000012
【図１２】
0005146048.tif 000013
【図１３】
0005146048.tif 000014
【図１４】
0005146048.tif 000015
【図１５】
0005146048.tif 000016
【図１６】
0005146048.tif 000017