(57)【特許請求の範囲】
【請求項１】
データベースへのアクセスを制御する正系制御装置の待機系である副系制御装置に、
前記データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを前記正系制御装置から受信して記憶部に記憶し、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放の通知を前記正系制御装置から受信すると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する、
処理を実行させることを特徴とする制御プログラム。
【請求項２】
前記副系制御装置に、
前記正系制御装置から、同一の問合せ文に対応するアクセス規定情報を受信した回数を計数し、該回数が２以上になる場合には、該アクセス規定情報を記憶する処理を行わない、
ことを実行させることを特徴とする請求項１記載の制御プログラム。
【請求項３】
前記正系制御装置から、前記正系制御装置の記憶部におけるアクセス規定情報の消去が通知されると、前記副系制御装置の記憶部に記憶されている、消去が通知された前記アクセス規定情報を消去する
処理を前記副系制御装置に実行させる請求項１又は２記載の制御プログラム。
【請求項４】
前記正系制御装置から、前記データベースに関する統計データの更新が通知されると、更新された前記統計データと更新された該統計データに対応する前記データベースに記憶されたデータとに基づいて、前記記憶部に記憶されている前記アクセス規定情報を更新する
処理を前記副系制御装置に実行させる請求項１乃至３のうち１つ記載の制御プログラム。
【請求項５】
データベースへのアクセスを制御する正系制御装置の待機系の制御装置であって、
前記データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを前記正系制御装置から受信して記憶部に記憶させる記憶処理部と、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放の通知を前記正系制御装置から受信すると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する消去部と、
を有することを特徴とする制御装置。
【請求項６】
正系制御装置と副系制御装置とを備えたデータベースシステムの制御方法であって、
前記正系制御装置が、
データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報の生成に応じて、生成された前記アクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを、前記副系制御装置に送信し、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放に応じて、該コネクションの解放を前記副系制御装置に通知し、
前記副系制御装置が、
前記正系制御装置から送信された前記アクセス規定情報を記憶部に記憶し、
前記正系制御装置から前記コネクションの解放が通知されると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する、
ことを特徴とする制御方法。
【請求項７】
正系制御装置と副系制御装置とを備えたデータベースシステムであって、
前記正系制御装置は、
データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報の生成に応じて、生成された前記アクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを、前記副系制御装置に送信する送信部と、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放に応じて、該コネクションの解放を前記副系制御装置に通知する通知部と
を有し、
前記副系制御装置は、
前記正系制御装置から送信された前記アクセス規定情報を記憶部に記憶させる記憶処理部と、
前記正系制御装置から前記コネクションの解放が通知されると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する消去部と
を有することを特徴とするデータベースシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重化データベースシステムにおける制御技術に関する。
【背景技術】
【０００２】
データベース管理システムを用いたデータベースでは、例えばデータベース管理システムにおいて、アプリケーションモジュールからＳＱＬ文形式のアクセス要求を受け付け、受け付けたアクセス要求に応じて、データベースにおけるアクセスの処理を規定したアクセスプランを生成し、生成されたアクセスプランを実行する。
【０００３】
また、データベース管理システムは、アプリケーションモジュールとのコネクションが存在している間、アクセスプランをキャッシュ領域に保持しておくことによって、アクセスプランの再生成を省き、アクセス要求に対する応答時間を短くしている。
【０００４】
一方、可用性を担保するために、複数の制御装置を設けた多重化データベースシステムもある。多重化データベースシステムでは、正系制御装置が停止したときには、待機していた副系制御装置が新たな正系制御装置として処理を受け継ぐ。新たな正系制御装置として処理を受け継いだときの性能を良くしようとすると、副系制御装置において予め記憶領域に記憶しておくデータ量は大きくなり易い。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２３３５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、一側面では、副系制御装置においてアクセス規定情報を記憶する記憶領域の枯渇を抑止することである。
【課題を解決するための手段】
【０００７】
一態様に係る制御方法は、データベースへのアクセスを制御する正系制御装置の待機系である副系制御装置において、データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報と、該アクセス規定情報に対応するデータベースへの問合せ文とを正系制御装置から受信して記憶部に記憶し、正系制御装置と該正系制御装置を介してデータベースにアクセスする端末装置との間の、問合せ文に基づくアクセスのコネクション解放の通知を正系制御装置から受信すると、上記記憶部に記憶された、解放されたコネクションに対応するアクセス規定情報を消去する処理を含む。
【０００８】
一態様に係る制御方法は、正系制御装置と副系制御装置とを備えたデータベースシステムの制御方法であって、（Ａ）正系制御装置が、データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報の生成に応じて、生成されたアクセス規定情報と、該アクセス規定情報に対応するデータベースへの問合せ文とを、副系制御装置に送信し、正系制御装置と該正系制御装置を介してデータベースにアクセスする端末装置との間の、問合せ文に基づくアクセスのコネクション解放に応じて、該コネクションの解放を副系制御装置に通知し、（Ｂ）副系制御装置が、正系制御装置から送信されたアクセス規定情報を記憶部に記憶し、正系制御装置からコネクションの解放が通知されると、上記記憶部に記憶された、解放されたコネクションに対応するアクセス規定情報を消去する処理を含む。
【発明の効果】
【０００９】
一側面としては、副系制御装置においてアクセス規定情報を記憶する記憶領域の枯渇を抑止することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、ネットワーク構成の第１例を示す図である。
【図２】図２は、ネットワーク構成の第２例を示す図である。
【図３】図３は、実施の形態１に係るシーケンスの例を示す図である。
【図４】図４は、実施の形態１に係るシーケンスの例を示す図である。
【図５】図５は、実施の形態１に係るシーケンスの例を示す図である。
【図６】図６は、正系ノードにおけるデータベース管理システムのモジュール構成例を示す図である。
【図７】図７は、キャッシュ領域のテーブル構成例を示す図である。
【図８】図８は、副系ノードにおけるデータベース管理システムのモジュール構成例を示す図である。
【図９】図９は、実施の形態１に係る保存領域の例を示す図である。
【図１０】図１０は、主系処理部のメイン処理フローを示す図である。
【図１１】図１１は、主系処理部のメイン処理フローを示す図である。
【図１２】図１２は、接続処理フローを示す図である。
【図１３】図１３は、抽出処理（Ａ）フローを示す図である。
【図１４】図１４は、保存処理フローを示す図である。
【図１５】図１５は、切断処理（Ａ）フローを示す図である。
【図１６】図１６は、副系処理部のメイン処理フローを示す図である。
【図１７】図１７は、記憶処理（Ａ）フローを示す図である。
【図１８】図１８は、消去処理（Ａ）フローを示す図である。
【図１９】図１９は、新たな正系ノードにおけるデータベース管理システムのモジュール構成例を示す図である。
【図２０】図２０は、抽出処理（Ｂ）フローを示す図である。
【図２１】図２１は、実施の形態２に係るシーケンスの例を示す図である。
【図２２】図２２は、実施の形態２に係るシーケンスの例を示す図である。
【図２３】図２３は、実施の形態２に係る保存領域の例を示す図である。
【図２４】図２４は、抽出処理（Ｃ）フローを示す図である。
【図２５】図２５は、切断処理（Ｂ）フローを示す図である。
【図２６】図２６は、記憶処理（Ｂ）フローを示す図である。
【図２７】図２７は、消去処理（Ｂ）フローを示す図である。
【図２８】図２８は、調整処理フローを示す図である。
【図２９】図２９は、実施の形態４に係るシーケンスの例を示す図である。
【図３０】図３０は、実施の形態４に係るシーケンスの例を示す図である。
【図３１】図３１は、実施の形態４に係る保存領域の例を示す図である。
【図３２】図３２は、記憶処理（Ｃ）フローを示す図である。
【図３３】図３３は、消去処理（Ｃ）フローを示す図である。
【図３４】図３４は、統計処理フローを示す図である。
【図３５】図３５は、待機処理フローを示す図である。
【図３６】図３６は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
本実施の形態では、正系ノード１０３におけるコネクションの解放に合わせて、副系ノード１０７において一括して当該コネクションに係るアクセスプランを一括して消去する例について説明する。
【００１２】
図１に、ネットワーク構成の第１例を示す。本実施の形態におけるデータベースシステムは、ミラーリングによって二重化されている。この観点から、図示したデータベースシステムは、二重化データベースシステムと呼ばれることもある。データベースシステムは、正系のデータベース１０１を稼動させている正系ノード１０３と、副系のデータベース１０５を稼動させている副系ノード１０７とを含む。そして、正系ノード１０３と副系ノード１０７とは、ＬＡＮ（Local Area Network）を介して接続されている。
【００１３】
正系のデータベース１０１は、現用のデータベースである。副系のデータベース１０５は、待機中のデータベースである。正系ノード１０３に異常が発生したときには、副系のデータベース１０５が正系のデータベース１０１における稼動状態を引き継ぐので、データベースシステムとしての運用が継続されるようになっている。つまり、ノードの切り替えによって、図１に示した副系のデータベース１０５は、新たな正系のデータベースになる。
【００１４】
また、ＬＡＮには、アプリケーション部１１１ａを有するアプリケーションサーバ１１３ａと、アプリケーション部１１１ｂを有するアプリケーションサーバ１１３ｂとが接続されている。アプリケーション部１１１ａ及びアプリケーション部１１１ｂは、データベースを利用するプログラムモジュールの例である。アプリケーション部１１１ａ及びアプリケーション部１１１ｂが、ユーザの業務においてデータベースを操作するアプリケーションである場合には、業務アプリケーション部と呼ばれることもある。
【００１５】
正系のデータベース１０１は、データベース管理システム１２１とデータ記憶部１２３とを有している。データベース管理システム１２１とデータ記憶部１２３との間では、例えば内部のバスを介してデータが伝送される。一方、副系のデータベース１０５は、データベース管理システム１３１とデータ記憶部１３３とを有している。データベース管理システム１３１とデータ記憶部１３３との間では、例えば内部のバスを介してデータが伝送される。この例で、正系のデータベース１０１及び副系のデータベース１０５は、リレーショナル型データベースである。
【００１６】
データベース管理システム１２１は、データ記憶部１２３に格納されているデータを管理するとともに、データベースへのアクセス要求を受け付け、そのアクセス要求に応える処理を行なう。
【００１７】
データ記憶部１２３に格納されるデータは、共有データということもある。データ記憶部１２３に格納されるデータは、例えばテーブルの構造を定義するデータ及びテーブルの実体データを含む。
【００１８】
データベース管理システム１３１は、データベース管理システム１２１の代替の役割を果たすために、データベース管理システム１２１と同様の処理能力を有する。更に、データベース管理システム１３１は、待機中における処理も行なう。また、データ記憶部１３３に格納されているデータは、データ記憶部１２３に格納されているデータと同期している。つまり、図１の例では、データベースシステムにおけるデータ記憶部は、データ記憶部１２３及びデータ記憶部１３３で二重化されている。
【００１９】
図２に、ネットワーク構成の第２例を示す。データベースシステムは、データベース管理システム１２１を稼動させている正系ノード１０３と、データベース管理システム１３１を稼動させている副系ノード１０７とを含む。そして、正系ノード１０３と副系ノード１０７とは、ＬＡＮを介して接続されている。
【００２０】
更に、データベースシステムは、データ記憶部２０１を有するストレージ装置２０３を有している。ストレージ装置２０３は、ＬＡＮを介して正系ノード１０３と副系ノード１０７とに接続されている。データベース管理システム１２１とデータ記憶部２０１とによって、図１における正系のデータベース１０１と同様に現用のデータベースとしての機能を果たす。そして、正系ノード１０３に異常が発生したときには、データベース管理システム１３１がデータベース管理システム１２１に代わって処理を受け継ぐ。そして、データベース管理システム１３１とデータ記憶部２０１とによって、図１における副系のデータベース１０５と同様に待機中のデータベースとしての機能を果たす。
【００２１】
このように、図２に示した例では、データベース管理システムは、データベース管理システム１２１及びデータベース管理システム１３１で二重化されているが、データ記憶部２０１は二重化されていない。
【００２２】
また、図１の場合と同様に、ＬＡＮには、アプリケーション部１１１ａを有するアプリケーションサーバ１１３ａと、アプリケーション部１１１ｂを有するアプリケーションサーバ１１３ｂとが接続されている。
【００２３】
尚、図１及び図２では、二重化されたデータベースの例を示したが、三重以上に多重化されたデータベースに本実施の形態を適用するようにしてもよい。
【００２４】
続いて、シーケンスの例について説明する。図３に、実施の形態１に係るシーケンスの例を示す。この例は、アプリケーションサーバ１１３ａのアプリケーション部１１１ａによる業務において、正系ノード１０３及び副系ノード１０７を有する二重化データベースシステムを利用することを想定している。
【００２５】
アプリケーションサーバ１１３ａのアプリケーション部１１１ａから正系ノード１０３のデータベース管理システム１２１へのアクセス要求、及びアプリケーションサーバ１１３ａのアプリケーション部１１１ａから副系ノード１０７のデータベース管理システム１３１へのアクセス要求は、例えばＳＱＬ文の形式で記述される。但し、ＳＱＬ以外のデータベース言語を用いた問合せ文によってデータベースへのアクセスを要求するようにしてもよい。また、この例におけるシーケンスは、ＳＱＬの仕様に基づく。
【００２６】
アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、最初にＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３０１）。ＣＯＮＮＥＣＴ文は、データベースシステムへの接続を要求するためのＳＱＬ文である。
【００２７】
正系ノード１０３のデータベース管理システム１２１は、ＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ａのアプリケーション部１１１ａとのコネクションを確立させる（Ｓ３０３）。このとき、確立されたコネクションを識別するためのコネクションＩＤが割り振られる。そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ３０５）。
【００２８】
コネクションが確立している状態で、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、ＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３０７）。このＳＥＬＥＣＴ文（Ａ）は、Ｓ３０３で確立されたコネクションを前提としている。この例で、ＳＥＬＥＣＴ文（Ａ）は、タイプＡのＳＥＬＥＣＴ文を意味する。
【００２９】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ３０９）。このとき、ＳＥＬＥＣＴ文（Ａ）に基づくアクセスプラン（Ａ）が生成され、生成されたアクセスプラン（Ａ）が実行される。
【００３０】
アクセスプランは、データベースで管理されているデータ（例えば、テーブル）へのアクセスにおける処理の実行内容を規定した情報である。アクセスプランは、ＳＱＬ文による要求を達成するための演算の内容と手順を定めている。演算は、例えばテーブルスキャン、インデックススキャン、レコードＩＤによるデータの抽出あるいはソートなどである。
【００３１】
生成されたアクセスプラン（Ａ）が実行された結果、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、生成されたアクセスプラン（Ａ）を正系ノード１０３のデータベース管理システム１２１内のキャッシュ領域に一時的に記憶する。そして、正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ３１１）。この例で、データ（Ａ）は、ＳＥＬＥＣＴ文（Ａ）に基づいて抽出されたデータを意味する。
【００３２】
また、Ｓ３０９に示したデータの抽出において、正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）、アクセスプラン（Ａ）及びＳ３０３で割り振られたコネクションＩＤを含む保存データを生成し、生成された保存データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ３１３）。このとき保存データに加えられたコネクションＩＤは、ＳＥＬＥＣＴ文（Ａ）の前提となっているコネクションを特定する。
【００３３】
副系ノード１０７のデータベース管理システム１３１は、保存データを受信すると、保存データに含まれるアクセスプランと当該アクセスプランに付随するデータを保存する（Ｓ３１５）。本実施の形態では、このように正系ノード１０３のデータベース管理システム１２１で生成されたアクセスプランと当該アクセスプランに付随するデータが副系ノード１０７のデータベース管理システム１３１に送られ、副系ノード１０７のデータベース管理システム１３１で保存される。
【００３４】
更に、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、ＳＥＬＥＣＴ文（Ａ）に続くアクセス要求として、ＳＥＬＥＣＴ文（Ｂ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３１７）。このＳＥＬＥＣＴ文（Ｂ）も、Ｓ３０３で確立されたコネクションを前提としている。この例で、ＳＥＬＥＣＴ文（Ｂ）は、タイプＡとは異なるタイプＢのＳＥＬＥＣＴ文を意味する。
【００３５】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ｂ）を受け付けると、ＳＥＬＥＣＴ文（Ｂ）に従って、データを抽出する（Ｓ３１９）。このとき、ＳＥＬＥＣＴ文（Ｂ）に基づくアクセスプラン（Ｂ）が生成され、生成されたアクセスプラン（Ｂ）が実行される。その結果、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。このとき、正系ノード１０３のデータベース管理システム１２１は、生成されたアクセスプラン（Ｂ）を正系ノード１０３のデータベース管理システム１２１内のキャッシュ領域に一時的に記憶する。そして、正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ｂ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ３２１）。この例で、データ（Ｂ）は、ＳＥＬＥＣＴ文（Ｂ）に基づいて抽出されたデータを意味する。
【００３６】
また、Ｓ３１９に示したデータの抽出において、正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ｂ）、アクセスプラン（Ｂ）及びＳ３０３で割り振られたコネクションＩＤを含む保存データを生成し、生成された保存データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ３２３）。このとき保存データに加えられたコネクションＩＤは、ＳＥＬＥＣＴ文（Ｂ）の前提となっているコネクションを特定する。
【００３７】
副系ノード１０７のデータベース管理システム１３１は、保存データを受信すると、保存データに含まれるアクセスプランと当該アクセスプランに付随するデータを保存する（Ｓ３２５）。上述したアクセスプラン（Ａ）に加えて、アクセスプラン（Ｂ）も保存される。このように、正系ノード１０３のデータベース管理システム１２１は、新たなＳＱＬ文に対しては、アクセスプランを生成するとともに、生成されたアクセスプランを副系ノード１０７のデータベース管理システム１３１に送る。副系ノード１０７のデータベース管理システム１３１は、受信したアクセスプランを蓄積する。
【００３８】
そして、同じＳＱＬ文を再び受け付けた場合のシーケンスに移る。アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、ＳＥＬＥＣＴ文（Ｂ）に続くアクセス要求として、再びＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３２７）。Ｓ３２７において送られるＳＥＬＥＣＴ文（Ａ）は、Ｓ３０７において送られたＳＥＬＥＣＴ文（Ａ）と同じである。再び送られるＳＥＬＥＣＴ文（Ａ）も、Ｓ３０３で確立されたコネクションを前提としている。
【００３９】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ３２９）。このとき、Ｓ３０９において生成されたアクセスプラン（Ａ）がキャッシュ領域から読み出され、読み出されたアクセスプラン（Ａ）が実行される。つまり、ＳＥＬＥＣＴ文（Ａ）に基づいてアクセスプラン（Ａ）を生成する処理は、省かれる。そして、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ３３１）。
【００４０】
この例では、Ｓ３０９からＳ３２９の間に、データベースにおける実データが更新されていないという前提で、Ｓ３０９で抽出されたデータ（Ａ）が再びＳ３２９で抽出される様子を示している。尚、データベースにおける実データが更新されていれば、同じアクセスプランを実行しても、異なるデータが抽出されることがある。
【００４１】
端子Ａ、端子Ｂ及び端子Ｃを介して、図４に示したシーケンスへ移る。Ｓ３０３で確立されたコネクションを前提とした一連のアクセスが終わると、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、ＤＩＳＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ４０１）。ＤＩＳＣＯＮＮＥＣＴ文は、データベースシステムとの接続を切断させるためのＳＱＬ文である。
【００４２】
正系ノード１０３のデータベース管理システム１２１は、ＤＩＳＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ａのアプリケーション部１１１ａとのコネクションを解放する（Ｓ４０３）。このとき、解放されたコネクションを前提として受け付けたＳＱＬ文に基づくアクセスプランを、キャッシュ領域から消去する。
【００４３】
そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ４０５）。
【００４４】
正系ノード１０３のデータベース管理システム１２１は、Ｓ４０３に示したコネクションの解放において、解放されたコネクションを特定するコネクションＩＤを含む通知データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ４０７）。
【００４５】
副系ノード１０７のデータベース管理システム１３１は、通知データを受信すると、自ら保存したアクセスプランの中から、通知データに含まれるコネクションＩＤに対応付けられているアクセスプランを探索する。そして探索されたアクセスプランと当該アクセスプランに付随するデータを消去する（Ｓ４０９）。
【００４６】
本実施の形態では、正系ノード１０３のデータベース管理システム１２１内のキャッシュ領域におけるアクセスプランが消去されるタイミングで、副系ノード１０７のデータベース管理システム１３１において保存されている同じアクセスプランも消去される。従って、副系ノード１０７のデータベース管理システム１３１におけるアクセスプランの蓄積量が、一方的に増加し続けることが抑制される。
【００４７】
図４の例は、コネクションの解放までにノードの切り替えが起こらないことを想定している。次に、コネクションの解放に至る前にノードの切り替えが起こる場合のシーケンスについて説明する。
【００４８】
図５に、端子Ａ、端子Ｂ及び端子Ｃを介して図３から続くシーケンスの例を示す。正系ノード１０３のデータベース管理システム１２１が停止すると、ノードの切り替えが行なわれる（Ｓ５０１）。例えば、アプリケーションサーバ１１３ａのアプリケーション部１１１ａから正系ノード１０３のデータベース管理システム１２１へのアクセス要求に対して、所定時間内に正系ノード１０３のデータベース管理システム１２１から応答が無い場合に、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは正系ノード１０３のデータベース管理システム１２１が停止したと判断する。そして、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは副系ノード１０７のデータベース管理システム１３１にＣＯＮＮＥＣＴ文を送り、アプリケーションサーバ１１３ａのアプリケーション部１１１ａと副系ノード１０７のデータベース管理システム１３１との間の新たなコネクションが確立される。ノードが切り替えられると、副系ノード１０７が新たな正系ノードとなる。また、図１の例で、副系ノード１０７における副系のデータベース１０５が、新たな正系のデータベースとなる。つまり、新たな正系ノードで稼動する新たな正系のデータベースは、図１に示したデータベース管理システム１３１とデータ記憶部１３３によって実現されることになる。そして、データベース管理システム１３１は、データベース管理システム１２１における処理を受け継ぐ。
【００４９】
ノードの切り替え後に、アプリケーションサーバ１１３ａのアプリケーション部１１１ａが、再びＳＥＬＥＣＴ文（Ａ）を新たな正系ノードのデータベース管理システム１３１へ送ると想定する（Ｓ５０３）。Ｓ５０３において送られるＳＥＬＥＣＴ文（Ａ）は、図３のＳ３０７及びＳ３２７において送られたＳＥＬＥＣＴ文（Ａ）と同じである。
【００５０】
新たな正系ノードのデータベース管理システム１３１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ５０５）。このとき、図３のＳ３１５において保存されたアクセスプラン（Ａ）が実行される。つまり、ＳＥＬＥＣＴ文（Ａ）に基づいてアクセスプラン（Ａ）を生成する処理は、省かれる。そして、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。新たな正系ノードのデータベース管理システム１３１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ５０７）。
【００５１】
この例では、Ｓ３０９からＳ５０５の間に、データベースにおける実データが更新されていないという前提で、Ｓ３０９及びＳ３２９で抽出されたデータ（Ａ）が再びＳ５０５で抽出される様子を示している。
【００５２】
ＳＥＬＥＣＴ文（Ｂ）についてもＳＥＬＥＣＴ文（Ａ）と同様のシーケンスとなる。例えば、ＳＥＬＥＣＴ文（Ａ）に続くアクセス要求として、アプリケーションサーバ１１３ａのアプリケーション部１１１ａがＳＥＬＥＣＴ文（Ｂ）を新たな正系ノードのデータベース管理システム１３１へ送ると想定する（Ｓ５０９）。Ｓ５０９において送られるＳＥＬＥＣＴ文（Ｂ）は、図３のＳ３１７において送られたＳＥＬＥＣＴ文（Ｂ）と同じである。
【００５３】
新たな正系ノードのデータベース管理システム１３１は、ＳＥＬＥＣＴ文（Ｂ）を受け付けると、ＳＥＬＥＣＴ文（Ｂ）に従って、データを抽出する（Ｓ５１１）。このとき、図３のＳ３２５において保存されたアクセスプラン（Ｂ）が実行される。つまり、ＳＥＬＥＣＴ文（Ｂ）に基づいてアクセスプラン（Ｂ）を生成する処理は、省かれる。そして、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。新たな正系ノードのデータベース管理システム１３１は、抽出されたデータ（Ｂ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ５１３）。
【００５４】
このように、副系ノード１０７のデータベース管理システム１３１において予め保存しておいたアクセスプランを用いれば、ノードの切り替え後においてアクセスプランを生成する処理が省かれ、処理時間が短くなる。
【００５５】
図３乃至図５に示したシーケンスの例では、コネクションを前提とするアクセス要求の例として、ＳＥＬＥＣＴ文を示したが、コネクションを前提とするアクセス要求は、ＩＮＳＥＲＴ文、ＤＥＬＥＴＥ文、あるいはＵＰＤＡＴＥ文などの他のＳＱＬ文であってもよい。ＩＮＳＥＲＴ文、ＤＥＬＥＴＥ文、あるいはＵＰＤＡＴＥ文においても、ＳＥＬＥＣＴ文の場合と同様に、アクセスプランと当該アクセスプランに付随するデータが処理される。
【００５６】
つまり、正系ノード１０３のデータベース管理システム１２１が新たなＩＮＳＥＲＴ文を受け付けた場合には、正系ノード１０３のデータベース管理システム１２１は、受け付けたＩＮＳＥＲＴ文に基づくアクセスプランを生成し、生成されたアクセスプランを実行することによって、テーブルへのレコードの挿入を行う。そして、正系ノード１０３のデータベース管理システム１２１は、当該ＩＮＳＥＲＴ文、当該アクセスプラン及び前提となっているコネクションを特定するコネクションＩＤを含む保存データを、副系ノード１０７のデータベース管理システム１３１へ送る。副系ノード１０７のデータベース管理システム１３１は、保存データに含まれる当該アクセスプランと当該アクセスプランに付随するデータを保存する。
【００５７】
同様に、正系ノード１０３のデータベース管理システム１２１が新たなＤＥＬＥＴＥ文を受け付けた場合には、正系ノード１０３のデータベース管理システム１２１は、受け付けたＤＥＬＥＴＥ文に基づくアクセスプランを生成し、生成されたアクセスプランを実行することによって、テーブルにおけるレコードの削除を行う。そして、正系ノード１０３のデータベース管理システム１２１は、当該ＤＥＬＥＴＥ文、当該アクセスプラン及び前提となっているコネクションを特定するコネクションＩＤを含む保存データを、副系ノード１０７のデータベース管理システム１３１へ送る。副系ノード１０７のデータベース管理システム１３１は、保存データに含まれる当該アクセスプランと当該アクセスプランに付随するデータを保存する。
【００５８】
同様に、正系ノード１０３のデータベース管理システム１２１が新たなＵＰＤＡＴＥ文を受け付けた場合には、正系ノード１０３のデータベース管理システム１２１は、受け付けたＵＰＤＡＴＥ文に基づくアクセスプランを生成し、生成されたアクセスプランを実行することによって、テーブルにおけるレコードの更新を行う。そして、正系ノード１０３のデータベース管理システム１２１は、当該ＵＰＤＡＴＥ文、当該アクセスプラン及び前提となっているコネクションを特定するコネクションＩＤを含む保存データを、副系ノード１０７のデータベース管理システム１３１へ送る。副系ノード１０７のデータベース管理システム１３１は、保存データに含まれる当該アクセスプランと当該アクセスプランに付随するデータを保存する。
【００５９】
そして、ＳＥＬＥＣＴ文に基づくアクセスプランを消去するのと同じように、副系ノード１０７のデータベース管理システム１３１は、ＩＮＳＥＲＴ文に基づくアクセスプラン、ＤＥＬＥＴＥ文に基づくアクセスプラン及びＵＰＤＡＴＥ文に基づくアクセスプランを消去する。
【００６０】
また、ノードの切り替え後の新たな正系ノードのデータベース管理システム１３１は、ＳＥＬＥＣＴ文を受け付けた場合に、既に保存してあるアクセスプランを用いるのと同様に、ＩＮＳＥＲＴ文、ＤＥＬＥＴＥ文あるいはＵＰＤＡＴＥ文を受け付けた場合に、既に保存してあるアクセスプランを用いる。
【００６１】
次に、正系ノード１０３におけるデータベース管理システム１２１のモジュール構成について説明する。図６に、正系ノード１０３におけるデータベース管理システム１２１のモジュール構成例を示す。データベース管理システム１２１は、主系処理部６０１を有している。主系処理部６０１は、稼動系として、ＳＱＬ文を受け付け、ＳＱＬ文に応じた処理を行なう。主系処理部６０１は、受付部６０３、接続部６０５、第１探索部６０７、生成部６０９、保存処理部６１１、送信部６１３、実行部６１５、返信部６１７、切断部６１９、通知部６２１及び調整部６２３を有している。
【００６２】
受付部６０３は、データベースを利用するプログラムモジュール（例えば、アプリケーションサーバ１１３ａのアプリケーション部１１１ａ）からＳＱＬ文を受け付ける。接続部６０５は、ＣＯＮＮＥＣＴ文の送信元であるプログラムモジュールとのコネクションを確立させる接続処理を行なう。第１探索部６０７は、キャッシュ領域６３３内でアクセスプランを探索する。生成部６０９は、ＳＱＬ文に基づいてアクセスプランを生成する。保存処理部６１１は、生成されたアクセスプランをキャッシュ領域６３３に保存する。送信部６１３は、データを副系ノード１０７のデータベース管理システム１３１へ送信する。実行部６１５は、アクセスプランを実行する。返信部６１７は、アクセスプランを実行した結果を、ＳＱＬ文の送信元へ返信する。切断部６１９は、ＤＩＳＣＯＮＮＥＣＴ文の送信元であるプログラムモジュールとの間のコネクションを解放させる切断処理を行なう。通知部６２１は、通知データを、副系ノード１０７のデータベース管理システム１３１に送信する。調整部６２３は、記憶領域６３１の空き容量を調整する。
【００６３】
データベース管理システム１２１は、記憶領域６３１を有している。記憶領域６３１は、例えば正系ノード１０３のメインメモリあるいはキャッシュメモリに設けられる。そして、記憶領域６３１には、キャッシュ領域６３３が設けられる。この例では、キャッシュ領域６３３ａ乃至キャッシュ領域６３３ｃが設けられている。キャッシュ領域６３３は、コネクション毎に設けられ、コネクションＩＤに対応付けられている。この例では、キャッシュ領域６３３に、コネクションＩＤを含むヘッダ部が付加されている。
【００６４】
また、データベース管理システム１２１は、統計部６４１、第１データ格納部６４３及び第１同期処理部６４５も有している。統計部６４１は、データベースの利用状況に基づく統計データ（例えばテーブルのページ数、テーブルのレコード数、あるいはインデックスにおけるキー値の数など）を生成する。第１データ格納部６４３は、統計部６４１で生成された統計データを格納する。生成部６０９は、アクセスプランを生成する際に、第１データ格納部６４３に格納されている統計データを用いる。第１同期処理部６４５は、第１データ格納部６４３に格納されている統計データを副系ノード１０７のデータベース管理システム１３１と同期させる処理を行なう。尚、統計部６４１、第１データ格納部６４３及び第１同期処理部６４５については、実施の形態５において説明する。
【００６５】
上述した主系処理部６０１、受付部６０３、接続部６０５、第１探索部６０７、生成部６０９、保存処理部６１１、送信部６１３、実行部６１５、返信部６１７、切断部６１９、通知部６２１、調整部６２３、統計部６４１及び第１同期処理部６４５は、ハードウエア資源（例えば、図３６）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００６６】
上述した記憶領域６３１及び第１データ格納部６４３は、ハードウエア資源（例えば、図３６）を用いて実現される。
【００６７】
図７に、キャッシュ領域６３３のテーブル構成例を示す。キャッシュ領域６３３は、コネクション毎に、当該コネクションにおいて受け付けられたＳＱＬ文と、当該ＳＱＬ文に基づいて生成されたアクセスプランとを対応付けて記憶する。図７に示した例では、キャッシュ領域６３３に第１テーブル７０１及び第２テーブル７０３が含まれている。第１テーブル７０１には、ＳＱＬ文単位のレコードが設けられている。第２テーブル７０３には、アクセスプラン単位のレコードが設けられている。そして、第１テーブル７０１におけるレコードと、第２テーブル７０３におけるレコードとが対応付けられている。
【００６８】
この例では、第１テーブル７０１におけるレコードに、当該レコードに格納されるＳＱＬ文のＩＤと、当該ＳＱＬ文と、当該ＳＱＬ文に対応するアクセスプランのＩＤとを夫々設定するためのフィールドが設けられている。一方、第２テーブル７０３におけるレコードには、当該レコードに格納されるアクセスプランのＩＤと、当該アクセスプランとを夫々設定するためのフィールドが設けられている。例えば、アクセスプランＩＤは、各レコードに順番に割り振られている。このように、アクセスプランＩＤによって、第１テーブル７０１におけるレコードと、第２テーブル７０３におけるレコードとが対応付けられている。尚、この例で第１テーブル７０１は、ＳＱＬ文のハッシュ値をＳＱＬ文ＩＤとするハッシュテーブルである。但し、図７とは異なる構成によって、ＳＱＬ文とアクセスプランとを対応付けるようにしてもよい。
【００６９】
次に、副系ノード１０７におけるデータベース管理システム１３１のモジュール構成について説明する。図８に、副系ノード１０７におけるデータベース管理システム１３１のモジュール構成例を示す。データベース管理システム１３１は、副系処理部８０１を有している。副系処理部８０１は、待機中に、データベース管理システム１２１で生成されたアクセスプランを受け取り、ノードの切り替えに先立って、予めアクセスプランを保持する処理を行なう。副系処理部８０１は、受信部８０３、記憶処理部８０５、消去部８０７及び更新部８０９を有している。
【００７０】
受信部８０３は、正系ノード１０３のデータベース管理システム１２１からデータを受信する。記憶処理部８０５は、保存領域８２３を確保して、確保した保存領域８２３に保存データに含まれるアクセスプラン他を記憶させる。消去部８０７は、保存領域８２３のデータを消去する。更新部８０９は、新しい統計データに基づいてアクセスプランを更新する。
【００７１】
データベース管理システム１３１は、記憶領域８２１を有している。記憶領域８２１は、例えば副系ノード１０７のメインメモリあるいはキャッシュメモリに設けられる。そして、記憶領域８２１には、保存領域８２３が設けられる。この例では、保存領域８２３ａ乃至保存領域８２３ｆが設けられている。保存領域８２３は、保存するアクセスプラン毎に設けられる。そして、保存領域８２３には、アクセスプラン及びアクセスプランに付随するデータが格納される。
【００７２】
データベース管理システム１３１は、第２同期処理部８３１及び第２データ格納部８３３も有している。第２同期処理部８３１は、図６の第１同期処理部６４５を介して、図６の第１データ格納部６４３に格納されている統計データを取得し、第２データ格納部８３３に格納させる。第２データ格納部８３３は、図６の第１データ格納部６４３に格納されている統計データと同じデータを保持する。つまり、図６の第１同期処理部６４５と第２同期処理部８３１との連携によって、図６の第１データ格納部６４３と図８の第２データ格納部８３３は、データの同期が図られる。
【００７３】
上述した副系処理部８０１、受信部８０３、記憶処理部８０５、消去部８０７、更新部８０９及び第２同期処理部８３１は、ハードウエア資源（例えば、図３６）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００７４】
上述した記憶領域８２１及び第２データ格納部８３３は、ハードウエア資源（例えば、図３６）を用いて実現される。
【００７５】
図９に、実施の形態１に係る保存領域８２３の例を示す。この例では、保存領域８２３において、ＳＱＬ文と、アクセスプランと、コネクションＩＤとが対応付けて記憶されている。ＳＱＬ文は、例えばアクセスプランを紐付けるために用いられる。コネクションＩＤは、例えばいずれのコネクションにおいて生成されたアクセスプランであるかを判別するために用いられる。
【００７６】
次に、正系ノード１０３のデータベース管理システム１２１における処理について説明する。図１０に、主系処理部６０１のメイン処理フローを示す。受付部６０３は、待機して、データベースを利用するプログラムモジュール（例えば、アプリケーションサーバ１１３ａのアプリケーション部１１１ａ）からＳＱＬ文を受け付ける（Ｓ１００１）。
【００７７】
まず、受付部６０３は、Ｓ１００１において受け付けたＳＱＬ文がＣＯＮＮＥＣＴ文であるか否かを判定する（Ｓ１００３）。Ｓ１００１において受け付けたＳＱＬ文がＣＯＮＮＥＣＴ文であると判定した場合には、接続部６０５は、接続処理を実行する（Ｓ１００５）。接続処理では、ＣＯＮＮＥＣＴ文の送信元であるプログラムモジュールとのコネクションを確立させる。接続処理については、図１２を用いて後述する。接続処理を終えると、Ｓ１００１へ戻る。
【００７８】
Ｓ１００３において、Ｓ１００１において受け付けたＳＱＬ文がＣＯＮＮＥＣＴ文ではないと判定した場合には、受付部６０３は、当該ＳＱＬ文がＳＥＬＥＣＴ文であるか否かを判定する（Ｓ１００７）。Ｓ１００１において受け付けたＳＱＬ文がＳＥＬＥＣＴ文であると判定した場合には、主系処理部６０１は、抽出処理を実行する（Ｓ１００９）。
【００７９】
但し、ＳＥＬＥＣＴ文の送信元であるプログラムモジュールとの間にコネクションが存在しない場合には、抽出処理は実行されない。抽出処理では、例えば指定されたテーブルにおける指定されたレコードから所望のデータを抽出する。抽出処理については、図１３を用いて後述する。抽出処理を終えると、Ｓ１００１へ戻る。
【００８０】
Ｓ１００７において、Ｓ１００１において受け付けたＳＱＬ文がＳＥＬＥＣＴ文ではないと判定した場合には、受付部６０３は、当該ＳＱＬ文がＩＮＳＥＲＴ文であるか否かを判定する（Ｓ１０１１）。Ｓ１００１において受け付けたＳＱＬ文がＩＮＳＥＲＴ文であると判定した場合には、受付部６０３は、挿入処理を実行する（Ｓ１０１３）。
【００８１】
但し、ＩＮＳＥＲＴ文の送信元であるプログラムモジュールとの間にコネクションが存在しない場合には、挿入処理は実行されない。挿入処理では、例えば指定されたテーブルに指定されたレコードを挿入する。挿入処理については、後に補足的に説明する。挿入処理を終えると、Ｓ１００１へ戻る。
【００８２】
Ｓ１０１１において、Ｓ１００１において受け付けたＳＱＬ文がＩＮＳＥＲＴ文ではないと判定した場合には、受付部６０３は、当該ＳＱＬ文がＤＥＬＥＴＥ文であるか否かを判定する（Ｓ１０１５）。Ｓ１００１において受け付けたＳＱＬ文がＤＥＬＥＴＥ文であると判定した場合には、受付部６０３は、削除処理を実行する（Ｓ１０１７）。
【００８３】
但し、ＤＥＬＥＴＥ文の送信元であるプログラムモジュールとの間にコネクションが存在しない場合には、削除処理は実行されない。削除処理では、例えば指定されたテーブルにおける指定されたレコードを削除する。削除処理については、後に補足的に説明する。削除処理を終えると、Ｓ１００１へ戻る。
【００８４】
Ｓ１０１５において、Ｓ１００１において受け付けたＳＱＬ文がＤＥＬＥＴＥ文ではないと判定した場合には、端子Ｄを介して、図１１のＳ１１０１へ移る。受付部６０３は、図１０のＳ１００１において受け付けたＳＱＬ文がＵＰＤＡＴＥ文であるか否かを判定する（Ｓ１１０１）。図１０のＳ１００１において受け付けたＳＱＬ文がＵＰＤＡＴＥ文であると判定した場合には、主系処理部６０１は、更新処理を実行する（Ｓ１１０３）。但し、ＵＰＤＡＴＥ文の送信元であるプログラムモジュールとの間にコネクションが存在しない場合には、更新処理は実行されない。更新処理では、例えば指定されたテーブルにおける指定されたレコードのデータを更新する。更新処理については、後に補足的に説明する。更新処理を終えると、図１０のＳ１００１へ戻る。
【００８５】
Ｓ１１０１において、図１０のＳ１００１において受け付けたＳＱＬ文がＵＰＤＡＴＥ文ではないと判定した場合には、受付部６０３は、図１０のＳ１００１において受け付けたＳＱＬ文がＤＩＳＣＯＮＮＥＣＴ文であるか否かを判定する（Ｓ１１０５）。図１０のＳ１００１において受け付けたＳＱＬ文がＤＩＳＣＯＮＮＥＣＴ文であると判定した場合には、切断部６１９は、切断処理を実行する（Ｓ１１０７）。但し、ＤＩＳＣＯＮＮＥＣＴ文の送信元であるプログラムモジュールとの間にコネクションが存在しない場合には、切断処理は実行されない。切断処理については、図１５を用いて後述する。切断処理を終えると、図１０のＳ１００１へ戻る。また、Ｓ１１０５において、図１０のＳ１００１において受け付けたＳＱＬ文がＤＩＳＣＯＮＮＥＣＴ文ではないと判定した場合にも、図１０のＳ１００１へ戻る。
【００８６】
次に、接続処理について説明する。ＣＯＮＮＥＣＴ文の送信元であるプログラムモジュールとのコネクションを確立させる点は、従来技術と同様である。以下では、従来技術における処理のうち本実施の形態と関連する処理及び本実施の形態における処理について説明する。図１２に、接続処理フローを示す。接続部６０５は、確立させたコネクションにコネクションＩＤを割り当てる（Ｓ１２０１）。接続部６０５は、記憶領域６３１において当該コネクションに対応するキャッシュ領域６３３を確保する（Ｓ１２０３）。この例では、確保したキャッシュ領域６３３のヘッダ部にコネクションＩＤを設定する。接続部６０５は、「成功」を示すコードを、ＣＯＮＮＥＣＴ文の送信元のプログラムモジュールへ返す（Ｓ１２０５）。
【００８７】
次に、抽出処理について説明する。図１３に、抽出処理（Ａ）フローを示す。第１探索部６０７は、前提となっているコネクションに対応するキャッシュ領域６３３内で、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文（＝ＳＥＬＥＣＴ文）に対応付けられているアクセスプランを探索する（Ｓ１３０１）。第１探索部６０７は、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランがあったか否かを判定する（Ｓ１３０３）。当該コネクションにおいて初めて受け付けたＳＱＬ文については、当該ＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランはない。一方、当該コネクションにおいて既に受け付けたＳＱＬ文については、当該ＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランがある。
【００８８】
図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランがなかったと判定した場合には、生成部６０９は、ＳＱＬ文（＝ＳＥＬＥＣＴ文）を解析して、アクセスプランを生成する（Ｓ１３０５）。このとき、生成部６０９は、第１データ格納部６４３に格納されている統計データに基づいて、アクセスプランを生成する。
【００８９】
そして、保存処理部６１１は、保存処理を実行する（Ｓ１３０７）。保存処理では、前提となっているコネクションに対応するキャッシュ領域６３３に、Ｓ１３０５で生成されたアクセスプランが保存される。
【００９０】
次に、保存処理について説明する。図１４に、保存処理フローを示す。保存処理部６１１は、第２テーブル７０３の空きレコードを探す（Ｓ１４０１）。保存処理部６１１は、空きレコードのアクセスプランＩＤを特定する（Ｓ１４０３）。保存処理部６１１は、Ｓ１３０５で生成されたアクセスプランを空きレコードに格納する（Ｓ１４０５）。保存処理部６１１は、ＳＱＬ文に基づいてＳＱＬ文ＩＤを特定する（Ｓ１４０７）。この例で、保存処理部６１１は、ＳＱＬ文のハッシュ値を算出し、算出されたハッシュ値をＳＱＬ文ＩＤとして用いる。保存処理部６１１は、第１テーブル７０１の空きレコードを特定し（Ｓ１４０９）、ＳＱＬ文ＩＤ、ＳＱＬ文及びアクセスプランＩＤを空きレコードに格納する（Ｓ１４１１）。保存処理を終えると、図１３に示したＳ１３０９の処理に戻る。
【００９１】
図１３の説明に戻る。送信部６１３は、ＳＱＬ文（＝ＳＥＬＥＣＴ文）、アクセスプラン及びコネクションＩＤを含む保存データを送信する（Ｓ１３０９）。そして、実行部６１５は、アクセスプランを実行する（Ｓ１３１１）。返信部６１７は、アクセスプランを実行した結果として抽出されたデータを、ＳＱＬ文の送信元へ返す（Ｓ１３１３）。
【００９２】
また、Ｓ１３０３において、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランがあったと判定した場合には、Ｓ１３１１の処理に移る。以上で、抽出処理（Ａ）についての説明を終える。
【００９３】
尚、図１０に示したＳ１０１３における挿入処理では、ＳＱＬ文がＩＮＳＥＲＴ文であり、図１３に示した抽出処理（Ａ）と同様の手順でＩＮＳＥＲＴ文に基づくアクセスプランを生成する。そして、送信部６１３は、当該アクセスプランを保存データに含め、実行部６１５は、当該アクセスプランを実行する。但し、抽出処理（Ａ）におけるＳ１３１３の処理は、行わない。
【００９４】
図１０に示したＳ１０１７における削除処理では、ＳＱＬ文がＤＥＬＥＴＥ文であり、図１３に示した抽出処理（Ａ）と同様の手順でＤＥＬＥＴＥ文に基づくアクセスプランを生成する。そして、送信部６１３は、当該アクセスプランを保存データに含め、実行部６１５は、当該アクセスプランを実行する。但し、抽出処理（Ａ）におけるＳ１３１３の処理は、行わない。
【００９５】
図１１に示したＳ１１０３における更新処理では、ＳＱＬ文がＵＰＤＡＴＥ文であり、図１３に示した抽出処理（Ａ）と同様の手順でＵＰＤＡＴＥ文に基づくアクセスプランを生成する。そして、送信部６１３は、当該アクセスプランを保存データに含め、実行部６１５は、当該アクセスプランを実行する。但し、抽出処理（Ａ）におけるＳ１３１３の処理は、行わない。
【００９６】
次に、切断処理について説明する。ＤＩＳＣＯＮＮＥＣＴ文の送信元であるプログラムモジュールとのコネクションを解放させる点は、従来技術と同様である。以下では、従来技術における処理のうち本実施の形態と関連する処理及び本実施の形態における処理について説明する。
【００９７】
図１５に、切断処理（Ａ）フローを示す。切断部６１９は、解放させたコネクションのＩＤを無効にする（Ｓ１５０１）。切断部６１９は、解放させたコネクションのＩＤがヘッダ部に設定されているキャッシュ領域６３３を特定し、当該キャッシュ領域６３３を解放する（Ｓ１５０３）。つまり、当該キャッシュ領域６３３のデータは消去される。通知部６２１は、解放させたコネクションのＩＤを含む通知データを、副系ノード１０７のデータベース管理システム１３１に送信する（Ｓ１５０５）。切断部６１９は、「成功」を示すコードを、ＤＩＳＣＯＮＮＥＣＴ文の送信元のプログラムモジュールへ返す（Ｓ１５０７）。
【００９８】
続いて、副系ノード１０７のデータベース管理システム１３１における処理について説明する。図１６に、副系処理部８０１のメイン処理フローを示す。受信部８０３は、待機して、正系ノード１０３のデータベース管理システム１２１からデータを受信する（Ｓ１６０１）。記憶処理部８０５は、受信したデータが保存データであるか否かを判定する（Ｓ１６０３）。受信したデータが保存データであると判定した場合には、記憶処理部８０５は、記憶処理を実行する（Ｓ１６０５）。
【００９９】
図１７に、記憶処理（Ａ）フローを示す。記憶処理部８０５は、記憶領域８２１に新たな保存領域８２３を確保する（Ｓ１７０１）。記憶処理部８０５は、保存データに含まれるＳＱＬ文、アクセスプラン及びコネクションＩＤを新たな保存領域８２３に記憶させる（Ｓ１７０３）。記憶処理を終えると、図１６のＳ１６０１へ戻る。
【０１００】
図１６の説明に戻って、Ｓ１６０３において、Ｓ１６０１において受信したデータが保存データではないと判定した場合には、消去部８０７は、Ｓ１６０１において受信したデータが通知データであるか否かを判定する（Ｓ１６０７）。Ｓ１６０１において受信したデータが通知データであると判定した場合には、消去部８０７は、消去処理を実行する（Ｓ１６０９）。
【０１０１】
図１８に、消去処理（Ａ）フローを示す。消去部８０７は、通知データに含まれるコネクションＩＤと同じコネクションＩＤがヘッダ部に設定されている保存領域８２３を１つ特定する（Ｓ１８０１）。消去部８０７は、特定された保存領域８２３を解放する（Ｓ１８０３）。つまり、保存領域８２３のデータは消去される。消去部８０７は、通知データに含まれるコネクションＩＤと同じコネクションＩＤがヘッダ部に設定されている保存領域８２３であって、未特定の保存領域８２３があるか否かを判定する（Ｓ１８０５）。未特定の保存領域８２３があると判定した場合には、Ｓ１８０１に戻る。一方、未特定の保存領域８２３がないと判定した場合には、消去処理（Ａ）を終え、図１６のＳ１６０１へ戻る。
【０１０２】
図１６の説明に戻って、Ｓ１６０７において、消去部８０７は、Ｓ１６０１において受信したデータが通知データではないと判定した場合には、Ｓ１６０１に戻る。
【０１０３】
次に、ノードの切り替えによって、副系ノード１０７から移行した新たな正系ノードについて説明する。図１９に、新たな正系ノードにおけるデータベース管理システム１３１のモジュール構成例を示す。受継ぎ処理部１９０１は、ノードが切り替えに応じて、旧正系ノードの主系処理部６０１から処理を受け継ぐ。そして、受継ぎ処理部１９０１は、記憶領域８２１の保存領域８２３に格納されているアクセスプランを用いて、ＳＱＬ文に応じた処理を行なう。受継ぎ処理部１９０１は、受付部６０３、接続部６０５、第１探索部６０７、生成部６０９、保存処理部６１１、実行部６１５、返信部６１７、切断部６１９及び第２探索部１９０３を有している。受付部６０３、接続部６０５、第１探索部６０７、生成部６０９、保存処理部６１１、実行部６１５、返信部６１７及び切断部６１９は、図６に示した主系処理部６０１に含まれるモジュールと同様である。
【０１０４】
第２探索部１９０３は、受付部６０３で受け付けたＳＱＬ文と同じＳＱＬ文を有する保存領域８２３を探す。
【０１０５】
記憶領域８２１には、図６の記憶領域６３１と同様に、キャッシュ領域６３３が設けられる。キャッシュ領域６３３の構成は、図７に示した通りである。
【０１０６】
上述した受継ぎ処理部１９０１、受付部６０３、接続部６０５、第１探索部６０７、生成部６０９、保存処理部６１１、実行部６１５、返信部６１７、切断部６１９及び第２探索部１９０３は、ハードウエア資源（例えば、図３６）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【０１０７】
続いて、受継ぎ処理部１９０１における処理について説明する。ノードの切り替えによって、新たな正系ノードのデータベース管理システム１３１とＳＱＬ文の送信元のプログラムモジュールとの間においてコネクションが確立し、当該コネクションのＩＤが割り当てられていると想定する。受継ぎ処理部１９０１におけるメイン処理は、図１０に示した主系処理部６０１のメイン処理と同じである。以下、主系処理部６０１における処理と異なる点について、抽出処理を例として説明する。
【０１０８】
受継ぎ処理部１９０１は、図１３に示した抽出処理（Ａ）に代えて、抽出処理（Ｂ）を実行する。図２０に、抽出処理（Ｂ）フローを示す。抽出処理（Ａ）の場合と同様に、第１探索部６０７は、前提となっているコネクションに対応するキャッシュ領域６３３内で、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文（＝ＳＥＬＥＣＴ文）に対応付けられているアクセスプランを探索する（Ｓ２００１）。抽出処理（Ａ）の場合と同様に、第１探索部６０７は、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランがあったか否かを判定する（Ｓ２００３）。
【０１０９】
図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランがあったと判定した場合には、実行部６１５は、当該アクセスプランを実行する（Ｓ２０１５）。そして、返信部６１７は、アクセスプランを実行した結果として抽出されたデータを、ＳＱＬ文の送信元へ返す（Ｓ２０１７）。
【０１１０】
一方、Ｓ２００３において、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文に対応付けられているアクセスプランがなかったと判定した場合には、第２探索部１９０３は、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文（＝ＳＥＬＥＣＴ文）を有する保存領域８２３を探す（Ｓ２００５）。第２探索部１９０３は、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文（＝ＳＥＬＥＣＴ文）を有する保存領域８２３があったか否かを判定する（Ｓ２００７）。
【０１１１】
図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文（＝ＳＥＬＥＣＴ文）を有する保存領域８２３があったと判定した場合には、第２探索部１９０３は、当該保存領域８２３に含まれるアクセスプランを読み出す（Ｓ２００９）。つまり、第２探索部１９０３は、Ｓ１００１で受け付けたＳＱＬ文に対応付けられているアクセスプランを読み出す。
【０１１２】
一方、Ｓ２００７において、図１０のＳ１００１で受け付けたＳＱＬ文と同じＳＱＬ文（＝ＳＥＬＥＣＴ文）を有する保存領域８２３がなかったと判定した場合には、生成部６０９は、ＳＱＬ文（＝ＳＥＬＥＣＴ文）を解析して、アクセスプランを生成する（Ｓ２０１１）。
【０１１３】
そして、保存処理部６１１は、抽出処理（Ａ）の場合と同様に、保存処理を実行する（Ｓ２０１３）。保存処理によって、新たに生成されたアクセスプラン及び保存領域８２３から読み出したアクセスプランをキャッシュ領域６３３に記憶させる。そして、実行部６１５は、当該アクセスプランを実行し（Ｓ２０１５）、返信部６１７は、抽出されたデータを返す（Ｓ２０１７）。抽出処理（Ｂ）を終えると、図１０のＳ１００１へ戻る。
【０１１４】
尚、図１０に示したＳ１０１３における挿入処理では、ＳＱＬ文がＩＮＳＥＲＴ文であり、図２０に示した抽出処理（Ｂ）と同様の手順でＩＮＳＥＲＴ文に基づくアクセスプランを生成する。そして、送信部６１３は、当該アクセスプランを保存データに含め、実行部６１５は、当該アクセスプランを実行する。但し、抽出処理（Ｂ）におけるＳ２０１７の処理は、行わない。
【０１１５】
図１０に示したＳ１０１７における削除処理では、ＳＱＬ文がＤＥＬＥＴＥ文であり、図２０に示した抽出処理（Ｂ）と同様の手順でＤＥＬＥＴＥ文に基づくアクセスプランを生成する。そして、送信部６１３は、当該アクセスプランを保存データに含め、実行部６１５は、当該アクセスプランを実行する。但し、抽出処理（Ｂ）におけるＳ２０１７の処理は、行わない。
【０１１６】
図１１に示したＳ１１０３における更新処理では、ＳＱＬ文がＵＰＤＡＴＥ文であり、図２０に示した抽出処理（Ｂ）と同様の手順でＵＰＤＡＴＥ文に基づくアクセスプランを生成する。そして、送信部６１３は、当該アクセスプランを保存データに含め、実行部６１５は、当該アクセスプランを実行する。但し、抽出処理（Ｂ）におけるＳ２０１７の処理は、行わない。
【０１１７】
本実施の形態によれば、副系ノード１０７のデータベース管理システム１３１において、アクセスプランを記憶するための記憶領域８２１における残量不足を予防できる。
【０１１８】
［実施の形態２］
本実施の形態では、同一のＳＱＬ文に対応するアクセスプランについて、副系ノード１０７において重複して記憶しないようにする例について説明する。
【０１１９】
図２１に、実施の形態２に係るシーケンスの例を示す。この例は、アプリケーションサーバ１１３ａのアプリケーション部１１１ａによる業務及びアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂによる業務において、正系ノード１０３及び副系ノード１０７を有する二重化データベースシステムを利用することを想定している。また、この例では、アプリケーションサーバ１１３ａのアプリケーション部１１１ａと正系ノード１０３のデータベース管理システム１２１との間のコネクションと、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂと正系ノード１０３のデータベース管理システム１２１との間のコネクションとが並存する。
【０１２０】
アプリケーションサーバ１１３ａのアプリケーション部１１１ａから正系ノード１０３のデータベース管理システム１２１へのアクセス要求、アプリケーションサーバ１１３ａのアプリケーション部１１１ａから副系ノード１０７のデータベース管理システム１３１へのアクセス要求、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂから正系ノード１０３のデータベース管理システム１２１へのアクセス要求、更にアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂから副系ノード１０７のデータベース管理システム１３１へのアクセス要求は、例えばＳＱＬ文の形式で記述される。但し、ＳＱＬ以外のデータベース言語を用いた問合せ文によってデータベースへのアクセスを要求するようにしてもよい。また、この例におけるシーケンスは、ＳＱＬの仕様に基づく。
【０１２１】
アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、最初にＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２１０１）。
【０１２２】
正系ノード１０３のデータベース管理システム１２１は、ＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ａのアプリケーション部１１１ａとのコネクションを確立させる（Ｓ２１０３）。このとき、確立されたコネクションを識別するためのコネクションＩＤが割り振られる。そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ２１０５）。
【０１２３】
コネクションが確立している状態で、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、ＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２１０７）。このＳＥＬＥＣＴ文（Ａ）は、Ｓ２１０３で確立されたコネクションを前提としている。実施の形態１における例と同様に、ＳＥＬＥＣＴ文（Ａ）は、タイプＡのＳＥＬＥＣＴ文を意味する。
【０１２４】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ２１０９）。このとき、ＳＥＬＥＣＴ文（Ａ）に基づくアクセスプラン（Ａ）が生成され、生成されたアクセスプラン（Ａ）が実行される。その結果、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、生成されたアクセスプラン（Ａ）を正系ノード１０３のデータベース管理システム１２１内のキャッシュ領域６３３に一時的に記憶する。そして、正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ２１１１）。実施の形態１における例と同様に、データ（Ａ）は、ＳＥＬＥＣＴ文（Ａ）に基づいて抽出されたデータを意味する。
【０１２５】
また、Ｓ２１０９に示したデータの抽出において、正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）及びアクセスプラン（Ａ）を含む保存データを生成し、生成された保存データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ２１１３）。
【０１２６】
副系ノード１０７のデータベース管理システム１３１は、保存データを受信すると、保存データに含まれるアクセスプラン（Ａ）が既に保存されているか否かを判断する。この例では、アクセスプラン（Ａ）は未だ保存されていないので、保存データに含まれるアクセスプランと当該アクセスプランに付随するデータを保存する（Ｓ２１１５）。そして、副系ノード１０７のデータベース管理システム１３１は、アクセスプラン（Ａ）の受信回数として「１」を記憶する。尚、副系ノード１０７のデータベース管理システム１３１は、アクセスプラン（Ａ）を特定するための識別データとしてＳＥＬＥＣＴ文（Ａ）を用いる。このように正系ノード１０３のデータベース管理システム１２１で生成されたアクセスプランと当該アクセスプランに付随するデータが副系ノード１０７のデータベース管理システム１３１に送られ、副系ノード１０７のデータベース管理システム１３１で保存される。また、本実施の形態では、当該アクセスプランの受信回数を計数する。
【０１２７】
一方、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂも、最初にＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２１１７）。
【０１２８】
正系ノード１０３のデータベース管理システム１２１は、ＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂとのコネクションを確立させる（Ｓ２１１９）。このとき、確立されたコネクションを識別するためのコネクションＩＤが割り振られる。
【０１２９】
そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ２１２１）。
【０１３０】
次に、コネクションが確立している状態で、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂは、ＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２１２３）。このＳＥＬＥＣＴ文（Ａ）は、Ｓ２１１９で確立されたコネクションを前提としている。
【０１３１】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ２１２５）。このとき、ＳＥＬＥＣＴ文（Ａ）に基づくアクセスプラン（Ａ）が生成され、生成されたアクセスプラン（Ａ）が実行される。その結果、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、生成されたアクセスプラン（Ａ）を正系ノード１０３のデータベース管理システム１２１内のキャッシュ領域６３３に一時的に記憶する。尚、キャッシュ領域６３３は、コネクション毎に設けられる。そして、同じＳＱＬ文であっても、それらが異なるコネクションを前提とする場合には、異なるキャッシュ領域６３３に別々に当該ＳＱＬ文に基づくアクセスプランが保存される。そして、正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ２１２７）。
【０１３２】
また、Ｓ２１２５に示したデータの抽出において、正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）及びアクセスプラン（Ａ）を含む保存データを生成し、生成された保存データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ２１２９）。
【０１３３】
副系ノード１０７のデータベース管理システム１３１は、保存データを受信すると、Ｓ２１１５の場合と同様に、保存データに含まれるアクセスプラン（Ａ）が既に保存されているか否かを判断する。この例では、アクセスプラン（Ａ）は既に保存されているので、アクセスプラン（Ａ）の受信回数をカウントアップして「２」とする（Ｓ２１３１）。このように、副系ノード１０７のデータベース管理システム１３１は、コネクションの異同に関わらず、ＳＱＬ文をキーとして、既に受信しているアクセスプランを改めて受信したと判断した場合には、受信回数をカウントアップする。つまり、副系ノード１０７のデータベース管理システム１３１では、保存されるアクセスプランが重複しないようにする。
【０１３４】
端子Ｆ、端子Ｇ、端子Ｈ及び端子Ｉを介して、図２２に示したシーケンスへ移る。同じＳＱＬ文を再び受け付けた場合のシーケンスは、実施の形態１における例と同様である。アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、再びＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２２０１）。Ｓ２２０１において送られるＳＥＬＥＣＴ文（Ａ）は、図２１のＳ２１０７及びＳ２１２３において送られたＳＥＬＥＣＴ文（Ａ）と同じである。再び送られるＳＥＬＥＣＴ文（Ａ）も、図２１のＳ２１０３で確立されたコネクションを前提としている。
【０１３５】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ２２０３）。このとき、図２１のＳ２１０９において生成されたアクセスプラン（Ａ）がキャッシュ領域６３３から読み出され、読み出されたアクセスプラン（Ａ）が実行される。つまり、ＳＥＬＥＣＴ文（Ａ）に基づいてアクセスプラン（Ａ）を生成する処理は、省かれる。そして、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ２２０５）。
【０１３６】
同様に、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂは、再びＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２２０７）。Ｓ２２０７において送られるＳＥＬＥＣＴ文（Ａ）は、図２１のＳ２１０７、Ｓ２１２３及び図２２のＳ２２０１において送られたＳＥＬＥＣＴ文（Ａ）と同じである。再び送られるＳＥＬＥＣＴ文（Ａ）も、図２１のＳ２１１９で確立されたコネクションを前提としている。
【０１３７】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ２２０９）。このとき、Ｓ２１２５において生成されたアクセスプラン（Ａ）がキャッシュ領域６３３から読み出され、読み出されたアクセスプラン（Ａ）が実行される。この場合も、ＳＥＬＥＣＴ文（Ａ）に基づいてアクセスプラン（Ａ）を生成する処理は、省かれる。そして、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ２２１１）。
【０１３８】
アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、当該コネクションを前提とした一連のアクセスが終わると、ＤＩＳＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２２１３）。
【０１３９】
正系ノード１０３のデータベース管理システム１２１は、ＤＩＳＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ａのアプリケーション部１１１ａとのコネクションを解放する（Ｓ２２１５）。このとき、解放されたコネクションに対応するキャッシュ領域６３３は解放される。従って、解放されたコネクションを前提として受け付けたＳＱＬ文に基づくアクセスプランは、消去される。この例では、アクセスプラン（Ａ）が消去される。コネクションを前提として受け付けたＳＱＬ文に基づくアクセスプランが複数存在する場合には、それらのアクセスプランが消去される。
【０１４０】
そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ２２１７）。
【０１４１】
正系ノード１０３のデータベース管理システム１２１は、Ｓ２２１５に示したコネクションの解放において、消去されたアクセスプランを特定するためのＳＱＬ文（この例ではＳＥＬＥＣＴ文（Ａ））を含む通知データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ２２１９）。複数のアクセスプランが消去された場合には、夫々のアクセスプランを特定するためのＳＱＬ文が通知データに加えられる。
【０１４２】
副系ノード１０７のデータベース管理システム１３１は、通知データを受信すると、通知データに含まれるＳＱＬ文（この例ではＳＥＬＥＣＴ文（Ａ））をキーとしてアクセスプランを探索する。通知データに複数のＳＱＬ文が含まれる場合には、各ＳＱＬ文をキーとしてアクセスプランの探索が繰り返される。そして、副系ノード１０７のデータベース管理システム１３１は、探索されたアクセスプランの受信回数が「１」であるか、あるいは「２」以上であるかを判定する。当該アクセスプランの受信回数が「２」以上であると判定した場合には、副系ノード１０７のデータベース管理システム１３１は、アクセスプランの受信回数をカウントダウンする（Ｓ２２２１）。この例では、ＳＥＬＥＣＴ文（Ａ）によって探索されたアクセスプラン（Ａ）の受信回数の「２」が、「１」に更新される。
【０１４３】
続けて、探索されたアクセスプランの受信回数が「１」である場合について説明する。アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂも、当該コネクションを前提とした一連のアクセスが終わると、ＤＩＳＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２２２３）。
【０１４４】
正系ノード１０３のデータベース管理システム１２１は、ＤＩＳＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂとのコネクションを解放する（Ｓ２２２５）。Ｓ２２１５の場合と同様に、解放されたコネクションに対応するキャッシュ領域６３３は解放される。この例では、アクセスプラン（Ａ）が消去される。そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ２２２７）。
【０１４５】
正系ノード１０３のデータベース管理システム１２１は、Ｓ２２２５に示したコネクションの解放においても、消去されたアクセスプランを特定するためのＳＱＬ文（この例ではＳＥＬＥＣＴ文（Ａ））を含む通知データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ２２２９）。Ｓ２２１５の場合と同様に、複数のアクセスプランが消去された場合には、夫々のアクセスプランを特定するためのＳＱＬ文が通知データに加えられる。
【０１４６】
副系ノード１０７のデータベース管理システム１３１は、通知データを受信すると、通知データに含まれるＳＱＬ文（この例ではＳＥＬＥＣＴ文（Ａ））をキーとしてアクセスプランを探索する。通知データに複数のＳＱＬ文が含まれる場合には、各ＳＱＬ文をキーとしてアクセスプランの探索が繰り返される。Ｓ２２２１の場合と同様に、副系ノード１０７のデータベース管理システム１３１は、探索されたアクセスプランの受信回数が「１」であるか、あるいは「２」以上であるかを判定する。当該アクセスプランの受信回数が「１」であると判定された場合に、副系ノード１０７のデータベース管理システム１３１は、当該アクセスプランと当該アクセスプランに付随するデータを消去する（Ｓ２２３１）。この例では、アクセスプラン（Ａ）とアクセスプラン（Ａ）に付随するデータとが消去される。
【０１４７】
図２３に、実施の形態２に係る保存領域８２３の例を示す。この例では、保存領域８２３において、ＳＱＬ文と、アクセスプランと、受信回数とが対応付けて記憶されている。実施の形態１と同様に、ＳＱＬ文は、例えばアクセスプランを紐付けるために用いられる。本実施の形態における副系ノード１０７のデータベース管理システム１３１は、コネクションの異同を問わず、同じＳＱＬ文に基づくアクセスプランを同じものとして扱う。そして、副系ノード１０７のデータベース管理システム１３１は、同一のアクセスプランを受信した回数によって、幾つのコネクションにおいて同じＳＱＬ文に基づくアクセスプランが生成されたかを判定する。更に、現に有効であるコネクションの数と受信回数とを一致させるために、コネクションが解放された場合には、受信回数は１つ減らされる。
【０１４８】
次に、実施の形態２におけるデータベース管理システム１２１の主系処理部６０１の処理について説明する。主系処理部６０１のメイン処理は、図１０に示した通りである。以下では、実施の形態１の場合と異なる点について、抽出処理を例として説明する。
【０１４９】
主系処理部６０１は、図１０のＳ１００９において、図１３に示した抽出処理（Ａ）に代えて抽出処理（Ｃ）を実行する。図２４に、抽出処理（Ｃ）フローを示す。Ｓ１３０１乃至Ｓ１３０７の処理については、図１３に示した実施の形態１の場合の処理と同様である。
【０１５０】
Ｓ１３０７において保存処理を終えると、送信部６１３は、ＳＱＬ文（＝ＳＥＬＥＣＴ文）及びアクセスプランを含む保存データを送信する（Ｓ２４０１）。
【０１５１】
Ｓ１３１１及びＳ１３１３の処理については、図１３に示した実施の形態１の場合の処理と同様である。
【０１５２】
尚、図１０に示したＳ１０１３における挿入処理の場合には、送信部６１３は、ＳＱＬ文（＝ＩＮＳＥＲＴ文）及びアクセスプランを含む保存データを送信する。図１０に示したＳ１０１７における削除処理の場合には、送信部６１３は、ＳＱＬ文（＝ＤＥＬＥＴＥ文）及びアクセスプランを含む保存データを送信する。図１１のＳ１１０３における更新処理の場合には、送信部６１３は、ＳＱＬ文（＝ＵＰＤＡＴＥ文）及びアクセスプランを含む保存データを送信する。
【０１５３】
更に、主系処理部６０１の切断部６１９は、図１１のＳ１１０７において、切断処理（Ａ）に代えて切断処理（Ｂ）を実行する。図２５に、切断処理（Ｂ）フローを示す。切断部６１９は、解放させたコネクションのＩＤを無効にする（Ｓ２５０１）。切断部６１９は、当該コネクションＩＤに対応するキャッシュ領域６３３から、ＳＱＬ文を抽出する（Ｓ２５０３）。切断部６１９は、当該コネクションＩＤに対応するキャッシュ領域６３３を解放する（Ｓ２５０５）。つまり、当該キャッシュ領域６３３のデータは消去される。通知部６２１は、Ｓ２５０３で抽出されたＳＱＬ文を含む通知データを、副系ノード１０７のデータベース管理システム１３１に送信する（Ｓ２５０７）。切断部６１９は、「成功」を示すコードを、ＤＩＳＣＯＮＮＥＣＴ文の送信元のプログラムモジュールへ返す（Ｓ２５０９）。
【０１５４】
次に、実施の形態２におけるデータベース管理システム１３１の副系処理部８０１の処理について説明する。副系処理部８０１のメイン処理は、図１６に示した通りである。以下では、実施の形態１の場合と異なる点について説明する。
【０１５５】
記憶処理部８０５は、図１６のＳ１６０５において、図１７に示した記憶処理（Ａ）に代えて記憶処理（Ｂ）を実行する。図２６に、記憶処理（Ｂ）フローを示す。記憶処理部８０５は、図１６のＳ１６０１において受信した保存データに含まれるＳＱＬ文を特定する（Ｓ２６０１）。記憶処理部８０５は、Ｓ２６０１で特定されたＳＱＬ文と同じＳＱＬ文を有する保存領域８２３を探す（Ｓ２６０３）。記憶処理部８０５は、Ｓ２６０１で特定されたＳＱＬ文と同じＳＱＬ文を有する保存領域８２３があったか否かを判定する（Ｓ２６０５）。
【０１５６】
Ｓ２６０１で特定されたＳＱＬ文と同じＳＱＬ文を有する保存領域８２３がなかったと判定した場合には、記憶処理部８０５は、記憶領域８２１に新たな保存領域８２３を確保する（Ｓ２６０７）。記憶処理部８０５は、保存データに含まれるＳＱＬ文及びアクセスプランを新たな保存領域８２３に記憶させる（Ｓ２６０９）。記憶処理部８０５は、保存領域８２３に含まれる受信回数に「１」を設定する（Ｓ２６１１）。
【０１５７】
Ｓ２６０５において、Ｓ２６０１で特定されたＳＱＬ文と同じＳＱＬ文を有する保存領域８２３があったと判定した場合には、記憶処理部８０５は、当該保存領域８２３の受信回数に１を加える（Ｓ２６１３）。従って、当該保存領域８２３の受信回数は、「２」以上になる。記憶処理（Ｂ）を終えると、図１６のＳ１６０１に戻る。
【０１５８】
消去部８０７は、図１６のＳ１６０９において、図１８に示した消去処理（Ａ）に代えて消去処理（Ｂ）を実行する。図２７に、消去処理（Ｂ）フローを示す。消去部８０７は、図１６のＳ１６０１において受信した通知データに含まれるＳＱＬ文を１つ特定する（Ｓ２７０１）。消去部８０７は、特定されたＳＱＬ文と同じＳＱＬ文を有する保存領域８２３を特定する（Ｓ２７０３）。消去部８０７は、当該保存領域８２３に含まれる受信回数が「２」以上であるか否かを判定する（Ｓ２７０５）。
【０１５９】
当該保存領域８２３に含まれる受信回数が「２」以上であると判定した場合には、消去部８０７は、当該保存領域８２３に含まれる受信回数から１を引く（Ｓ２７０７）。
【０１６０】
一方、当該保存領域８２３に含まれる受信回数が「２」以上ではないと判定した場合、つまり当該保存領域８２３に含まれる受信回数が「１」である場合には、消去部８０７は、当該保存領域８２３を解放する（Ｓ２７０９）。つまり、当該保存領域８２３のデータは消去される。
【０１６１】
消去部８０７は、図１６のＳ１６０１において受信した通知データに含まれるＳＱＬ文のうち、未特定のＳＱＬ文があるか否かを判定する（Ｓ２７１１）。未特定のＳＱＬ文があると判定した場合には、Ｓ２７０１に戻る。一方、未特定のＳＱＬ文がないと判定した場合には、消去処理（Ｂ）を終え、図１６のＳ１６０１に戻る。
【０１６２】
本実施の形態によれば、同一のＳＱＬ文に対応するアクセスプランについて、重複した記憶を避けることができる。
【０１６３】
また、正系ノード１０３におけるコネクションの解放に伴うアクセスプランの消去に合わせて、副系ノード１０７において記憶領域８２１の空き容量を回復させることができる。
【０１６４】
［実施の形態３］
正系ノード１０３のデータベース管理システム１２１では、記憶領域６３１の空き容量が少なくなった場合に、キャッシュ領域６３３に含まれるアクセスプランを消去することがある。本実施の形態では、正系ノード１０３のデータベース管理システム１２１においてアクセスプランが消去された場合に、副系ノード１０７のデータベース管理システム１３１においても同期して、正系ノード１０３のデータベース管理システム１２１で消去されたアクセスプランと同じアクセスプランを消去する例について説明する。
【０１６５】
正系ノード１０３のデータベース管理システム１２１における主系処理部６０１の調整部６２３による調整処理について説明する。図２８に、調整処理フローを示す。調整部６２３は、所定のタイミングで、記憶領域６３１の空き容量を算出する（Ｓ２８０１）。そして、調整部６２３は、記憶領域６３１の空き容量が所定の閾値を下回ったか否かを判定する（Ｓ２８０３）。当該所定の閾値は、記憶領域６３１の空き容量を回復させるための基準である。記憶領域６３１の空き容量が所定の閾値を下回っていないと判定した場合には、Ｓ２８０１へ戻る。
【０１６６】
一方、記憶領域６３１の空き容量が所定の閾値を下回ったと判定した場合には、調整部６２３は、削除すべきアクセスプランを選択する（Ｓ２８０５）。調整部６２３は、例えば、最終参照日時が古いアクセスプランを選択し、あるいは参照回数が少ないアクセスプランを選択する。このようにすれば、再利用される可能性が低いアクセスプランが先に削除されるようになる。
【０１６７】
通知部６２１は、キャッシュ領域６３３を参照し、選択されたアクセスプランに対応するＳＱＬ文を特定し、特定されたＳＱＬ文を含む通知データを、副系ノード１０７のデータベース管理システム１３１へ送信する（Ｓ２８０７）。
【０１６８】
調整部６２３は、Ｓ２８０５で選択されたアクセスプランをキャッシュ領域６３３から削除する（Ｓ２８０９）。このとき、当該アクセスプランに対応するＳＱＬ文もキャッシュ領域６３３から削除される。そして、Ｓ２８０１へ戻る。
【０１６９】
一方、副系ノード１０７のデータベース管理システム１３１における処理については、実施の形態２と同様である。つまり、図１６のＳ１６０１において、図２８のＳ２８０７で送信された通知データを受信する。そして、図１６のＳ１６０９において、消去部８０７は図２７に示した消去処理（Ｂ）を実行する。
【０１７０】
本実施の形態によれば、正系ノード１０３における記憶領域６３１の空き容量の回復のためのアクセスプランの消去に合わせて、副系ノード１０７において記憶領域８２１の空き容量を回復させることができる。
【０１７１】
［実施の形態４］
本実施の形態では、実施の形態２のように、同一のＳＱＬ文に対応するアクセスプランについて、副系ノード１０７において重複して記憶しないようにするとともに、実施の形態１のように、正系ノード１０３におけるコネクションの解放に合わせて、副系ノード１０７において一括して当該コネクションに係るアクセスプランを一括して消去する例について説明する。
【０１７２】
図２９に、実施の形態４に係るシーケンスの例を示す。実施の形態２における例と同様に、アプリケーションサーバ１１３ａのアプリケーション部１１１ａによる業務及びアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂによる業務において、正系ノード１０３及び副系ノード１０７を有する二重化データベースシステムを利用することを想定している。また、実施の形態２における例と同様に、アプリケーションサーバ１１３ａのアプリケーション部１１１ａと正系ノード１０３のデータベース管理システム１２１との間のコネクションと、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂと正系ノード１０３のデータベース管理システム１２１との間のコネクションとが並存する。
【０１７３】
実施の形態２における例と同様に、アプリケーションサーバ１１３ａのアプリケーション部１１１ａから正系ノード１０３のデータベース管理システム１２１へのアクセス要求、アプリケーションサーバ１１３ａのアプリケーション部１１１ａから副系ノード１０７のデータベース管理システム１３１へのアクセス要求、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂから正系ノード１０３のデータベース管理システム１２１へのアクセス要求、更にアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂから副系ノード１０７のデータベース管理システム１３１へのアクセス要求は、例えばＳＱＬ文の形式で記述される。但し、ＳＱＬ以外のデータベース言語を用いた問合せ文によってデータベースへのアクセスを要求するようにしてもよい。また、この例におけるシーケンスは、ＳＱＬの仕様に基づく。
【０１７４】
アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、最初にＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２９０１）。
【０１７５】
正系ノード１０３のデータベース管理システム１２１は、ＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ａのアプリケーション部１１１ａとのコネクションを確立させる（Ｓ２９０３）。このとき、確立されたコネクションを識別するためのコネクションＩＤ（Ａ）が割り振られる。この例で、コネクションＩＤ（Ａ）は、アプリケーションサーバ１１３ａのアプリケーション部１１１ａと正系ノード１０３のデータベース管理システム１２１との間のコネクションのＩＤを意味する。そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ２９０５）。
【０１７６】
コネクションが確立している状態で、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、ＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２９０７）。このＳＥＬＥＣＴ文（Ａ）は、Ｓ２９０３で確立されたコネクションを前提としている。実施の形態１及び２における例と同様に、ＳＥＬＥＣＴ文（Ａ）は、タイプＡのＳＥＬＥＣＴ文を意味する。
【０１７７】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ２９０９）。このとき、ＳＥＬＥＣＴ文（Ａ）に基づくアクセスプラン（Ａ）が生成され、生成されたアクセスプラン（Ａ）が実行される。その結果、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、生成されたアクセスプラン（Ａ）を正系ノード１０３のデータベース管理システム１２１内のキャッシュ領域６３３に一時的に記憶する。そして、正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ２９１１）。実施の形態１及び２における例と同様に、データ（Ａ）は、ＳＥＬＥＣＴ文（Ａ）に基づいて抽出されたデータを意味する。
【０１７８】
また、Ｓ２９０９に示したデータの抽出において、正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）、アクセスプラン（Ａ）及びコネクションＩＤ（Ａ）を含む保存データを生成し、生成された保存データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ２９１３）。
【０１７９】
副系ノード１０７のデータベース管理システム１３１は、保存データを受信すると、保存データに含まれるアクセスプラン（Ａ）が既に保存されているか否かを判断する。この例では、アクセスプラン（Ａ）は未だ保存されていないので、保存データに含まれるアクセスプランと当該アクセスプランに付随するデータを保存する（Ｓ２９１５）。そして、副系ノード１０７のデータベース管理システム１３１は、アクセスプラン（Ａ）の受信回数として「１」を記憶する。実施の形態４では、当該アクセスプランの受信回数が計数されるとともに、コネクションＩＤ（Ａ）が保存される。
【０１８０】
実施の形態２における例と同様に、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂも、最初にＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２９１７）。
【０１８１】
実施の形態２における例と同様に、正系ノード１０３のデータベース管理システム１２１は、ＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂとのコネクションを確立させる（Ｓ２９１９）。このとき、確立されたコネクションを識別するためのコネクションＩＤ（Ｂ）が割り振られる。この例で、コネクションＩＤ（Ｂ）は、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂと正系ノード１０３のデータベース管理システム１２１との間のコネクションのＩＤを意味する。そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ２９２１）。
【０１８２】
実施の形態２における例と同様に、コネクションが確立している状態で、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂは、ＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ２９２３）。このＳＥＬＥＣＴ文（Ａ）は、Ｓ２９１９で確立されたコネクションを前提としている。
【０１８３】
実施の形態２における例と同様に、正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ２９２５）。このとき、ＳＥＬＥＣＴ文（Ａ）に基づくアクセスプラン（Ａ）が生成され、生成されたアクセスプラン（Ａ）が実行される。その結果、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、生成されたアクセスプラン（Ａ）を正系ノード１０３のデータベース管理システム１２１内のキャッシュ領域６３３に一時的に記憶する。そして、正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ２９２７）。
【０１８４】
また、Ｓ２９２５に示したデータの抽出において、正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）、アクセスプラン（Ａ）及びコネクションＩＤ（Ｂ）を含む保存データを生成し、生成された保存データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ２９２９）。
【０１８５】
副系ノード１０７のデータベース管理システム１３１は、保存データを受信すると、Ｓ２９１５の場合と同様に、保存データに含まれるアクセスプラン（Ａ）が既に保存されているか否かを判断する。この例では、アクセスプラン（Ａ）は既に保存されているので、アクセスプラン（Ａ）の受信回数をカウントアップして「２」とするとともに、保存データに含まれるコネクションＩＤ（Ｂ）を追加して保存する（Ｓ２９３１）。このように、副系ノード１０７のデータベース管理システム１３１は、コネクションの異同に関わらず、ＳＱＬ文をキーとして、既に受信しているアクセスプランを改めて受信したと判断した場合には、受信回数をカウントアップするとともに、コネクションＩＤを追加する。このようにすれば、コネクションＩＤをキーとしても、アクセスプランを探索できるようになる。
【０１８６】
端子Ｊ、端子Ｋ、端子Ｌ及び端子Ｍを介して、図３０に示したシーケンスへ移る。同じＳＱＬ文を再び受け付けた場合のシーケンスは、実施の形態１及び２における例と同様である。アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、再びＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３００１）。Ｓ３００１において送られるＳＥＬＥＣＴ文（Ａ）は、図２９のＳ２９０７及びＳ２９２３において送られたＳＥＬＥＣＴ文（Ａ）と同じである。再び送られるＳＥＬＥＣＴ文（Ａ）も、図２９のＳ２９０３で確立されたコネクションを前提としている。
【０１８７】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ３００３）。このとき、図２９のＳ２９０９において生成されたアクセスプラン（Ａ）がキャッシュ領域６３３から読み出され、読み出されたアクセスプラン（Ａ）が実行される。つまり、ＳＥＬＥＣＴ文（Ａ）に基づいてアクセスプラン（Ａ）を生成する処理は、省かれる。そして、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ３００５）。
【０１８８】
同様に、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂは、再びＳＥＬＥＣＴ文（Ａ）を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３００７）。Ｓ３００７において送られるＳＥＬＥＣＴ文（Ａ）は、図２９のＳ２９０７、Ｓ２９２３及び図３０のＳ３００１において送られたＳＥＬＥＣＴ文（Ａ）と同じである。再び送られるＳＥＬＥＣＴ文（Ａ）も、図２９のＳ２９１９で確立されたコネクションを前提としている。
【０１８９】
正系ノード１０３のデータベース管理システム１２１は、ＳＥＬＥＣＴ文（Ａ）を受け付けると、ＳＥＬＥＣＴ文（Ａ）に従って、データを抽出する（Ｓ３００９）。このとき、Ｓ２９２５において生成されたアクセスプラン（Ａ）がキャッシュ領域６３３から読み出され、読み出されたアクセスプラン（Ａ）が実行される。この場合も、ＳＥＬＥＣＴ文（Ａ）に基づいてアクセスプラン（Ａ）を生成する処理は、省かれる。そして、例えば指定されたテーブルに含まれる指定されたレコードから所望のデータが抽出される。正系ノード１０３のデータベース管理システム１２１は、抽出されたデータ（Ａ）をアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ３０１１）。
【０１９０】
実施の形態２における例と同様に、アプリケーションサーバ１１３ａのアプリケーション部１１１ａは、当該コネクションを前提とした一連のアクセスが終わると、ＤＩＳＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３０１３）。
【０１９１】
実施の形態２における例と同様に、正系ノード１０３のデータベース管理システム１２１は、ＤＩＳＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ａのアプリケーション部１１１ａとのコネクションを解放する（Ｓ３０１５）。このとき、解放されたコネクションに対応するキャッシュ領域６３３は解放される。つまり、解放されたコネクションを前提として受け付けたＳＱＬ文に基づくアクセスプランは、消去される。この例では、アクセスプラン（Ａ）が消去される。コネクションを前提として受け付けたＳＱＬ文に基づくアクセスプランが複数存在する場合には、それらのアクセスプランは消去される。そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ａのアプリケーション部１１１ａへ返す（Ｓ３０１７）。
【０１９２】
実施の形態４では、実施の形態１における例（図４のＳ４０７）と同様に、正系ノード１０３のデータベース管理システム１２１は、解放されたコネクションを特定するコネクションＩＤ（Ａ）を含む通知データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ３０１９）。
【０１９３】
副系ノード１０７のデータベース管理システム１３１は、通知データを受信すると、自ら保存したアクセスプランの中から、通知データに含まれるコネクションＩＤ（Ａ）に対応付けられているアクセスプランを探索する。通知データに含まれるコネクションＩＤに複数のアクセスプランが対応付けられている場合には、夫々のアクセスプランを特定する。そして、副系ノード１０７のデータベース管理システム１３１は、探索されたアクセスプランの受信回数が「１」であるか、あるいは「２」以上であるかを判定する。当該アクセスプランの受信回数が「２」以上であると判定した場合には、副系ノード１０７のデータベース管理システム１３１は、アクセスプランの受信回数をカウントダウンする。この例では、コネクションＩＤ（Ａ）によって探索されたアクセスプラン（Ａ）の受信回数が「２」から「１」に更新される。また、コネクションＩＤ（Ａ）は削除される。つまり、受信回数の減少に併せて、コネクションＩＤの削減が行なわれる（Ｓ３０２１）。
【０１９４】
続けて、探索されたアクセスプランの受信回数が「１」である場合の例について説明する。実施の形態２における例と同様に、アプリケーションサーバ１１３ｂのアプリケーション部１１１ｂも、当該コネクションを前提とした一連のアクセスが終わると、ＤＩＳＣＯＮＮＥＣＴ文を正系ノード１０３のデータベース管理システム１２１へ送る（Ｓ３０２３）。
【０１９５】
正系ノード１０３のデータベース管理システム１２１は、ＤＩＳＣＯＮＮＥＣＴ文を受け付けると、要求元であるアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂとのコネクションを解放する（Ｓ３０２５）。Ｓ３０１５の場合と同様に、解放されたコネクションに対応するキャッシュ領域６３３におけるデータは消去され、当該キャッシュ領域６３３は解放される。この例では、アクセスプラン（Ａ）が消去される。そして、正系ノード１０３のデータベース管理システム１２１は、「成功」を示すコードをアプリケーションサーバ１１３ｂのアプリケーション部１１１ｂへ返す（Ｓ３０２７）。
【０１９６】
正系ノード１０３のデータベース管理システム１２１は、Ｓ３０２５に示したコネクションの解放において、解放されたコネクションを特定するコネクションＩＤ（Ｂ）を含む通知データを副系ノード１０７のデータベース管理システム１３１へ送る（Ｓ３０２９）。
【０１９７】
副系ノード１０７のデータベース管理システム１３１は、通知データを受信すると、自ら保存したアクセスプランの中から、通知データに含まれるコネクションＩＤ（Ｂ）に対応付けられているアクセスプランを探索する。そして、副系ノード１０７のデータベース管理システム１３１は、探索されたアクセスプランの受信回数が「１」であるか、あるいは「２」以上であるかを判定する。当該アクセスプランの受信回数が「１」であると判定された場合に、副系ノード１０７のデータベース管理システム１３１は、当該アクセスプランと当該アクセスプランに付随するデータを消去する（Ｓ３０３１）。この例では、アクセスプラン（Ａ）とアクセスプラン（Ａ）に付随するデータとが消去される。
【０１９８】
図３１に、実施の形態４に係る保存領域８２３の例を示す。図３１の例では、図２３に示した実施の形態２の保存領域８２３の例に対して、コネクションＩＤのリストが加えられている。リストに含まれるコネクションＩＤは、当該アクセスプランが生成されたときのコネクションを特定する。従って、受信回数と、リストに含まれるコネクションＩＤの数は一致する。従って、コネクションＩＤをキーとしてアクセスプランを探索することによって、特定のコネクションにおいて生成されたアクセスプランが抽出される。
【０１９９】
次に、実施の形態４におけるデータベース管理システム１３１の副系処理部８０１の処理について説明する。副系処理部８０１のメイン処理は、図１６に示した通りである。以下では、実施の形態１乃至３の場合と異なる点について、抽出処理を例として説明する。
【０２００】
記憶処理部８０５は、図１６のＳ１６０５において、図１７に示した記憶処理（Ａ）及び図２６に示した記憶処理（Ｂ）に代えて記憶処理（Ｃ）を実行する。図３２に、記憶処理（Ｃ）フローを示す。Ｓ２６０１乃至Ｓ２６１３の処理については、図２６に示した記憶処理（Ｂ）の場合と同様である。
【０２０１】
本実施の形態で、記憶処理部８０５は、図１６のＳ１６０１において受信した保存データに含まれるコネクションＩＤを、Ｓ２６０７で確保した保存領域８２３に設定する（Ｓ３２０１）。Ｓ２６０５において、Ｓ２６０１で特定されたＳＱＬ文と同じＳＱＬ文を有する保存領域８２３があったと判定した場合には、当該保存領域８２３に既に設定されているコネクションＩＤに加えて、図１６のＳ１６０１において受信した保存データに含まれるコネクションＩＤを設定する。記憶処理（Ｃ）を終えると、図１６のＳ１６０１に戻る。
【０２０２】
消去部８０７は、図１６のＳ１６０９において、図２７に示した消去処理（Ｂ）に代えて消去処理（Ｃ）を実行する。図３３に、消去処理（Ｃ）フローを示す。消去部８０７は、図１６のＳ１６０１において受信した通知データに含まれるコネクションＩＤと同じコネクションＩＤがヘッダ部に設定されている保存領域８２３を１つ特定する（Ｓ３３０１）。そして、消去部８０７は、当該保存領域８２３に含まれる受信回数が「２」以上であるか否かを判定する（Ｓ３３０３）。
【０２０３】
消去部８０７は、当該保存領域８２３に含まれる受信回数が「２」以上であると判定した場合には、消去部８０７は、当該保存領域８２３に含まれる受信回数から１を引く（Ｓ３３０５）。更に、消去部８０７は、図１６のＳ１６０１において受信した通知データに含まれるコネクションＩＤを、当該保存領域８２３から削除する（Ｓ３３０７）。
【０２０４】
一方、Ｓ３３０３において、当該保存領域８２３に含まれる受信回数が「２」以上ではないと判定した場合、つまり当該保存領域８２３に含まれる受信回数が「１」である場合には、消去部８０７は、当該保存領域８２３を解放する（Ｓ３３０９）。つまり、当該保存領域８２３のデータは消去される。
【０２０５】
消去部８０７は、図１６のＳ１６０１において受信した通知データに含まれるコネクションＩＤと同じコネクションＩＤがヘッダ部に設定されている保存領域８２３のうち、未特定の保存領域８２３があるか否かを判定する（Ｓ３３１１）。未特定の保存領域８２３があると判定した場合には、Ｓ３３０１に戻る。一方、未特定の保存領域８２３がないと判定した場合には、消去処理（Ｃ）を終え、図１６のＳ１６０１へ戻る。
【０２０６】
本実施の形態によれば、同一のＳＱＬ文に対応するアクセスプランについて、重複した記憶を避けることができる。
【０２０７】
また、コネクションＩＤによって、複数のアクセスプランを一括して消去することができる。
【０２０８】
［実施の形態５］
本実施の形態では、正系ノード１０３における統計データの更新に応じて、副系ノード１０７において新しい統計データに基づいたアクセスプランに改める例について説明する。
【０２０９】
図６に示した統計部６４１による統計処理について説明する。図３４に、統計処理フローを示す。統計部６４１は、所定のタイミングを待って（Ｓ３４０１）、データベースに関する新しい統計データを生成する（Ｓ３４０３）。
【０２１０】
このとき、統計部６４１は、新しい統計データを第１データ格納部６４３に格納する。尚、データベース管理システム１３１の副系処理部８０１に含まれる第２データ格納部８３３は、データベース管理システム１２１の主系処理部６０１に含まれる第１同期処理部６４５及びデータベース管理システム１３１の副系処理部８０１に含まれる第２同期処理部８３１を介して、第１データ格納部６４３と同期している。従って、新しい統計データが第１データ格納部６４３に格納されると、第２データ格納部８３３においても同じ新しい統計データが格納される。
【０２１１】
統計部６４１は、新しい統計データを生成したことを、副系ノード１０７のデータベース管理システム１３１へ通知する（Ｓ３４０５）。そして、Ｓ３４０１へ戻る。
【０２１２】
実施の形態５におけるデータベース管理システム１３１の処理について説明する。副系処理部８０１の更新部８０９は、待機処理を実行する。図３５に、待機処理フローを示す。更新部８０９は、新しい統計データを生成したことを示す通知を待つ（Ｓ３５０１）。新しい統計データを生成したことを示す通知を受けると、更新部８０９は、第２データ格納部８３３に格納されている新しい統計データに基づいて、記憶領域８２１に設けられている保存領域８２３の各々に格納されているアクセスプランを更新する（Ｓ３５０３）。夫々のアクセスプランの更新を終えると、Ｓ３５０１へ戻る。
【０２１３】
本実施の形態によれば、正系ノード１０３における統計データの更新に応じて、副系ノード１０７において新しい統計データに基づいたアクセスプランに改めることができる。新しい統計データに基づいたアクセスプランであれば、古い統計データに基づいたアクセスプランに比べて、処理性能が優れていることが期待できる。
【０２１４】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０２１５】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０２１６】
なお、上で述べた正系ノード１０３及び副系ノード１０７は、コンピュータ装置であって、図３６に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０２１７】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０２１８】
本実施の形態に係る制御方法は、データベースへのアクセスを制御する正系制御装置の待機系である副系制御装置において、データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報と、該アクセス規定情報に対応するデータベースへの問合せ文とを正系制御装置から受信して記憶部に記憶し、正系制御装置と該正系制御装置を介してデータベースにアクセスする端末装置との間の、問合せ文に基づくアクセスのコネクション解放の通知を正系制御装置から受信すると、上記記憶部に記憶された、解放されたコネクションに対応するアクセス規定情報を消去する処理を含む。
【０２１９】
このようにすれば、副系制御装置においてアクセス規定情報を記憶する記憶領域の枯渇を抑止することができる。
【０２２０】
上記制御方法は、副系制御装置に、正系制御装置から、同一の問合せ文に対応するアクセス規定情報を受信した回数を計数し、該回数が２以上になる場合には、該アクセス規定情報を記憶する処理を行わないことを実行させるようにしてもよい。
【０２２１】
このようにすれば、同一の問合せ文に対応するアクセス規定情報について、重複した記憶を避けることができる。
【０２２２】
上記制御方法は、正系制御装置から、正系制御装置の記憶部におけるアクセス規定情報の消去が通知されると、副系制御装置の記憶部に記憶されている、消去が通知されたアクセス規定情報を消去する処理を含むようにしてもよい。
【０２２３】
このようにすれば、正系制御装置におけるアクセス規定情報の消去に合わせて、副系制御装置において記憶領域の空き容量を回復させることができる。
【０２２４】
上記制御方法は、正系制御装置から、データベースに関する統計データの更新が通知されると、更新された統計データと更新された該統計データに対応するデータベースに記憶されたデータとに基づいて、上記記憶部に記憶されているアクセス規定情報を更新する処理を含むようにしてもよい。
【０２２５】
このようにすれば、正系制御装置における統計データの更新に応じて、新しい統計データに基づいたアクセス規定情報に改めることができる。
【０２２６】
本実施の形態に係る制御方法は、正系制御装置と副系制御装置とを備えたデータベースシステムの制御方法であって、（Ａ）正系制御装置が、データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報の生成に応じて、生成されたアクセス規定情報と、該アクセス規定情報に対応するデータベースへの問合せ文とを、副系制御装置に送信し、正系制御装置と該正系制御装置を介してデータベースにアクセスする端末装置との間の、問合せ文に基づくアクセスのコネクション解放に応じて、該コネクションの解放を副系制御装置に通知し、（Ｂ）副系制御装置が、正系制御装置から送信されたアクセス規定情報を記憶部に記憶し、正系制御装置からコネクションの解放が通知されると、上記記憶部に記憶された、解放されたコネクションに対応するアクセス規定情報を消去する処理を含む。
【０２２７】
このようにすれば、副系制御装置においてアクセス規定情報を記憶する記憶領域の枯渇を抑止することができる。
【０２２８】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０２２９】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０２３０】
（付記１）
データベースへのアクセスを制御する正系制御装置の待機系である副系制御装置に、
前記データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを前記正系制御装置から受信して記憶部に記憶し、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放の通知を前記正系制御装置から受信すると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する、
処理を実行させることを特徴とする制御プログラム。
【０２３１】
（付記２）
前記副系制御装置に、
前記正系制御装置から、同一の問合せ文に対応するアクセス規定情報を受信した回数を計数し、該回数が２以上になる場合には、該アクセス規定情報を記憶する処理を行わない、
ことを実行させることを特徴とする付記１記載の制御プログラム。
【０２３２】
（付記３）
前記正系制御装置から、前記正系制御装置の記憶部におけるアクセス規定情報の消去が通知されると、前記副系制御装置の記憶部に記憶されている、消去が通知された前記アクセス規定情報を消去する
処理を前記副系制御装置に実行させる付記１又は２記載の制御プログラム。
【０２３３】
（付記４）
前記正系制御装置から、前記データベースに関する統計データの更新が通知されると、更新された前記統計データと更新された該統計データに対応する前記データベースに記憶されたデータとに基づいて、前記記憶部に記憶されている前記アクセス規定情報を更新する
処理を前記副系制御装置に実行させる付記１乃至３のうち１つ記載の制御プログラム。
【０２３４】
（付記５）
データベースへのアクセスを制御する正系制御装置の待機系の制御装置であって、
前記データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを前記正系制御装置から受信して記憶部に記憶させる記憶処理部と、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放の通知を前記正系制御装置から受信すると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する消去部と、
を有することを特徴とする制御装置。
【０２３５】
（付記６）
正系制御装置と副系制御装置とを備えたデータベースシステムの制御方法であって、
前記正系制御装置が、
データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報の生成に応じて、生成された前記アクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを、前記副系制御装置に送信し、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放に応じて、該コネクションの解放を前記副系制御装置に通知し、
前記副系制御装置が、
前記正系制御装置から送信された前記アクセス規定情報を記憶部に記憶し、
前記正系制御装置から前記コネクションの解放が通知されると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する、
ことを特徴とする制御方法。
【０２３６】
（付記７）
正系制御装置と副系制御装置とを備えたデータベースシステムであって、
前記正系制御装置は、
データベースへのアクセスにおける処理の実行内容を規定するアクセス規定情報の生成に応じて、生成された前記アクセス規定情報と、該アクセス規定情報に対応する前記データベースへの問合せ文とを、前記副系制御装置に送信する送信部と、
前記正系制御装置と該正系制御装置を介して前記データベースにアクセスする端末装置との間の、前記問合せ文に基づくアクセスのコネクション解放に応じて、該コネクションの解放を前記副系制御装置に通知する通知部と
を有し、
前記副系制御装置は、
前記正系制御装置から送信された前記アクセス規定情報を記憶部に記憶させる記憶処理部と、
前記正系制御装置から前記コネクションの解放が通知されると、前記記憶部に記憶された、解放された前記コネクションに対応するアクセス規定情報を消去する消去部と
を有することを特徴とするデータベースシステム。
【符号の説明】
【０２３７】
１０１  正系のデータベース  １０３  正系ノード
１０５  副系のデータベース  １０７  副系ノード
１１１  アプリケーション部  １１３  アプリケーションサーバ
１２１  データベース管理システム  １２３  データ記憶部
１３１  データベース管理システム  １３３  データ記憶部
２０１  データ記憶部  ２０３  ストレージ装置
６０１  主系処理部  ６０３  受付部
６０５  接続部  ６０７  第１探索部
６０９  生成部  ６１１  保存処理部
６１３  送信部  ６１５  実行部
６１７  返信部  ６１９  切断部
６２１  通知部  ６２３  調整部
６３１  記憶領域  ６３３  キャッシュ領域
６４１  統計部  ６４３  第１データ格納部
６４５  第１同期処理部  ７０１  第１テーブル
７０３  第２テーブル  ８０１  副系処理部
８０３  受信部  ８０５  記憶処理部
８０７  消去部  ８０９  更新部
８２１  記憶領域  ８２３  保存領域
８３１  第２同期処理部  ８３３  第２データ格納部
１９０１  受継ぎ処理部  １９０３  第２探索部
【図１】
0006337741.tif 000002
【図２】
0006337741.tif 000003
【図３】
0006337741.tif 000004
【図４】
0006337741.tif 000005
【図５】
0006337741.tif 000006
【図６】
0006337741.tif 000007
【図７】
0006337741.tif 000008
【図８】
0006337741.tif 000009
【図９】
0006337741.tif 000010
【図１０】
0006337741.tif 000011
【図１１】
0006337741.tif 000012
【図１２】
0006337741.tif 000013
【図１３】
0006337741.tif 000014
【図１４】
0006337741.tif 000015
【図１５】
0006337741.tif 000016
【図１６】
0006337741.tif 000017
【図１７】
0006337741.tif 000018
【図１８】
0006337741.tif 000019
【図１９】
0006337741.tif 000020
【図２０】
0006337741.tif 000021
【図２１】
0006337741.tif 000022
【図２２】
0006337741.tif 000023
【図２３】
0006337741.tif 000024
【図２４】
0006337741.tif 000025
【図２５】
0006337741.tif 000026
【図２６】
0006337741.tif 000027
【図２７】
0006337741.tif 000028
【図２８】
0006337741.tif 000029
【図２９】
0006337741.tif 000030
【図３０】
0006337741.tif 000031
【図３１】
0006337741.tif 000032
【図３２】
0006337741.tif 000033
【図３３】
0006337741.tif 000034
【図３４】
0006337741.tif 000035
【図３５】
0006337741.tif 000036
【図３６】
0006337741.tif 000037