(57)【要約】  データベースへのトランザクションログのインライン委譲に基づいたトランザクションリカバリをサポートするためのシステムおよび方法が提供される。このシステムは、あるトランザクションのトランザクションリカバリ情報を、永続性記憶装置から取得することができる。準備フェーズ中、トランザクションリカバリ情報は、永続性記憶装置に関連付けられたリソースマネージャにおいて持続させる。さらに、このトランザクションの、１つ以上の参加リソースマネージャから、システムは、１つ以上のインダウトトランザクションを取得することができる。次に、システムは、上記１つ以上のインダウトトランザクションを上記トランザクションリカバリ情報と突き合わせることによって、上記１つ以上のインダウトトランザクションをコミットするかまたはロールバックするかを判断することができる。
2015514247.tif 000002
【特許請求の範囲】
【請求項１】
複数のリソースマネージャに対してトランザクションをリカバリする方法であって、前記方法は、
前記トランザクションのトランザクションリカバリ情報を永続性記憶装置から取得することを含み、前記トランザクションリカバリ情報は、準備フェーズ中、前記永続性記憶装置と関連付けられたリソースマネージャを介して持続させ、
前記トランザクションの、１つ以上の参加リソースマネージャから、１つ以上のインダウトトランザクションを取得することと、
前記１つ以上のインダウトトランザクションを前記トランザクションリカバリ情報と突き合わせることによって、前記１つ以上のインダウトトランザクションをコミットするかまたはロールバックするか判断することとを含む、方法。
【請求項２】
前記１つ以上のインダウトトランザクションのうちのインダウトトランザクションを、
前記トランザクションリカバリ情報において一致が発見される場合は前記インダウトトランザクションをコミットすること、および、
前記トランザクションリカバリ情報において一致が発見されない場合は前記インダウトトランザクションをロールバックすること
のうちの一方を実行することにより、リカバリすることをさらに含む、請求項１に記載の方法。
【請求項３】
前記永続性記憶装置への接続を介してトランザクションリカバリ情報テーブルをセットアップすることをさらに含む、請求項１に記載の方法。
【請求項４】
前記永続性記憶装置と関連付けられた前記リソースマネージャを準備するのに使用されるのと同一のコールにおいて、前記トランザクションリカバリ情報を前記永続性記憶装置において持続させることをさらに含む、請求項１に記載の方法。
【請求項５】
前記トランザクションリカバリ情報を前記永続性記憶装置から定期的に削除することをさらに含む、請求項１に記載の方法。
【請求項６】
前記トランザクションリカバリ情報を、前記永続性記憶装置の通常テーブルおよび前記永続性記憶装置のリドゥログのうちの少なくとも一方において持続させることをさらに含む、請求項１に記載の方法。
【請求項７】
前記トランザクションリカバリ情報に、グローバルトランザクション識別子（ＧＴＲＩＤ）と、フォーマット識別子（ＩＤ）と、前記トランザクションの他の参加者に関する情報とを含めることをさらに含む、請求項１に記載の方法。
【請求項８】
グローバルトランザクション識別子（ＧＴＲＩＤ）、
フォーマット識別子（ＩＤ）およびコンテナ識別子（ＩＤ）、ならびに、
返されるトランザクションリカバリ情報のための境界パラメータとしての、前記１つ以上のリソースマネージャからのインダウトＧＴＲＩＤのリストおよびフォーマット識別子（ＩＤ）、
のうちの少なくとも１つを用いて、前記永続性記憶装置にクエリすることをさらに含む、請求項１に記載の方法。
【請求項９】
前記トランザクションが複数のトランザクションマネージャにまたがるようにすることをさらに含み、前記トランザクションマネージャは種類が異なる製品であってもよい、請求項１に記載の方法。
【請求項１０】
前記永続性記憶装置内に、トランザクションツリーを崩壊させることによって生成されたグラフを持続させること、または、
前記永続性記憶装置内に、１つ以上の異なるエンドポイントを持続させることをさらに含む、請求項９に記載の方法。
【請求項１１】
トランザクションをリカバリするためのシステムであって、前記システムは、
トランザクションマネージャと、
中間層トランザクションシステムにおいて前記トランザクションマネージャと通信する複数のリソースマネージャとを備え、
前記トランザクションマネージャは以下のステップを実行するように動作し、前記ステップは、
前記トランザクションのトランザクションリカバリ情報を永続性記憶装置から取得することを含み、前記トランザクションリカバリ情報は、準備フェーズ中、前記永続性記憶装置と関連付けられたリソースマネージャを介して持続させ、
前記トランザクションの、１つ以上の参加リソースマネージャから、１つ以上のインダウトトランザクションを取得することと、
前記１つ以上のインダウトトランザクションを前記トランザクションリカバリ情報と突き合わせることによって、前記１つ以上のインダウトトランザクションをコミットするかまたはロールバックするか判断することとを含む、システム。
【請求項１２】
前記トランザクションマネージャは、前記１つ以上のインダウトトランザクションのうちのインダウトトランザクションを、
前記トランザクションリカバリ情報において一致が発見される場合は前記インダウトトランザクションをコミットすること、および、
前記トランザクションリカバリ情報において一致が発見されない場合は前記インダウトトランザクションをロールバックすること
のうちの一方を実行することにより、リカバリするように動作する、請求項１１に記載のシステム。
【請求項１３】
前記トランザクションマネージャは、前記永続性記憶装置への接続を介してトランザクションリカバリ情報テーブルをセットアップするように動作する、請求項１１に記載のシステム。
【請求項１４】
前記トランザクションマネージャは、前記永続性記憶装置と関連付けられた前記リソースマネージャを準備するのに使用されるのと同一のコールにおいて、前記トランザクションリカバリ情報を前記永続性記憶装置において持続させるように動作する、請求項１１に記載のシステム。
【請求項１５】
前記トランザクションリカバリ情報は前記永続性記憶装置から定期的に削除される、請求項１１に記載のシステム。
【請求項１６】
前記トランザクションマネージャは、前記トランザクションリカバリ情報を、前記永続性記憶装置の通常テーブルおよび前記永続性記憶装置のリドゥログのうちの少なくとも一方において持続させる、請求項１１に記載のシステム。
【請求項１７】
前記トランザクションリカバリ情報は、グローバルトランザクション識別子（ＧＴＲＩＤ）と、フォーマット識別子（ＩＤ）と、前記トランザクションの他の参加者に関する情報とを含む、請求項１１に記載のシステム。
【請求項１８】
前記トランザクションマネージャは、
グローバルトランザクション識別子（ＧＴＲＩＤ）、
フォーマット識別子（ＩＤ）およびコンテナ識別子（ＩＤ）、ならびに、
返されるトランザクションリカバリ情報のための境界パラメータとしての、前記１つ以上のリソースマネージャからのインダウトＧＴＲＩＤのリストおよびフォーマット識別子（ＩＤ）、
のうちの少なくとも１つを用いて、前記永続性記憶装置にクエリするように動作する、請求項１１に記載のシステム。
【請求項１９】
前記トランザクションは複数のトランザクションマネージャにまたがっており、前記複数のトランザクションマネージャは種類が異なる製品であってもよく、
前記トランザクションマネージャは、
前記永続性記憶装置内に、トランザクションツリーを崩壊させることによって生成されたグラフを持続させるステップ、および、
前記永続性記憶装置内に、１つ以上の異なるエンドポイントを持続させるステップのうちの、一方を実行するように動作する、請求項１１に記載のシステム。
【請求項２０】
実行されるとシステムに以下のステップを行なわせる命令が格納された非一時的な機械読取可能な記録媒体であって、前記ステップは、
トランザクションのトランザクションリカバリ情報を永続性記憶装置から取得するステップを含み、前記トランザクションリカバリ情報は、準備フェーズ中、前記永続性記憶装置と関連付けられたリソースマネージャを介して持続させ、
前記トランザクションの、１つ以上の参加リソースマネージャから、１つ以上のインダウトトランザクションを取得するステップと、
前記１つ以上のインダウトトランザクションを前記トランザクションリカバリ情報と突き合わせることによって、前記１つ以上のインダウトトランザクションをコミットするかまたはロールバックするか判断するステップとを含む、非一時的な機械読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権に関する注意
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【０００２】
発明の分野
本発明は、概してコンピュータシステムおよびミドルウェア等のソフトウェアに関し、特にトランザクションミドルウェアに関する。
【背景技術】
【０００３】
背景
トランザクションミドルウェアシステム、またはトランザクション指向ミドルウェアは、ある組織内のさまざまなトランザクションを処理することができる企業アプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータ等の新技術の開発に伴い、トランザクションミドルウェアの性能をより一層改善することが必要になっている。これらが、本発明の実施の形態が取組もうとしている一般的な分野である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
データベースへのトランザクションログのインライン委譲に基づいたトランザクションリカバリをサポートするためのシステムおよび方法が提供される。このシステムは、あるトランザクションのトランザクションリカバリ情報を、永続性記憶装置から取得することができる。準備フェーズ中、トランザクションリカバリ情報は、永続性記憶装置に関連付けられたリソースマネージャにおいて持続させる。さらに、このトランザクションの、１つ以上の参加リソースマネージャから、システムは、１つ以上のインダウト（in-doubt）トランザクションを取得することができる。次に、システムは、上記１つ以上のインダウトトランザクションを上記トランザクションリカバリ情報と突き合わせることによって、上記１つ以上のインダウトトランザクションをコミットするかまたはロールバックするかを判断することができる。
【０００５】
本発明のその他の目的および利点は、当業者には、さまざまな実施の形態に関する以下の詳細な説明を添付の図面に照らして読めば明らかになるであろう。
【図面の簡単な説明】
【０００６】
【図１】本発明のある実施の形態に従うトランザクション環境の一例を示す。
【図２】トランザクションミドルウェアマシン環境における２フェーズコミットのサポートの一例を示す。
【図３】トランザクションミドルウェアマシン環境におけるインダウトトランザクションのリカバリの一例を示す。
【図４】本発明のある実施の形態に従う、トランザクションミドルウェアマシン環境におけるトランザクションの処理のための、データベースへのトランザクションログのインライン委譲のサポートの一例を示す。
【図５】本発明の一実施の形態に従う、トランザクションリカバリ情報記録の内容の一例である。
【図６】本発明の一実施の形態に従う、データベースへのトランザクションログのインライン委譲に基づいてトランザクションをリカバリするシステムを示す。
【図７】本発明のある実施の形態に従う、データベースへのトランザクションログのインライン委譲に基づいてトランザクションをリカバリするフローチャートの一例である。
【発明を実施するための形態】
【０００７】
詳細な説明
本発明は、同様の参照符号が同様の構成要素を示している添付の図面に、限定のためではなく例示のために示されている。なお、本開示において「ある」または「一」または「いくつかの」実施の形態に言及している場合、それは必ずしも同一の実施の形態ではなく、こういった表現は、少なくとも１つという意味である。
【０００８】
本発明の以下の説明では、トランザクションミドルウェアマシン環境の一例としてTuxedo環境を用いている。当業者には、その他の種類のトランザクションミドルウェアマシン環境を、限定されることなく使用できることが、明らかであろう。
【０００９】
本明細書において、データベースへのトランザクションログのインライン委譲に基づいたトランザクションリカバリをサポートするためのシステムおよび方法について説明する。このシステムは、あるトランザクションのトランザクションリカバリ情報を、永続性記憶装置から取得することができる。準備フェーズ中、トランザクションリカバリ情報は、永続性記憶装置に関連付けられたリソースマネージャにおいて持続させる。さらに、このトランザクションの、１つ以上の参加リソースマネージャから、システムは、１つ以上のインダウトトランザクションを取得することができる。次に、システムは、上記１つ以上のインダウトトランザクションを上記トランザクションリカバリ情報と突き合わせることによって、上記１つ以上のインダウトトランザクションをコミットするかまたはロールバックするかを判断することができる。
【００１０】
トランザクション環境およびグローバルトランザクション
図１は、本発明のある実施の形態に従うトランザクション環境の一例を示す。図１に示されるように、トランザクション環境１００は、エンドユーザ１０１と、アプリケーションプログラム１０２と、１つ以上のトランザクションマネージャ（transaction manager）（ＴＭ）１０３と、複数のリソースマネージャ（resource manager）（ＲＭ）１０４〜１０６と、１つ以上の永続性記憶装置、たとえばデータベース１１０とを含み得る。
【００１１】
本発明の一実施の形態に従うと、アプリケーションプログラム１０２は、あるトランザクションを構成するアクションを指定することができる。示されているように、アプリケーションプログラム１０２は、トランザクションマネージャ１０３と通信することにより、あるトランザクションを開始、コミット、またはアボートし、トランザクションマネージャ１０３は、アプリケーションプログラム１０２に、このトランザクションの開始、終了、および処置（disposition）を、送り返すことができる。さらに、アプリケーションプログラム１０２は、トランザクションマネージャ１０３に対してトランザクションの境界を定めることができ、トランザクションマネージャ１０３は、トランザクション情報を、複数のリソースマネージャ（ＲＭ）１０４〜１０６と交換することができる。加えて、アプリケーションプログラム１０２は、複数のリソースマネージャ１０４〜１０６と、埋込型構造化クエリ言語（Embedded Structured Query Language）（ＳＱＬ）を介して通信することにより、有用な作業を行なうことができる。
【００１２】
複数のリソースマネージャ１０４〜１０６は、永続性記憶装置、たとえばデータベース１１０へのアクセスを提供することができる。本発明のある実施の形態に従うと、複数のリソースマネージャ１０４〜１０６は、ＸＡインターフェイスを実装することにより、データベースの接続および切断を、永続性記憶装置にとってトランスペアレントな状態で、処理することができる。ＸＡインターフェイスは、トランザクションのコーディネート、コミット、およびリカバリに関するプロトコルが記載された仕様書に基づくものであってもよい。あるトランザクションに参加するＸＡリソースは、ＸＡリソースマネージャとバックエンド永続性記憶装置とを含み得る。
【００１３】
本発明のさまざまな実施の形態に従うと、トランザクションシステムは、２つ以上のサーバ上で実行できるグローバルトランザクションをサポートすることができ、かつ、２つ以上のリソースマネージャからのデータにアクセスすることが可能である。
【００１４】
グローバルトランザクションは、アトミック性（atomicity）、一貫性（consistency）、独立性（isolation）、および永続性（durability）（ＡＣＩＤ）という４つの特性によって特徴付けられるオペレーションの特定のシーケンスとして扱うことができる。グローバルトランザクションは、以下の特徴を有する作業の一論理単位であってもよい。
【００１５】
・すべての部分が成功か、すべての部分が無効かの、いずれかである。
・リソースを、ある一貫した状態から別の状態に正しく変換するオペレーションが実行される。
【００１６】
・同一トランザクションにおける他のプロセスはデータにアクセスし得るが、他のトランザクションは中間結果にアクセスできない。
【００１７】
・完了したシーケンスのすべての効果は、いかなる種類の障害でも変更され得ない。
さらに、グローバルトランザクションは、各々が１つのリソースマネージャにアクセスする、数個のローカルトランザクションを含み得る。１つのローカルトランザクションは、１つのデータベースまたはファイルにアクセスすることができ、このデータベースにおける同時実行性制御および更新のアトミック性を実現するリソースマネージャによって制御することができる。所与のローカルトランザクションは、そのアクセスの完了に成功するか失敗するかのいずれかであり得る。
【００１８】
加えて、トランザクションマネージャ１０３は、グローバルトランザクション識別子（global transaction identifier）（ＧＴＲＩＤ）を、トランザクション環境１００内のさまざまなトランザクションに割当てることができる。トランザクションマネージャ１０３は、これらの進行をモニタリングすることができ、トランザクションの完了を保証し障害をリカバリする役割を果たすことができる。加えて、トランザクションマネージャ１０３は、複数のリソースマネージャ１０４〜１０５とＸＡインターフェイスを介して通信することにより、２フェーズコミットコールをリソースマネージャ１０４〜１０５に送る等のトランザクション情報を交換することができる。
【００１９】
２フェーズコミット（two-phase commit）（２ＰＣ）
２フェーズコミット（２ＰＣ）プロトコルを用いて、疎結合（loosely-coupled）グローバルトランザクション等のトランザクションを実行することができる。２フェーズコミットプロトコル（２ＰＣ）は、準備フェーズとコミットフェーズとを含み得る。準備フェーズでは、コーディネートトランザクションマネージャ（ＴＭ）が、参加しているリソースマネージャ（ＲＭ）に、トランザクションをコミットするかまたはアボートするために必要な措置を講じるよう指示する。コミットフェーズでは、トランザクションマネージャ（ＴＭ）が、準備フェーズの結果に基づいて、トランザクションをコミットするかアボートするかを判断する。
【００２０】
図２は、トランザクションミドルウェアマシン環境における２フェーズコミットのサポートの一例を示す。図２に示されるように、トランザクション環境２００は、さまざまなトランザクションの実行をサポートするトランザクションマネージャ２０１と、１つ以上のデータソース、たとえばデータベース２０５を管理する１つ以上のリソースマネージャ２０２〜２０４とを含み得る。
【００２１】
たとえば、トランザクションマネージャ２０１は、それぞれリソースマネージャ２０２〜２０４に対して実行できるトランザクション分岐Ａ２１１とトランザクション分岐Ｂ２１２とトランザクション分岐Ｃ２１３とを含むトランザクションを、実行することができる。このトランザクションにおいていずれかの分岐に障害が発生した場合、トランザクションマネージャ２０１は、このトランザクションをコミットするかまたはロールバックするかをリソースマネージャ２０２〜２０４が判断するのを支援することができる。
【００２２】
図２に示されるように、トランザクションマネージャ２０１は、３つの分岐すべてにおいて、準備の指示をリソースマネージャ２０２〜２０４に送信することができる（ステップ１、２、および３）。リソースマネージャ２０２〜２０４が「ＯＫ」という投票を返す（ステップ４、５、および６）と、その後、トランザクションマネージャ２０１は、トランザクションログをデータベース２０５に書込むことができる（ステップ７）。
【００２３】
トランザクションログ（transaction log）（ＴＬＯＧ）は、コミットフェーズ中にいずれかの分岐に障害が発生した場合にトランザクションをリカバリするのに十分な情報をトランザクションマネージャ２０１が持つことができるよう、ファイルまたはデータベースに書込んでおけばよい。
【００２４】
次に、トランザクションマネージャ２０１は、リソースマネージャ２０２〜２０４に、３つの分岐すべてをコミットするよう指示することができる（ステップ８、９、および１０）。リソースマネージャ２０２〜２０４は、コミットフェーズの完了に成功した後に、トランザクションマネージャ２０１に知らせることができる（ステップ１１、１２、および１３）。
【００２５】
トランザクションログ（ＴＬＯＧ）に基づいたトランザクションリカバリ
本発明の一実施の形態に従うと、トランザクションログ（ＴＬＯＧ）は、トランザクションマネージャが下した、トランザクションをコミットするための判断を保持することができる。たとえば、ＴＬＯＧはリソースチェックポイント記録を格納することができる。トランザクションマネージャは、この記録を持続させることによって、参加しているさまざまなＸＡリソースを追跡することができる。
【００２６】
トランザクションは、準備フェーズ後にすべてのトランザクション分岐から成功という投票をトランザクションマネージャが受けたときに、ＴＬＯＧに書込むことができる。ＴＬＯＧにおけるトランザクション記録は、少なくとも、トランザクションマネージャによって割当てられたＧＴＲＩＤをさらに含むトランザクション識別子（ＸＩＤ）と、トランザクションが実行される場合にリソースマネージャによって割当てられるローカルＸＩＤとを含み得る。
【００２７】
さらに、ＴＬＯＧは、コミットされることが指定されているインフライト（in-flight）トランザクションの状態の記録を保持し得る。ＴＬＯＧは、インダウトトランザクションのリカバリに役立つ。インダウトトランザクションは、システムのクラッシュ後に、準備は完了しているが中間層トランザクションシステムにおいてまだコミットされていないトランザクションである。インダウトトランザクションがリカバリされなければ、クラッシュ後のシステムは不正確で一貫していない状態となり得る。
【００２８】
たとえば、２フェーズコミットトランザクション中にシステムに障害が発生した場合、１つのバックエンドデータ記憶装置に対する更新は既にコミットされているかもしれないが、同一トランザクションにおける別のデータ記憶装置に対する更新のコミットはまだ指示されていないかもしれない、すなわち、データ記憶装置の更新は保留されたままである。システムにおいて障害が発生した部分が再起動されると、保留中の更新を保持しているデータ記憶装置は、この更新をコミットすべきかまたはロールバックすべきかわからない場合がある。
【００２９】
図３は、トランザクションミドルウェアマシン環境におけるインダウトトランザクションのリカバリの一例を示す。図３に示されるように、トランザクションミドルウェアマシン環境３００は、トランザクションマネージャ３０１と、複数のリソースマネージャ３０２〜３０４と、永続性記憶装置、すなわちデータベース３０５とを含む。
【００３０】
トランザクションマネージャ３０１は、ＴＬＯＧを読出すことによって、グローバルトランザクションがインダウトであるか否かを自動的に判断できる（ステップ１）。次に、トランザクションマネージャ３０１は、参加しているリソースマネージャ３０２〜３０４の関連するバックエンドデータ記憶装置をポーリングすることができる。参加しているリソースマネージャ３０２〜３０４は各々、ロールバックするのかコミットするのかトランザクションマネージャ３０１がわかっていないトランザクションであるインダウトトランザクションのリストを返すことができる（ステップ２、４、および６）。
【００３１】
さらに、トランザクションマネージャ３０１は、各インダウトトランザクションをＴＬＯＧと突き合わせ、続いて、異なるリソースマネージャ３０２〜３０４に対し、インダウトトランザクションをコミットまたはロールバックすることができる（ステップ３、５、および７）。たとえば、ＴＬＯＧにインダウトトランザクションがあるときは、XAResource.commit()をコールして、ＴＬＯＧにおいて指定されているリソースマネージャに、このインダウトトランザクションをコミットすることができる。一方、ＴＬＯＧにインダウトトランザクションがないとき、すなわちクラッシュ前にコミットという判断がトランザクションに対して下されていないときは、XAResource.rollback()をコールして、トランザクション識別子（ＸＩＤ）に基づき、それをリソースマネージャにロールバックすることができる。
【００３２】
図３に示されるように、トランザクションがリソースマネージャ３０２上に既に準備されておりリソースマネージャ３０２からトランザクションマネージャ３０１に成功という投票を送ることができるようになる前にシステムがクラッシュする場合がある。その場合、トランザクションマネージャ３０１は、すべてのトランザクション分岐から成功という投票を受けることができないかもしれず、そうするとトランザクションをＴＬＯＧにロギングできない。よって、トランザクションマネージャ３０１は、すべての分岐トランザクションをリソースマネージャ３０２〜３０４にそれぞれロールバックすればよい。このようにして、トランザクションマネージャは、このような一貫しかつ予測可能なトランザクションリカバリ手法を用いて、コミットされる分岐とロールバックされる分岐がある場合に複雑でヒューリスティックな完了を回避することができる。
【００３３】
データベースへの中間層トランザクションログのインライン委譲
図４は、本発明のある実施の形態に従う、トランザクションミドルウェアマシン環境におけるトランザクションの処理のための、データベースへのトランザクションログのインライン委譲のサポートの一例を示す。図７に示されるように、中間層トランザクションシステム４００は、１つ以上のトランザクションマネージャ（ＴＭ）４０１〜４０２と、複数のリソースマネージャ（ＲＭ）４０３〜４０４とを含む。リソースマネージャ（ＲＭ）４０３〜４０４はグローバルトランザクション４１０に参加することができる。
【００３４】
さらに、データベース４０５がリソースマネージャ４０３に関連付けられ、データベース４０５は、トランザクションリカバリ情報を格納するためのリカバリ情報テーブル４０６、たとえばLtxidテーブルを含み得る。加えて、データベース４０５は、他のリソースマネージャ、たとえばリソースマネージャ４０４の永続性記憶装置としても機能することができる、データベースクラスタ内のデータベースのインスタンスであってもよい。
【００３５】
本発明のある実施の形態に従うと、トランザクション４１０は複数のトランザクションマネージャ４０１〜４０２にまたがっていてもよい。図４に示されるように、このシステムは、トランザクションマネージャ４０２をトリガすることにより準備要求をリソースマネージャ４０４等のＸＡリソースに送ることによって、２フェーズコミットコールを開始することができる（ステップ１）。
【００３６】
次に、トランザクションマネージャ４０１が、リソースマネージャ４０３に、データベース４０５内のリカバリ情報テーブル４０６をセットアップするよう指示することができる（ステップ２）。トランザクションマネージャ４０１は、ファンクションをコールしトランザクションリカバリ情報をパラメータとしてこのファンクションに送ることにより、リカバリ情報テーブル４０６をセットアップすることができる。たとえば、トランザクションマネージャ４０１は、データベース４０５への接続上にsetClientInfo("SYS_CONTEXT.WLS_LTXID_INFO", ltxidRelatedInfo)をコールすることができ、"ltxidRelatedInfo"は、フォーマット識別子、グローバルトランザクション識別子、およびこのトランザクションに登録（enlist）されている他のリソースに関する情報を含み得るトランザクションリカバリ情報である。トランザクションリカバリ情報はまた、より複雑なトランザクションの種類をサポートするのに必要な他の情報を含み得る。
【００３７】
さらに、トランザクションマネージャ４０１は、リソースマネージャ４０３を準備することができ、トランザクションリカバリ情報をリカバリ情報テーブル４０６において持続させることができる（ステップ３）。たとえば、トランザクションリカバリ情報を持続させることは、準備オペレーション中、データベース２０５への一回のトリップで行なうことができ、そうすることによってデータベース４０５へのトリップをセーブする。この準備フェーズは、リソースマネージャ４０３〜４０４が各々、成功という投票を返した（ステップ４および５）後に、完了する。
【００３８】
トランザクションマネージャ４０１〜４０２は、準備フェーズの最後に、ＴＬＯＧ等のトランザクション記録を持続させることを行なわずに済ますことができる。その代わりに、トランザクションマネージャ４０１〜４０２は続いて、リソースマネージャ４０３に対してトランザクション４１０をコミットする（ステップ７）前に、リソースマネージャ４０４に対してトランザクション４１０をコミットすることができる（ステップ６）。コミットフェーズは、リソースマネージャ４０３〜４０４が各々、トランザクション４１０のコミットに成功した（ステップ８および９）後に、完了する。
【００３９】
本発明のある実施の形態に従うと、データベース４０５と関連付けられたリソースマネージャ４０３は、ローカルリソースマネージャ、すなわちＸＡインターフェイスを実装しないリソースマネージャであってもよい。トランザクションマネージャ４０１は、リソースマネージャ４０４における準備フェーズの完了後、このローカルリソースマネージャのコミットオペレーションの間、トランザクションリカバリ情報を持続させることができ、トランザクションリカバリ情報はローカルリソースマネージャ４０３上にセットアップすることができる。
【００４０】
図５は、本発明の一実施の形態に従う、トランザクションリカバリ情報記録の内容の一例を示す。図５に示されるように、データベース５００内の、Ltxidテーブル等のトランザクションリカバリ情報記録５０１は、グローバルトランザクション識別子（ＧＴＲＩＤ）５１０と、フォーマット識別子部５１１と、関連情報部５１４とを含み得る。
【００４１】
フォーマット識別子部５１１は、Open Group標準によってベンダに割当てられた固有識別子であるフォーマット識別子を含み得る。これを用いることによって、異なる製品を区別する、たとえば、TuxedoトランザクションをWebLogicトランザクションから区別することができる。
【００４２】
グローバルトランザクション識別子（ＧＴＲＩＤ）は、コンテナ識別子部５１２と残余ＧＴＲＩＤ部５１３とを含む、異なる２つのフィールドとして、リカバリ情報記録５０１において持続させることができる。コンテナ識別子部５１２は、トランザクション処理ミドルウェアシステム内の特定のグループまたはマネージド（managed）サーバに割当てられた固有識別子であるコンテナ識別子を含み得る。たとえば、コンテナ識別子を用いることによって、Tuxedoトランザクションシステム内のあるグループによってまたはWebLogicトランザクション処理システム内のマネージドサーバによって処理されるトランザクションを識別することができる。残余ＧＴＲＩＤ部５１３はＧＴＲＩＤの残りのバイトを含む。
【００４３】
したがって、トランザクションリカバリ情報記録５０１は、グローバルトランザクション識別子（ＧＴＩＲＤ）、フォーマット識別子（ＩＤ）、およびコンテナ識別子（ＩＤ）を用いてクエリされることができる。さらに、このシステムは、返されるトランザクションリカバリ記録に対する境界（bounding）パラメータとして、リソースマネージャからのインダウトＧＴＩＲＤのリストおよびフォーマット識別子（ＩＤ）を用いることができる。
【００４４】
本発明の一実施の形態に従うと、リカバリ情報記録５０１を、データベース５００のリドゥ（redo）ログ、または、他の種類の永続性記憶装置において持続させることができる。
【００４５】
トランザクションリカバリ
図６は、本発明の一実施の形態に従う、データベースへのトランザクションログのインライン委譲に基づいてトランザクションをリカバリするシステムを示す。図６に示されるように、中間層トランザクションシステム６００は、１つ以上のトランザクションマネージャ６０１〜６０２を含む。さらに、中間層トランザクションシステム６００は、複数のリソースマネージャ６０３〜６０４と、トランザクションリカバリ情報テーブル６０６を含むデータベース６０５とを含む。
【００４６】
リカバリプロセスの開始時に、トランザクションマネージャ６０１は、データベース６０５と関連付けられているリソースマネージャ６０３に対し、リカバリ情報テーブル（ＬＴＸＩＤテーブル）６０６に格納されているトランザクションリカバリ情報について、クエリすることができる（ステップ１）。トランザクションマネージャ４０１は、リソースマネージャ６０３から、クエリしたトランザクションリカバリ情報を受け（ステップ２）、その後リカバリプロセスを続行することができる。
【００４７】
図６に示されるように、トランザクションマネージャ６０２は、リソースマネージャ６０４等のＸＡリソースマネージャ各々に対して、XA_recover()コールを実行することができる（ステップ３)。すると、ＸＡリソースマネージャ６０４は、既に準備されているがコミットされていないトランザクションであるインダウトトランザクションのリストを返すことができる（ステップ４）。
【００４８】
さらに、トランザクションマネージャ６０２は、インダウトトランザクションをコミットすべきかまたはロールバックすべきか判断するために、このインダウトトランザクションのリストを、データベース６０５から得たトランザクションリカバリ情報記録と突き合わせることができる（ステップ７）。たとえば、インダウトトランザクションのリストの中のあるインダウトトランザクションが、トランザクションリカバリ情報記録と一致していれば、このトランザクションをコミットすることができ、そうでなければロールバックすることができる。
【００４９】
また、トランザクションマネージャ６０１は、リソースマネージャ６０３に対してリカバリを実行することができる（ステップ５）。これに応じて、リソースマネージャ６０３は、インダウトトランザクションのリストを返すことができる（ステップ６）。このインダウトトランザクションのリストを、データベース６０５から得たトランザクションリカバリ情報記録と突き合わせることができる。このインダウトトランザクションのリストの中のあるインダウトトランザクションが、トランザクションリカバリ情報記録と一致していれば、このトランザクションをコミットすることができ、そうでなければロールバックすることができる（ステップ８）。
【００５０】
これに代えて、トランザクションマネージャ６０１〜６０２は、インダウトトランザクションのリストの取得後に、トランザクションリカバリ情報を取得してもよい。次に、リソースマネージャ６０３〜６０４から返されたインダウトトランザクションのリストを、ファンクションに送られる境界パラメータとして用いることにより、返す記録の数を示すことができる。
【００５１】
加えて、永続性記憶装置内のトランザクションリカバリ情報を、データベースによって定期的にパージすることができる。トランザクションリカバリ記録は、これら記録の「保存期間」を超えたときにパージしてもよい。たとえば、「保存期間」は、トランザクション処理システムに設定された放棄タイムアウト（abandonment timeout）に等しいかそれよりも長くてもよい。加えて、リカバリ記録は、所与のセッションで新たなローカルＸＩＤが使用されるときにパージしてもよい。また、データベースサーバ内のタイマスレッドが、ある間隔で、たとえば３０秒毎に実行することにより、このようなパージすべき候補を検査する。
【００５２】
本発明の一実施の形態に従うと、このシステムを用いて、トランザクションマネージャ６０３〜６０４にまたがる分散トランザクション６１０等の、複数のトランザクションマネージャにまたがる複雑なトランザクションを扱うことができる。
【００５３】
「所有」のシナリオを示す例において、トランザクションマネージャ６０１およびトランザクションマネージャ６０２は、同一製品に基づいていてもよい。たとえば、トランザクションマネージャ６０１および６０２がいずれも、WebLogicトランザクションマネージャであるかまたはTuxedoトランザクションマネージャである。図６に示されるように、トランザクションツリーにおいて、トランザクションマネージャ６０１がコーディネートトランザクションマネージャ、トランザクションマネージャ６０１が従属トランザクションマネージャであってもよい。
【００５４】
このようなトランザクションのリカバリのために、ルートノード／サーバ／トランザクションマネージャ／コーディネータであってもよいトランザクションマネージャ６０１は、トランザクションマネージャ６０２を含む、挿入された従属部からなるトランザクションツリーを、下位に向かってコールすることができる。よって、トランザクションマネージャ６０１は、従属部に対し、トランザクション６１０を、各Ｘｉｄについて適切に、コミットまたはロールバックすることができる。従属部、たとえばトランザクションマネージャ６０２からは、これらのコールを、これらが既に登録（enlist）されている実際のリソースマネージャ、たとえばリソースマネージャ６０４に対して、発することができる。
【００５５】
この場合、従属部、たとえばトランザクションマネージャ６０２は、自身のインダウト記録をロギングするという点でリソースマネージャとして機能してもよい。ルートノード、たとえばトランザクションマネージャ６０１は、トランザクション６１０をリカバリし従属部に対する中間層トランザクションログ（ＴＬＯＧ）を軽減するために、従属部、たとえばトランザクションマネージャ６０２から記録を受けなくてもよい。たとえば、WebLogicにおけるトランザクションは、従属部がデータベース６０５内のルートＬＬＲ記録に対して直接クエリするようにすることによって、追加情報をロギングすることなく、リカバリできる。なぜなら、システムが、ＧＴＲＩＤ内のコーディネータ識別子（ＩＤ）を調べることによって従属部を認識できるからである。
【００５６】
「複数の製品にまたがる所有」のシナリオを示す別の例において、トランザクションマネージャ６０１およびトランザクションマネージャ６０２は、同一ベンダによる異なる製品に基づいていてもよい。たとえば、トランザクションマネージャ６０１がTuxedoトランザクションマネージャ、トランザクションマネージャ６０２がWebLogicトランザクションマネージャであってもよく、その逆であってもよい。この場合、従属部および／またはリソースに関する追加情報を、Xid／コミット−記録の一部として格納する必要がある場合がある。すなわち、本質的に、トランザクションツリーを崩壊させて、コミット−記録の一部として格納されるグラフにすることができる。
【００５７】
「interop（ＯＴＳおよびＷＳ−ＡＴ）」のシナリオを示すもう１つの例において、トランザクションマネージャ６０１およびトランザクションマネージャ６０２は、interop要素がなければ互いに直接通信できない、異なるベンダによる異なる製品に基づいていてもよい。上記の場合とは異なり、このシステムは、トランザクションツリーの全体を崩壊させることはできず、数キロバイト（ｋｂ）であってもよいこれら異なるエンドポイントを持続させる必要があるであろう。さらに、interopプロトコルのための推定−アボート（presumed-abort）リカバリは、トップダウンＸＡリカバリコールによって駆動されるのではなく、その代わりに従属ノード／サーバ／トランザクションマネージャ／コーディネータからのボトムアップコールによって駆動されてもよい。たとえば、上位エンドポイントは、WebLogicおよび／またはTuxedoトランザクションマネージャが従属部であるとき、持続させる必要があるであろう。
【００５８】
図７は、本発明のある実施の形態に従う、データベースへのトランザクションログのインライン委譲に基づいてトランザクションをリカバリするフローチャートの一例である。図７に示されるように、ステップ７０１で、トランザクションマネージャは、あるトランザクションのトランザクションリカバリ情報を、永続性記憶装置から取得することができ、このトランザクションリカバリ情報は、準備フェーズ中、永続性記憶装置と関連付けられたリソースマネージャを介して持続させる。さらに、ステップ７０２で、トランザクションマネージャは、このトランザクションの、１つ以上の参加リソースマネージャから、１つ以上のインダウトトランザクションを取得することができる。次に、ステップ７０３で、トランザクションマネージャは、上記１つ以上のインダウトトランザクションをトランザクションリカバリ情報と突き合わせることによって、上記１つ以上のインダウトトランザクションをコミットするかまたはロールバックするかを判断することができる。
【００５９】
本発明は、本開示の教示に従いプログラムされた１つ以上のプロセッサ、メモリ、および／またはコンピュータ読取可能な記録媒体を含む、従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを１つ以上用いて、適宜実現し得る。適切なソフトウェアコーディングは、熟練したプログラマが本開示の教示に基づいて容易に準備できる。これはソフトウェア技術における当業者には明らかであろう。
【００６０】
実施の形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された記録媒体または（１つまたは複数の）コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピーディスク（登録商標）、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／またはデータを記憶するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【００６１】
本発明に関するこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者が本発明のさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は、以下の特許請求の範囲およびその均等物によって定められることが意図されている。
【図１】
2015514247.tif 000003
【図２】
2015514247.tif 000004
【図３】
2015514247.tif 000005
【図４】
2015514247.tif 000006
【図５】
2015514247.tif 000007
【図６】
2015514247.tif 000008
【図７】
2015514247.tif 000009
【国際調査報告】
2015514247.tif 000010
2015514247.tif 000011
2015514247.tif 000012