(57)【要約】【課題】余分な機能の追加や通信を発生させずに、クライアントの障害時のロック解除漏れを防止するデータベース管理装置を提供する。【解決手段】データベース１１を管理するデータベース管理部１５と、クライアント２０との通信の状態を監視する通信監視部１２と、通信監視部１２による監視結果に基づいて、データベース１１のロック取得中にクライアント２０からの通信が一定時間発生していな場合には、クライアント２０に障害が発生していると判断する障害判定部１３と、障害判定部１３においてクライアント２０に障害が発生していると判断された場合に、クライアント２０が取得しているロックを強制的に解除するロック解除操作部１４と、を備える。【選択図】図１
2011164918.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとの通信の状態を監視する通信監視部と、
前記通信監視部による監視結果に基づいて、データベースのロック取得中に前記クライアントからの通信が一定時間発生していな場合には、前記クライアントに障害が発生していると判断する障害判定部と、
前記障害判定部において前記クライアントに障害が発生していると判断された場合に、前記クライアントが取得しているロックを強制的に解除するロック解除操作部と、を備えたデータベース管理装置。
【請求項２】
前記通信監視部は、前記クライアントのプロセスと前記データベースのプロセスの間で確立されているセッションの状態を監視し、セッション内で発生した前記クライアントからの最後の通信時刻と、そのセッションのロック状態をセッション情報テーブルに蓄積し、
前記障害判定部は、前記セッション情報テーブルを定期的に監視し、前記データベースのロック取得中で、かつ前記クライアントからの最後の通信時刻が現在時刻から一定時間以上遅れているセッションの情報を前記ロック解除操作部に通知し、
ロック解除操作部は、前記障害判定部から通知されたセッションを破棄してロックを強制的に解除することを特徴とする請求項１に記載のデータベース管理装置。
【請求項３】
クライアントとの通信状態を監視し、
データベースのロック取得中に前記クライアントからの通信が一定時間発生していな場合には、前記クライアントに障害が発生していると判断し、
前記クライアントに障害が発生していると判断された場合に、前記クライアントが取得しているロックを強制的に解除する、データベース管理方法。
【請求項４】
コンピュータを、
クライアントとの通信の状態を監視する通信監視部と、
前記通信監視部による監視結果に基づいて、データベースのロック取得中に前記クライアントからの通信が一定時間発生していな場合には、前記クライアントに障害が発生していると判断する障害判定部と、
前記障害判定部において前記クライアントに障害が発生していると判断された場合に、前記クライアントが取得しているロックを強制的に解除するロック解除操作部として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理装置、データベース管理方法、及びプログラムに関する。
【背景技術】
【０００２】
データベースシステムは、クライアントからアクセスを受けた際、リソースを一時的に占有させる排他ロックを実施することで、複数のクライアントからの同時アクセスが発生した場合にも不整合が発生しないよう一貫性を保っている。
しかし、クライアントが何らかの障害によりロックを取得したまま解放できない場合、他のクライアントはデータベースを参照することができなくなることが問題となる。
【０００３】
クライアントプロセスがロックを取得したまま無応答になった場合のロック解除手段としては、オペレーティングシステムによる通信のタイムアウト判定や、データベースシステムが提供するプローブパケット送出により障害と判定する方法があった。前者については、一般的にタイムアウト判定を行うのには長時間必要である。また、タイムアウト判定の調整はオペレーティングシステムの設定変更により行うため、同じシステム上で動作する通信プログラム等、データベースプログラム以外のプログラムにも影響を及ぼすため、適用可能な場面が限られる。後者については、プローブパケット送出機能を持つデータベースプログラムを前もって選定する必要があり、通信も余分に発生する。
【０００４】
特許文献１には、ファイルを記憶するファイル記憶手段と、ファイルに対するアクセスがあった場合に当該ファイルをロックし、当該ファイルへのアクセスが終了した場合にロックを解除するロック制御手段と、から構成されるファイルサーバと、ファイルサーバのファイル記憶手段に記憶されたファイルにアクセスするクライアントと、クライアントが動作しているか否かを監視するクライアント監視手段と、クライアント監視手段が動作していないクライアントを検出した場合、当該クライアントが使用していたファイルサーバに、当該クライアントを特定するための通知情報を送信する通知手段と、から構成されるロック監視サーバと、から構成され、ロック制御手段は通知情報を受け取った場合にロックを解除するファイル管理システムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２８５８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載された方法では、クライアント監視手段がクライアントに定期的に問い合わせをおこない、応答が返ってこなければクライアントの障害が発生したと判断するため、ファイルサーバからクライアントへの監視のための通信が発生する。また、クライアント側も、監視のための通信に応答する機能を有する必要がある。
【０００７】
そこで、本発明の目的は、余分な機能の追加や通信を発生させずに、クライアントの障害時のロック解除漏れを防止することである。
【課題を解決するための手段】
【０００８】
本発明に係るデータベース管理装置は、クライアントとの通信の状態を監視する通信監視部と、前記通信監視部による監視結果に基づいて、データベースのロック取得中に前記クライアントからの通信が一定時間発生していな場合には、前記クライアントに障害が発生していると判断する障害判定部と、  前記障害判定部において前記クライアントに障害が発生していると判断された場合に、前記クライアントが取得しているロックを強制的に解除するロック解除操作部と、を備えている。
【発明の効果】
【０００９】
本発明によれば、余分な機能の追加や通信を発生させずに、クライアントの障害時のロック解除漏れを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態によるデータベース管理装置の構成を示すブロック図である。
【図２】本発明の実施の形態による通信監視部の構成を示すブロック図である。
【図３】本発明の実施の形態によるデータベース管理装置の動作のフローチャートである。
【図４】本発明の実施の形態によるデータベース管理装置の動作のフローチャートである。
【図５】本発明の実施の形態によるデータベース管理装置の動作のフローチャートである。
【発明を実施するための形態】
【００１１】
次に、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。
図１は、本発明の実施の形態によるデータベース管理装置１０の構成を示すブロック図である。
図に示すように、データベース管理装置１０は、クライアント２０と通信回線５０を介して接続されている。
データベース管理装置１０は、データベース１１、通信監視部１２、障害判定部１３、ロック解除操作部１４、データベース管理部１５を備えている。
【００１２】
通信監視部１２、障害判定部１３、ロック解除操作部１４、データベース管理部１５は、プログラムに従ってコンピュータのプロセッサが行う動作をモジュールとして表しており、これらは一体としてデータベース管理装置１０の機能を構成する。
【００１３】
図２は、通信監視部１２の構成を示すブロック図である。図に示すように、通信監視部１２は、通信内容取得部１２１、通信内容解析部１２２、セッション情報テーブル１２３を備えている。通信内容取得部１２１及び通信内容解析部１２２はプログラムに従ってコンピュータのプロセッサが行う動作をモジュールとして表している。セッション情報テーブル１２３はメモリ、ハードディスク等の記憶装置によって実現される。
【００１４】
データベース１１は、ハードディスク等の記憶装置によって実現されるリレーショナルデータベース等である。
【００１５】
通信監視部１２は、クライアント２０とデータベース管理装置１０の通信を監視する。具体的には、通信監視部１２は、クライアント２０のプロセスとデータベース管理装置１０のプロセスの間で確立されているセッションの状態を監視し、セッション内で発生した通信の状況をセッション情報テーブル１２３に蓄積する。
【００１６】
表１は、セッション情報テーブル１２３に蓄積された情報の例を示している。セッション情報テーブル１２３には、クライアントプロセスとデータベースプロセスを結びつけるセッション情報が格納されており、具体的にはクライアントプロセスを識別する情報（例えば、ＴＣＰ／ＩＰ通信ならＩＰアドレスとポート番号）、データベースプロセスを識別する情報（例えば、ポート番号、プロセスＩＤ等）、データベース１１のロック取得状態を表わすフラグ、最終通信時刻が格納されている。なお、表１の例は、ＴＣＰ／ＩＰのセッションとデータベースセッションが１対１で対応している場合の例である。
【表１】
2011164918.tif 000003
【００１７】
表２も表１と同様にセッション情報テーブル１２３に蓄積された情報の例を示しているが、表２は、同一ＴＣＰ／ＩＰセッション内で複数のデータベースセッションが存在している場合の例である。この場合には、さらにセッションを識別する情報（例えば、プロセスＩＤ等）が追加される。
【表２】
2011164918.tif 000004
【００１８】
障害判定部１３は、通信監視部１２による監視結果に基づいて、データベース１１のロック取得中にクライアント２０からの通信が一定時間発生していな場合には、クライアント２０に障害が発生していると判断する。障害判定部１３は、セッション情報テーブル１２３に蓄積されている情報に基づいて、データベース１１のロックを取得したままの状態で、障害が発生したクライアント２０のプロセスが無いかを判定する。障害が発生したと判断された場合には、そのプロセスの情報をロック解除操作部１４に通知する。
【００１９】
ロック解除操作部１４は、障害判定部１３においてクライアント２０のプロセスに障害が発生していると判断された場合に、障害判定部１３からそのプロセスの情報を受け、クライアント２０が取得しているロックを強制的に解除する。
【００２０】
データベース管理部１５は、データベース１１の管理やデータベース１１内のデータに対する処理を実行する。データベース管理部１５は、既存のリレーショナル型等のデータベース管理装置と同様のものである。
【００２１】
次に、データベース管理装置１０の動作について図３〜５のフローチャートを用いて説明する。
まず、通信監視部１２の通信内容取得部１２１は、外部からの通信のうち、データベースプロセスにアクセスしてくる通信（監視対象の通信）を特定する情報を取得する。（図３のステップＳ３０１）。通信を特定するための情報は、データベースプロセスに関連付いている情報(例えばポート番号等)である。
【００２２】
次に、通信監視部１２は、外部からの通信の内容を取得する（ステップＳ３０２）。
さらに、通信監視部１２は、ステップＳ２０２で取得した通信が監視対象の通信であるか否かをステップＳ３０１で取得した情報に基づいて判断し（ステップＳ３０３）、監視対象であれば（Ｙ）、通信内容を通信内容解析部１２２に送信する。通信内容には、クライアントプロセスを識別する情報と、クライアントプロセスがアクセスしているデータベースプロセスを識別する情報が含まれる。
【００２３】
次に、通信内容解析部１２２は、通信監視部１２から通信内容を取得すると（図４のステップＳ４０１）、クライアントプロセスを識別する情報とデータベースプロセスを識別する情報から、その通信がセッション情報テーブル１２３に登録されているセッションの通信か否かを判断する（ステップＳ４０２）。
【００２４】
通信内容解析部１２２は、ステップＳ４０２でセッション情報テーブル１２３に登録されていないセッションの通信であると判断された場合には（Ｙ）、セッション情報テーブル１２３に新たなセッションとして、クライアントプロセスを識別する情報とデータベースプロセスを識別する情報を登録する。また、ロック状態には「ＯＦＦ」を登録し、最終通信時刻に現在時刻を登録する（ステップＳ４０３）。
【００２５】
一方、ステップＳ４０２でセッション情報テーブル１２３に既に登録されているセッションの通信であると判断された場合には（Ｎ）、該当するセッションの最終通信時刻を現在時刻に更新する（ステップＳ４０４）。
【００２６】
次に、通信内容解析部１２２は、通信の内容からデータベース１１のロック状態が開始されると判断できる場合には（ステップＳ４０５：Ｙ）、該当するセッションのロック状態を「ＯＮ」にする（ステップＳ４０６）。ロック状態の開始か否かは、例えば通信内容に含まれるＳＱＬなどに基づいて判断することができる。
【００２７】
次に、通信内容解析部１２２は、通信の内容からデータベース１１のロック状態が解除されると判断できる場合には（ステップＳ４０７：Ｙ）、該当するセッションのロック状態を「ＯＦＦ」にする（ステップＳ４０８）。ロック状態の解除か否かは、例えば通信内容に含まれるＳＱＬなどに基づいて判断することができる。
【００２８】
次に、通信内容解析部１２２は、通信の内容からクライアントプロセスとデータベースプロセスの接続が終了されると判断できる場合には（ステップＳ４０９：Ｙ）、該当するセッションのレコードをセッション情報テーブル１２３から削除する（ステップＳ４１０）。接続終了か否かは、例えば通信内容に含まれるＳＱＬなどに基づいて判断することができる。
【００２９】
障害判定部１３は、定期的にセッション情報テーブル１２３を確認する。
確認の際には、まずセッション情報テーブル１２３の先頭の行（レコード）のセッション情報を取得する（図５のステップＳ５０１、Ｓ５０２）。
【００３０】
取得したセッション情報のロック状態が「ＯＮ」の場合（ステップＳ５０３：Ｙ）、障害判定部１３は、最終通信時刻が現在時刻より一定時間以上遅れているか否かを判定し（ステップＳ５０４）、遅れている場合には（Ｙ）、該当するセッションの情報をロック解除操作部１４に通知する（ステップＳ５０５）。さらに、当該セッションのレコードをセッション情報テーブル１２３から削除する（ステップＳ５０６）。
【００３１】
障害判定部１３は、当該セッション情報がセッション情報テーブル１２３の最後のレコードである場合には（ステップＳ５０７：Ｙ）、セッション情報テーブル１２３の先頭の行に移動し（ステップＳ５０８）、ステップＳ５０２へ戻る。また、セッション情報テーブル１２３の最後のレコードでは無い場合には（ステップＳ５０７：Ｎ）、次の行のレコードに移動し（ステップＳ５０９）、ステップＳ５０２へ戻る。
【００３２】
ロック解除操作部１４は、障害判定部１３からセッション情報の通知を受信すると、データベース管理部１５を操作してデータベース１１の管理情報にアクセスする。受信したセッション情報と管理情報を照らし合わせて対象のデータベースセッションを特定したら、そのセッションを破棄するなどの方法によりロックを強制的に解除する。
【００３３】
以上のように、本実施形態によれば、障害判定部１３が、セッション情報テーブル１２３を定期的に監視し、ロック取得中にクライアント２０からの通信が一定時間以上検知されていない場合には、当該クライアント２０に障害が発生したと判断し、ロック解除操作部１４によってロックを強制的に解除するようにしたので、データベース管理装置１０からクライアント２０へ障害発生確認のための監視用通信を行わずに障害の発生を判断することができる。
【００３４】
また、クライアント２０側にも、監視用通信に応答を返す仕組みを設ける必要がない。
また、クライアント２０とデータベース管理装置１０の間のセッションの監視は、データベース管理装置１０のネットワークインタフェイスを監視することで実施できるため、既に稼動しているデータベース管理システムにも適用可能であり、データベースプログラムの種類も問わない。
【００３５】
このように、本実施形態によれば、余分な機能の追加や通信を発生させずに、クライアントの障害時のロック解除漏れを防止することができる。これにより、ロックの期間を最小限にして、データベースの利用効率低下を防止することができる。
【符号の説明】
【００３６】
１０  データベース管理装置、１１  データベース、１２  通信監視部、１３  障害判定部、１４  ロック解除操作部、１５  データベース管理部、２０  クライアント、５０  通信回線、１２１  通信内容取得部、１２２  通信内容解析部、１２３  セッション情報テーブル
【図１】
2011164918.tif 000005
【図２】
2011164918.tif 000006
【図３】
2011164918.tif 000007
【図４】
2011164918.tif 000008
【図５】
2011164918.tif 000009