(57)【要約】【課題】データベースに障害が発生した場合でも、データベースシステムの性能を大きく劣化させないデータベースへの接続管理方法を提供する。【解決手段】アプリケーションサーバが、コネクションに対応するデータベースサーバを識別し、データベースサーバとの間にコネクションを作成したときに、接続先のデータベースサーバを一意に識別する識別子をコネクションに付与する。そして、データベースシステムに障害が発生したときは、当該コネクションのデータベース識別子を特定し、前記特定された識別子と同じ識別子が付与されたコネクションだけをコネクションプールから破棄する。【選択図】図１
2007226398.tif 000002
【特許請求の範囲】
【請求項１】
データベース管理システムを含む複数のデータベースサーバを備えるデータベースシステムと、前記データベースシステムにアクセスするアプリケーションサーバと、前記アプリケーションサーバにアクセスし業務の提供を受けるクライアント計算機とを備える計算機システムにおけるデータベース接続管理方法であって、
前記アプリケーションサーバは、前記データベースシステムに対する複数のコネクションを保持するコネクションプールを備え、
前記データベースシステムは、前記アプリケーションサーバと接続される前記データベースサーバを前記アプリケーションサーバに記憶して前記アプリケーションサーバと接続し、
前記アプリケーションサーバは、
新たなコネクションを作成する際に、作成されるコネクションに接続されるデータベースサーバを特定し、
前記特定されたデータベースサーバと前記作成されたコネクションとを関連付けて管理するコネクション管理情報を保持することを特徴とするデータベース接続管理方法。
【請求項２】
前記アプリケーションサーバは、
前記クライアント計算機からの要求を受けると、前記コネクションプールからコネクションを取得し、
前記取得したコネクションの障害の有無を判定し、
前記取得したコネクションに障害があると判定されると、前記コネクション管理情報を参照して、前記障害があるコネクションに接続されるデータベースサーバを特定し、
前記特定されたデータベースサーバに接続されるすべてのコネクションをコネクションプールから破棄し、新たにコネクションを作成することを特徴とする請求項１に記載のデータベース接続管理方法。
【請求項３】
前記アプリケーションサーバは、
前記データベースサーバの閉塞の要求を受けると、前記コネクション管理情報を参照して、閉塞されるデータベースサーバに接続されるコネクションが使用中であるか否かを判定し、
前記判定の結果、当該コネクションが使用中であれば、前記コネクション管理情報の当該コネクションの状態を破棄予定に設定し、当該コネクションが使用中でなければ、当該コネクションを破棄することを特徴とする請求項１に記載のデータベース接続管理方法。
【請求項４】
前記アプリケーションサーバは、
データベースサーバの閉塞の要求を受けると、閉塞されるデータベースサーバが、前記コネクション管理情報に登録されているか否かを判定し、
前記判定の結果、閉塞されるデータベースサーバが登録されていなければ、エラーを報知することを特徴とする請求項３に記載のデータベース接続管理方法。
【請求項５】
前記アプリケーションサーバは、
前記コネクションの解放の要求を受けると、前記コネクション管理情報を参照して、解放されるコネクションの状態が破棄予定か否かを判定し、
前記判定の結果、前記解放されるコネクションの状態が破棄予定であれば、当該コネクションを破棄し、前記解放されるコネクションの状態が破棄予定でなければ、当該コネクションの状態を未使用に変更することを特徴とする請求項３に記載のデータベース接続管理方法。
【請求項６】
前記アプリケーションサーバは、前記コネクション管理情報を表示する表示部を備えることを特徴とする請求項１に記載のデータベース接続管理方法。
【請求項７】
前記アプリケーションサーバは、
データベースサーバの追加の要求を受けると、前記コネクション管理情報を参照して、未使用のコネクションを特定し、
前記特定された未使用のコネクションのうち、高負荷のデータベースサーバに接続されるコネクションを破棄することを特徴とする請求項１に記載のデータベース接続管理方法。
【請求項８】
演算処理をするプロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される通信インターフェースとを備えるアプリケーションサーバであって、
前記アプリケーションサーバは、前記アプリケーションサーバから業務の提供を受けるクライアント計算機からのアクセスに従って、複数のデータベースサーバを備えるデータベースシステムにアクセスし、
前記データベースシステムは、データベース管理システムを含み、前記アプリケーションサーバと接続される前記データベースサーバを前記アプリケーションサーバに記憶して前記アプリケーションサーバと接続し、
前記アプリケーションサーバは、前記データベースシステムに対する複数のコネクションを保持するコネクションプールを備え、
前記プロセッサは、
新たなコネクションを作成する際に、作成されるコネクションに接続されるデータベースサーバを特定し、
前記特定されたデータベースサーバと前記作成されたコネクションとを関連付けて管理するコネクション管理情報を保持することを特徴とするアプリケーションサーバ。
【請求項９】
演算処理をするプロセッサと、前記プロセッサに接続されるメモリ及び通信インターフェースとを備えるアプリケーションサーバに、データベースへの接続を管理させるプログラムであって、
前記アプリケーションサーバは、
前記データベースシステムに対する複数のコネクションを保持するコネクションプールを備え、
アプリケーションサーバから業務の提供を受けるクライアント計算機からのアクセスに従って、前記コネクションプールからコネクションを選択してデータベースシステムにアクセスし、
前記データベースシステムは、データベース管理システムを含む複数のデータベースサーバを備え、前記アプリケーションサーバと接続される前記データベースサーバを前記アプリケーションサーバに記憶して前記アプリケーションサーバと接続し、
前記プログラムは、
前記アプリケーションサーバが新たなコネクションを作成する際に、作成されるコネクションに接続されるデータベースサーバを特定するステップと、
前記特定されたデータベースサーバと前記作成されたコネクションとを関連付けて管理するコネクション管理情報を保持するステップとを前記アプリケーションサーバに実行させることを特徴とするプログラム。
【請求項１０】
複数のデータベースサーバ及び振り分け装置を備えるデータベースシステムと、前記データベースシステムにアクセスするアプリケーションサーバと、前記アプリケーションサーバにアクセスし業務の提供を受けるクライアント計算機とを備える計算機システムであって、
前記アプリケーションサーバは、演算処理をするプロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される通信インターフェースとを備え、前記データベースシステムに対する複数のコネクションを維持するコネクションプールを備え、
前記データベースシステムは、前記複数のデータベースサーバに対するアクセスを、前記各データベースサーバに振り分ける振り分け装置を備え、
前記振り分け装置は、接続される前記データベースサーバを前記アプリケーションサーバに記憶して前記アプリケーションサーバと接続し、前記複数のデータベースサーバに対するアクセスを振り分け、
前記データベースサーバは、演算処理をするプロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される通信インターフェースとを備え、
前記データベースサーバのプロセッサは、データベース管理システムを実行し、
前記アプリケーションサーバのプロセッサは、
コネクションを作成する際に、作成されるコネクションに接続されるデータベースサーバを特定し、
前記特定されたデータベースサーバと前記作成されたコネクションとを関連付けて管理するコネクション管理情報を保持することを特徴とする計算機システム。
【請求項１１】
前記計算機システムは、前記アプリケーションサーバから前記データベースシステムへのアクセスを中継する接続装置を備え、
前記接続装置は、前記データベースサーバの負荷を監視し、前記監視によって取得した負荷の情報を保持し、
前記アプリケーションサーバは、前記クライアント計算機からの要求を受けると、前記接続装置に保持された負荷の情報を参照して、負荷の低いデータベースサーバに対するコネクションを優先して、前記コネクションプールから取得することを特徴とする請求項１に記載のデータベース接続管理方法。
【請求項１２】
前記計算機システムは、前記アプリケーションサーバから前記データベースシステムへのアクセスを中継する接続装置を備え、
前記接続装置は、前記アプリケーションサーバによる前記コネクションの使用状態を監視し、前記監視によって取得したコネクションの使用情報を保持し、
前記アプリケーションサーバは、前記クライアント計算機からの要求を受けると、前記接続装置に保持されたコネクションの情報を参照して、当該アプリケーションサーバが使用したコネクションと同じコネクションを、前記コネクションプールから取得することを特徴とする請求項１に記載のデータベース接続管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、特に、データベースへの接続を管理する技術に関する。
【背景技術】
【０００２】
データベースシステムにおいてアプリケーションサーバとデータベースサーバとの接続性能を向上させる技術として、コネクションプール技術がある。コネクションプール技術は、例えば、特許文献１に記載されているように、アプリケーションサーバとデータベースサーバとの間で予め複数のコネクションを用意しておく。そしてアプリケーションサーバは、ユーザアプリケーションからコネンクションの取得要求があると、プールされたコネクションを使用する。このようにすれば、例えば、コネクションの接続要求があるたびに、下位層の接続（例えば、ＴＣＰ接続）の確立及びユーザの認証をする必要がなく、データベースへのアクセスに必要な時間を短縮することができる。
【０００３】
また、性能を向上させたデータベースシステムに、クラスタデータベースがある。クラスタデータベースは、例えば、特許文献２に記載されているように、共有ディスクにアクセス可能な複数のデータベースサーバを備える。この複数のデータベースサーバとアプリケーションサーバの間にデータベース振り分け装置（例えば、ロードバランサ）を備える。データベース振り分け装置は、アプリケーションサーバからデータベースサーバへの接続要求を受けると、いずれかのデータベースサーバにアクセスを振り分ける。このため、アプリケーションサーバは、どのデータベースサーバに接続されているかを意識することなく、データベースを効率的に使用することができる。
【特許文献１】特開２００３−２１６４７７号公報
【特許文献２】特開平８−９５８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述したコネクションプール技術を用いて、クラスタデータベースシステムに対してアクセスすると、データベースサーバに障害が発生したときに、アクセス性能が劣化する問題が生じる。すなわち、クラスタを構成しているデータベースサーバの一つに障害が発生した場合、障害が発生したデータベースサーバとの間のコネクションをプールから破棄する必要がある。
【０００５】
しかし、クラスタデータベースシステムでは、アプリケーションサーバはデータベース振り分け装置以後の動作状態を推測できないので、どのコネクションがどのデータベースサーバと接続されているのかが分からず、プールされているコネクションを区別できない。よって、アプリケーションサーバからの要求に対して、障害が発生したデータベースサーバとのコネクションを割り当ててしまうことがある。
【０００６】
このとき、アプリケーションサーバは、割り当てられたコネクションが正常であるかを確認する。そして、アプリケーションサーバは、割り当てられたコネクションに障害が発生しており、コネクションが異常であると判定すると、現在プールされている全てのコネクションを破棄せざるを得ない。これは、プールされているコネクションを区別できないので、どのコネクションがどのデータベースサーバと接続されているのかが分からないからである。そして、コネクションを再確立するために時間が必要であり、データベースへのアクセス性能が劣化する。
【０００７】
本発明の目的は、データベースに障害が発生した場合でも、データベースへのアクセス性能の低下を少なくすることにある。
【課題を解決するための手段】
【０００８】
本発明の代表的な一形態によると、データベース管理システムを含む複数のデータベースサーバを備えるデータベースシステムと、前記データベースシステムにアクセスするアプリケーションサーバと、前記アプリケーションサーバにアクセスし業務の提供を受けるクライアント計算機とを備える計算機システムにおけるデータベース接続管理方法であって、前記アプリケーションサーバは、前記データベースシステムに対する複数のコネクションを保持するコネクションプールを備え、前記データベースシステムは、前記アプリケーションサーバと接続される前記データベースサーバを前記アプリケーションサーバに記憶して前記アプリケーションサーバと接続し、前記アプリケーションサーバは、新たなコネクションを作成する際に、作成されるコネクションに接続されるデータベースサーバを特定し、前記特定されたデータベースサーバと前記作成されたコネクションとを関連付けて管理するコネクション管理情報を保持する。
【０００９】
すなわち、アプリケーションサーバが、コネクションに対応するデータベースサーバを識別し、データベースサーバとの間にコネクションを作成したときに、接続先のデータベースサーバを一意に識別する識別子をコネクションに付与する。そして、データベースシステムに障害が発生したときは、当該コネクションのデータベース識別子を特定し、前記特定された識別子と同じ識別子が付与されたコネクションだけをコネクションプールから破棄する。
【発明の効果】
【００１０】
本発明の一形態によると、データベースに障害が発生した場合でも、データベースへのアクセス性能の低下を少なくすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１２】
（第１実施形態）
図１は、本発明の実施の形態の計算機システムの構成図である。
【００１３】
本発明の実施の形態の計算機システムは、ユーザが使用するクライアント計算機１０、データベースを使用した業務を提供するアプリケーションサーバ２０、複数のデータベースサーバ７０を備えるクラスタデータベース１２０、データベースサーバ７０へのアクセスを振り分けるデータベース振り分け装置６０、及び、データベースサーバ７０がアクセスする共有ディスク１１０を備える。
【００１４】
クライアント計算機１０とアプリケーションサーバ２０は、ネットワーク１５で接続されている。ネットワーク１５は、データを転送可能な通信路であり、例えば、ＴＣＰ／ＩＰプロトコルを用いたＬＡＮ（ローカルエリアネットワーク）やインターネット、無線通信ネットワーク、有線通信ネットワーク（例えば、ＰＳＴＮ）である。
【００１５】
クライアント計算機１０は、プロセッサ（ＣＰＵ）、主記憶装置（メモリ）、通信インターフェース及び入出力装置を備え、これらが内部バスによって接続されている計算機である。クライアント計算機１０は、例えば、クライアントプログラム（ｗｅｂブラウザ）を動作させ、アプリケーションサーバ２０によって提供される業務をユーザに提供する。なお、図１には１台のクライアント計算機１０を図示しているが、複数台のクライアント計算機１０を設けてもよい。
【００１６】
アプリケーションサーバ２０は、プロセッサ（ＣＰＵ）５０、主記憶装置３０、通信インターフェース（図示省略）及び入出力装置２５を備える計算機である。なお、図１には１台のアプリケーションサーバ２０を図示しているが、複数台のアプリケーションサーバ２０を設けてもよい。
【００１７】
プロセッサ５０は、アプリケーションサーバ２０で実行される各種プログラムに関する演算をする演算処理装置である。
【００１８】
主記憶装置３０は、プロセッサ５０の動作に必要なプログラムやデータを格納するメモリである。特に、本実施の形態では、主記憶装置３０は、アプリケーションサーバ２０で実行されるコンテナサーバプログラム４０及び運用処理プログラム４５を格納する。
【００１９】
コンテナサーバプログラム４０は、その上で、ユーザアプリケーションプログラムが動作するプログラムである。運用処理プログラム４５は、アプリケーションサーバの運用に必要なプログラムであり、各種装置（例えば、入出力装置２５）のドライバを含む。
【００２０】
通信インターフェースは、ネットワーク１５を介して、アプリケーションサーバ２０と接続されており、アプリケーションサーバ２０とデータを送受信する。入出力装置２５は、ユーザインターフェースを提供するキーボード、表示装置等の装置である。
【００２１】
クラスタデータベース１２０は、複数のデータベースサーバ７０を備え、データベース振り分け装置６０によって振り分けられたアクセスを処理する。
【００２２】
データベースサーバ７０は、プロセッサ（ＣＰＵ）１００、主記憶装置８０及び通信インターフェース（図示省略）を備える計算機である。
【００２３】
プロセッサ１００は、データベースサーバ７０で実行される各種プログラムに関する演算をする演算処理装置である。
【００２４】
主記憶装置８０は、プロセッサ１００の動作に必要なプログラムやデータを格納するメモリである。特に、本実施の形態では、主記憶装置８０は、データベースサーバ７０で実行されるデータベースマネージメントシステム（ＤＢＭＳ）を格納する。
【００２５】
データベースマネージメントシステムは、共有ディスク１１０に格納されているデータを管理し、アプリケーションサーバ２０から要求されたデータを共有ディスクから読み出して、アプリケーションサーバ２０に提供する。
【００２６】
通信インターフェースは、データベース振り分け装置６０と接続されており、アプリケーションサーバ２０とデータを送受信する。
【００２７】
データベース振り分け装置６０は、アクセス先のデータベースサーバ７０を特定し、アプリケーションサーバ２０からのアクセスをデータベースサーバ７０に振り分けるドライバプログラムによって実現される。なお、データベース振り分け装置６０は、各データベースサーバ７０の負荷状況を監視し、データベースサーバ７０の負荷が均等になるように、アプリケーションサーバ２０からのアクセスを振り分ける負荷分散装置であってもよい。
【００２８】
なお、データベース振り分け装置６０は、独立した装置として存在してもよいが、アプリケーションサーバ２０の中に含まれても、特定のデータベースサーバ７０の中に含まれてもよい。
【００２９】
アプリケーションサーバ２０、データベース振り分け装置６０及びデータベースサーバ７０は、通信路で接続されている。通信路は、大容量のデータ通信に適するネットワークであり、例えば、ＦＣ（Fibre Channel）プロトコルによって通信するＳＡＮ（Storage Area Network）又はｉＳＣＳＩ（Internet SCSI）プロトコルによって通信するＩＰ−ＳＡＮを用いる。
【００３０】
共有ディスク１１０は、ディスクドライブ及びディスク制御部を備えた記憶装置である。共有ディスク１１０は、複数のディスクドライブによってＲＡＩＤ（Redundant Array of Independent Disks）を構成して、記憶されるデータに冗長性を持たせてもよい。このようにすれば、ディスクドライブの一部に障害が生じても、格納されたデータが消失せず、共有ディスク１１０の信頼性を向上することができる。
【００３１】
共有ディスク１１０は、各データベースサーバ７０に接続されており、各データベースサーバ７０からアクセスが可能である。共有ディスク１１０及び各データベースサーバ７０を接続する通信路は、大容量のデータ通信に適するネットワークであり、例えば、ＳＡＮ（Storage Area Network）又はＩＰ−ＳＡＮを用いる。
【００３２】
なお、計算機システムは、管理者がデータベースサーバ７０及び共有ディスク１１０を操作するために使用する管理計算機を設けてもよい。
【００３３】
図２Ａは、本発明の実施の形態のアプリケーションサーバ２０の構成図であり、通常動作時のコンテナサーバ４０の動作を示す。
【００３４】
コンテナサーバ４０上では、ユーザアプリケーションプログラム１５０及びコネクション管理プログラム１３０が動作している。
【００３５】
コンテナサーバプログラム４０は、その上で、ユーザアプリケーションプログラムが動作するプログラムであり、例えば、サーブレットやＥＪＢ（Enterprise JavaBeans）である。
【００３６】
ユーザアプリケーションプログラム１５０は、クライアント計算機１０に対して、データベースを使用した業務を提供するプログラムである。
【００３７】
コネクション管理プログラム１３０は、アプリケーションサーバ２０とデータベースサーバ７０との間の接続を管理する。具体的には、アプリケーションサーバ２０とデータベースサーバ７０との間で、下位層の接続（例えば、ＴＣＰ接続）を確立し、アプリケーションサーバ２０の認証が完了した複数のコネクションを設定する。そして、設定されたコネクション１４５を、コネクション管理テーブル１４０に記録する。
【００３８】
図２Ａには、複数のコネクションが記号によって図示されている。図では、白色が未使用のコネクション、黒色が使用中のコネクションである。また、丸印がデータベースサーバ＃１と接続されるコネクションであり、三角印がデータベースサーバ＃２と接続されるコネクションである。
【００３９】
コネクション管理プログラム１３０は、ユーザアプリケーションプログラム１５０からコネクション取得要求があると、コネクション管理テーブル１４０を検索して、未使用のコネクションを選択する。そして、選択されたコネクションの情報をユーザアプリケーションプログラム１３０に送信する。
【００４０】
また、コネクション管理プログラム１３０は、入出力装置２５から入力されるコマンド２００によって、コネクションの設定及び破棄、データベースサーバの閉塞及び追加、及び、コネクション管理テーブル１４０の表示等の処理を行う。
【００４１】
図２Ｂは、本発明の実施の形態のアプリケーションサーバ２０の構成図であり、障害発生時のコンテナサーバ４０の動作を示す。
【００４２】
ユーザアプリケーションプログラム１５０は、クライアント端末１０からアクセスを受けると、データベースにアクセスするために、コネクション管理プログラム１３０にコネクションの取得を要求する（１）。コネクション管理プログラム１３０はユーザアプリケーションプログラム１５０からコネクション取得要求があると、コネクション管理テーブル１４０を検索して、未使用のコネクションを選択する（２）。その後、コネクション管理プログラム１３０は、選択されたコネクション１４５に対して、コネクション１４５の障害の有無（健全性）を判定する（３）。
【００４３】
その結果、コネクション１４５に障害があると判定されると、コネクション管理プログラム１３０は、データベース振り分け装置６０に対して、障害があったコネクション１４５が接続しているデータベースサーバ７０の閉塞を指示する（４）。次に、コネクション管理プログラム１３０は、コネクション管理テーブル１４５を検索して、閉塞されたデータベースサーバ７０に接続されているコネクション１４５を特定し、特定されたコネクション１４５を破棄する（５）。このコネクションの破棄は、削除とも言われる。
【００４４】
その後、コネクション管理プログラム１３０は、新たなコネクション１４５を設定し、ユーザアプリケーション１５０に送信する。
【００４５】
図３Ａは、本発明の実施の形態のコネクション管理テーブル１４０の構成図である。
【００４６】
コネクション管理テーブル１４０は、コネクション名１６０、コネクションの状態１７０及びデータベースサーバ識別子１８０を含む。
【００４７】
コネクション名１６０は、コネクション１４５を識別する一意の識別子である。コネクションの状態１７０は、コネクション１４５が使用中であるか、未使用であるかを示す。データベースサーバ識別子１８０は、コネクション１４５が接続されているデータベースサーバ７０を識別する一意の識別子である。
【００４８】
図３Ｂは、本発明の実施の形態のコネクションの表記を示すテーブルの構成図である。
【００４９】
コネクションの表記を示すテーブルは、コネクション名１６０及び符号１９０を含む。符号１９０は、図中に表される符号を示す。なお、コネクションの表記を示すテーブルは、コネクション管理テーブル１４０と一体に構成されていてもよい。
【００５０】
図４は、本発明の実施の形態のコネクション管理プログラム１３０のコネクション取得処理のフローチャートである。コネクション取得処理は、アプリケーションサーバ２０のプロセッサ５０によって実行される。
【００５１】
まず、コネクション管理プログラム１３０は、ユーザアプリケーション１５０からコネクション取得要求を受けると、コネクション管理テーブル１４０を検索し、コネクションの状態１７０が「未使用」であるコネクションが存在するか否かを判定する（Ｓ１０）。
【００５２】
その結果、「未使用」であるコネクションが一つでもあると判定されると、一つの未使用のコネクションを取得する（Ｓ２０）。次に、取得したコネクションの障害の有無を判定する（Ｓ３０）。具体的には、処理負担が軽いデータベースコマンドを送信し、データベースサーバ７０から正常に返答が送信されるか否かによって、データベースサーバ７０の障害を判定し、コネクションの障害を判定する。
【００５３】
その結果、当該取得したコネクションに障害がないと判定すると、コネクション管理テーブル１４０の当該取得したコネクションの状態１７０を「使用中」に変更し（Ｓ４０）、当該取得したコネクションの情報をユーザアプリケーションプログラム１３０に送信する（Ｓ５０）。
【００５４】
一方、当該取得したコネクションに障害があると判定すると、コネクション管理テーブル１４０を参照し、障害があると判定されたコネクションが接続されているデータベースサーバ７０の識別子を取得する。そして、データベース振り分け装置６０に対して、障害があると判定されたコネクションが接続されているデータベース７０の閉塞を指示する（Ｓ９０）。次に、障害があると判定されたコネクションが接続されているデータベースサーバの識別子を持つコネクションの情報をコネクション管理テーブル１４０から削除する（Ｓ９５）。なお、ステップＳ９５において、コネクションを破棄する前に、そのコネクションが使用中か否かを判定してもよい。これは、例えば、図５のステップＳ１２０〜Ｓ１４０に示す処理と同様にして実現可能である。
【００５５】
一方、Ｓ１０において、未使用コネクションが存在しないと判定されると、新たなコネクションの作成を、データベース振り分け装置６０に要求する（Ｓ６０）。そして、サーバの状態を取得するコマンドを、作成されたコネクションを介してデータベースサーバ７０に送信し、データベース識別子を問い合わせる（Ｓ７０）。そして、データベースサーバ７０から取得したデータベースサーバ識別子１８０と、作成したコネクションのコネクション名１６０をコネクション管理テーブル１４０に追加する。
【００５６】
図５は、本発明の実施の形態のコネクション管理プログラム１３０のデータベース閉塞処理のフローチャートである。データベース閉塞処理は、アプリケーションサーバ２０のプロセッサ５０によって実行される。
【００５７】
まず、コネクション管理プログラム１３０は入出力装置２５からの外部コマンド２００等によって、データベースサーバ識別子が指定されたデータベース７０の閉塞指示を受け取ると、指定されたデータベースサーバ識別子がコネクション管理テーブル１４０に登録されているか否かを判定する（Ｓ１００）。
【００５８】
その結果、指定されたデータベースサーバ識別子がコネクション管理テーブル１４０に登録されていると判定されると、指定されたデータベースサーバ識別子によって特定されるデータベースサーバ７０の閉塞を、データベース振り分け装置６０に通知する（Ｓ１２０）。次に、閉塞されるデータベースサーバの識別子１８０を有するコネクションについて、ステップＳ１４０〜Ｓ１６０の処理を繰り返し実行する（Ｓ１３０〜Ｓ１７０）。
【００５９】
具体的には、データベース管理テーブル１４０を参照して、閉塞されるデータベースサーバの識別子１８０が付されたコネクションの状態１７０を調べる（Ｓ１４０）。その結果、コネクションの状態１７０が「使用中」であれば、状態１７０を「破棄予定」に変更する（Ｓ１５０）。このように、使用中のコネクションを「破棄予定」にして、コネクションの使用が終了した後に破棄することによって、ユーザアプリケーションの処理におけるエラーを回避することができる。
【００６０】
なお、使用中のコネクションであっても、そのコネクションの使用終了を待たずに、強制的に破棄してもよい。この場合、ユーザアプリケーション処理の途中でコネクションが破棄されるので、エラーが発生する。
【００６１】
一方、コネクションの状態１７０が「未使用」であれば、当該コネクションをコネクション管理テーブルから削除する（Ｓ１６０）。
【００６２】
一方、ステップＳ１００において、指定されたデータベースサーバ識別子がコネクション管理テーブル１４０に登録されていないと判定されると、入出力装置２５によってエラーを通知する。例えば、データベースサーバ識別子として「＃４」が指定されたデータベース閉塞指示を受けると、「指定されたデータベース＃４がありません。」というエラーメッセージを、入出力装置２５の表示画面に表示する。
【００６３】
図６は、本発明の実施の形態のコネクション管理プログラム１３０のコネクション解放処理のフローチャートである。コネクション解放処理は、アプリケーションサーバ２０のプロセッサ５０によって実行される。
【００６４】
まず、コネクション管理プログラム１３０は、ユーザアプリケーション１５０等からコネクション１４５の解放要求を受け取ると、コネクション管理テーブル１４０を参照して、解放が要求されたコネクションの状態１７０が「破棄予定」か否かを調べる（Ｓ２００）。
【００６５】
その結果、解放が要求されたコネクションの状態１７０が「破棄予定」でなければ、状態１７０を「未使用」に変更して、コネクション解放処理を終了する（Ｓ２１０）。一方、解放が要求されたコネクションの状態１７０が「破棄予定」であれば、当該コネクションをコネクション管理テーブル１４０から削除して、コネクションを破棄する（Ｓ２２０）。
【００６６】
図７は、本発明の実施の形態のコネクション管理プログラム１３０のデータベース追加処理のフローチャートである。データベース追加処理は、アプリケーションサーバ２０のプロセッサ５０によって実行される。
【００６７】
まず、コネクション管理プログラム１３０は、外部コマンド２００等によってデータベース７０を追加する通知を受け取ると、データベース振り分け装置６０にデータベースサーバ７０の追加を通知する（Ｓ３００）。
【００６８】
次に、データベース管理テーブル１４０中を参照して、コネクションの状態１７０が未使用であるコネクションの情報をコネクション管理テーブル１４０から削除し、コネクションを破棄する（Ｓ３２０）。そして、全ての未使用のコネクションに対する処理が終了するまで、ステップＳ３１０からＳ３３０を繰り返す。
【００６９】
このように、データベース追加処理で未使用コネクションを破棄することによって、既存のデータベースサーバとのコネクションが選択されず、新たに追加されたデータベースサーバとのコネクションが優先的に選択されるので、データベースサーバ間の負荷を短時間で均等化することができる。
【００７０】
また、ステップＳ３２０において、高負荷のデータベースサーバとの未使用コネクションのみ破棄することによって、高負荷のサーバの負荷を低下させることができ、データベースサーバ間の負荷を短時間で均等化することができる。
【００７１】
さらに、未使用コネクションについて、ステップＳ３１０からＳ３３０の繰り返しを実行せず、データベース振り分け装置６０に対する通知（Ｓ３００）だけ実行してもよい。この場合、データベース振り分け装置６０の負荷分散機能によって、新たに追加されたデータベースサーバも含めて負荷が均等化される。
【００７２】
図８は、本発明の実施の形態のコネクション管理テーブル１４０の表示画面の説明図である。
【００７３】
入出力装置２５から、コネクション管理テーブルの表示コマンドが入力されると、コネクション管理プログラム１３０は、コネクション管理テーブル１４０の内容を入出力装置２５に表示する。
【００７４】
なお、図８の表示画面は、図３に示すコネクション管理テーブル１４０と異なる状態を示す。
【００７５】
（第１の変形例）
本実施の形態では、データベース振り分け装置６０は、コネクションを作成するときにクラスタデータベースシステムの各データベースサーバの負荷状態を考慮して、データベースサーバへのアクセスを振り分ける。従って、コネクションが一旦作成され、アプリケーションサーバ２０内のプールで管理されるようになると、データベースサーバの負荷状態は考慮されなくなる。
【００７６】
また、図９に示すように、データベース負荷情報テーブル１０１０をデータベース振り分け装置内に持つこともできる。このように、データベース振り分け装置がデータベース負荷情報テーブル１０１０を管理すると、データベースサーバとのコネクションが確立した後でもクラスタデータベースシステム内のデータベースサーバの負荷状態を考慮して負荷を分散できる。以下、この第１の変形例について説明する。
【００７７】
図９に、第１の変形例の計算機システムの構成図を示す。データベース振り分け装置６０がデータベース負荷情報テーブル１０１０を保持し、管理している。
【００７８】
図１０に、第１の変形例のデータベース負荷情報テーブル１０１０の構成図を示す。
【００７９】
データベース負荷情報テーブル１０１０は、データベースサーバ識別子１０３０と負荷状態１０４０を含む。データベースサーバ識別子１０３０は、コネクションが接続されているデータベースサーバ７０を識別する一意の識別子であり、コネクション管理テーブル１４０のデータベースサーバ識別子１８０と同じ情報が用いられる。負荷状態１０４０は１００分率で表され、１００％が最も負荷が高いことを意味する。
【００８０】
図１１は、第１の変形例の未使用コネクション取得処理のフローチャートであり、コネクション取得処理（図４）のステップＳ２０において実行される。
【００８１】
まず、負荷情報テーブル１０１０に格納されたデータを負荷状態１０４０の値で昇順にソートする（Ｓ１０００）。次に、ソートした順序で未使用コネクションがあるかどうかを判定する（Ｓ１０２０）。未使用コネクションがあれば、そのコネクションの情報をユーザアプリケーションプログラム１３０に送信する（Ｓ１０４０）。このＳ１０２０の判定処理を、ソートした順序でデータベースサーバ識別子について繰り返し実行する（Ｓ１０１０〜Ｓ１０３０）。
【００８２】
前述したように、第１の変形例の処理によって、未使用コネクションを返す場合に、データベースサーバの動的な負荷状態を参照して、負荷の低いデータベースサーバに優先して処理を割り当てることができ、各データベースマネージメントシステム間の負荷をバランスさせることができる。
【００８３】
（第２の変形例）
本実施の形態では、データベースの各種キャッシュ機能を有効に利用するためには、前回実行されたアプリケーションと同じ処理は、同じデータベースサーバで処理した方がよい。このため、図１２に示すように、コネクション管理テーブル１０２０をデータベース振り分け装置内に持つ。そして、コネクション管理テーブル１０２０に、前回実行されたアプリケーションサーバ識別子の情報を追加することによって、データベースキャッシュのヒット率を向上させることができる。以下、この第２の変形例について説明する。
【００８４】
図１２に、第２の変形例の計算機システムの構成図を示す。データベース振り分け装置６０がコネクション管理テーブル１０２０を保持し、管理している。
【００８５】
図１３に、第２の変形例のコネクション管理テーブル１０２０の構成図を示す。
【００８６】
第２の変形例のコネクション管理テーブル１０２０は、コネクション名１６０、コネクションの状態１７０、データベースサーバ識別子１８０及びアプリ−ケーションサーバ識別子２０００を含む。コネクション名１６０、コネクションの状態１７０及びデータベースサーバ識別子１８０は、図３に示したコネクション管理テーブル１４０の各要素と同じである。
【００８７】
図１４は、第１の変形例の未使用コネクション取得処理のフローチャートであり、コネクション取得処理（図４）のステップＳ２０において実行される。
【００８８】
まず、未使用コネクションについて、要求元のアプリケーションサーバの識別子とコネクション管理テーブル１０２０のアプリケーションサーバ識別子２０００が同じか否かを判定する（Ｓ２０１０）。判定の結果、識別子が同じであれば、そのコネクションの情報をユーザアプリケーションプログラム１３０に送信する（Ｓ２０４０）。このＳ２０１０の判定処理を、全ての未使用コネクションについて繰り返し実行する（Ｓ２０００〜Ｓ２０２０）。
【００８９】
一方、全ての未使用コネクションについて、同じ識別子を持つものがなければ、任意の未使用コネクションを選択し、そのコネクションに対応するアプリケーションサーバ識別子２０００を、要求元アプリケーションサーバの識別子で上書きする（Ｓ２０３０）。
【００９０】
以上の処理によって、同じアプリケーションサーバは同じコネクションを使用するようになる。
【００９１】
また、第２の変形例では、このようにコネクションを管理することによって、データベースの障害を検知した場合、複数のアプリケーションサーバに障害が発生したデータベースサーバに接続するためのコネクションを管理するため、障害が発生したデータベースサーバに接続するためのコネクションを有する各アプリケーションサーバにそのコネクションを削除させるための指示を送信することができる。このように処理させることによって、障害が発生したデータベースサーバに接続するためのコネクションを全て削除することが可能となる。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施の形態の計算機システムの構成図である。
【図２Ａ】本発明の実施の形態のアプリケーションサーバの構成図である。
【図２Ｂ】本発明の実施の形態のアプリケーションサーバの構成図である。
【図３Ａ】本発明の実施の形態のコネクション管理テーブルの構成図である。
【図３Ｂ】本発明の実施の形態のコネクションの表記を示すテーブルの構成図である。
【図４】本発明の実施の形態のコネクション取得処理のフローチャートである。
【図５】本発明の実施の形態のデータベース閉塞処理のフローチャートである。
【図６】本発明の実施の形態のコネクション解放処理のフローチャートである。
【図７】本発明の実施の形態のデータベース追加処理のフローチャートである。
【図８】本発明の実施の形態のコネクション管理テーブルの表示画面の説明図である。
【図９】本発明の実施の形態の第１の変形例の計算機システムの構成図である。
【図１０】本発明の実施の形態の第１の変形例の負荷情報テーブルの構成図である。
【図１１】本発明の実施の形態の第１の変形例の未使用コネクション選択処理のフローチャートである。
【図１２】本発明の実施の形態の第２の変形例の計算機システムの構成図である。
【図１３】本発明の実施の形態の第２の変形例のコネクション管理テーブルの構成図である。
【図１４】本発明の実施の形態の第２の変形例の未使用コネクション選択処理のフローチャートである。
【符号の説明】
【００９３】
１０  クライアント計算機
２０  アプリケーションサーバ
６０  データベース振り分け装置
１１０  共有ディスク
１２０  クラスタデータベース
１３０  コネクション管理プログラム
１４０  コネクション管理テーブル
１５０  ユーザアプリケーションプログラム
【図１】
2007226398.tif 000003
【図３Ａ】
2007226398.tif 000004
【図３Ｂ】
2007226398.tif 000005
【図４】
2007226398.tif 000006
【図５】
2007226398.tif 000007
【図６】
2007226398.tif 000008
【図７】
2007226398.tif 000009
【図８】
2007226398.tif 000010
【図９】
2007226398.tif 000011
【図１０】
2007226398.tif 000012
【図１１】
2007226398.tif 000013
【図１２】
2007226398.tif 000014
【図１３】
2007226398.tif 000015
【図１４】
2007226398.tif 000016
【図２Ａ】
2007226398.tif 000017
【図２Ｂ】
2007226398.tif 000018