Oracle Tuxedoアプリケーションの設定

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

TuxedoをOracle Real Application Clusters (RAC)と共に使用

この章の内容は次のとおりです。

このリリースでは、以前のリリースで追加された次のRAC機能もサポートされています。

 


インスタンス認識

Oracle Databaseに関連するサーバーの場合、Tuxedoはカスタマイズされたコールバックを使用して、Oracle Databaseのインスタンス情報を取得します。

 


XAアフィニティでのTuxedoの使用

この項の内容は次のとおりです。

概要

Oracle RAC環境では、データベースとインスタンス間に1対多の関係があります。Oracle RACで実行されているサーバーまたはTuxedoアプリケーションのグループは、異なるインスタンスに接続する可能性があります。

可能な場合、すべてのデータベース操作を同じRACインスタンスに接続し(該当の操作が1つのグローバル・トランザクション・ブランチで行われるのか、または1つのグローバル・トランザクション内の異なるブランチで行われるかは関係ない)、TuxedoドメインとWebLogic Server間でWebLogic Tuxedo Connector (WTC)を介してアフィニティ情報を自動的に交換するのが、XAアフィニティの役割です。

XAアフィニティの優先度

次に、Tuxedoサーバーの選択ルールを優先度が高い順から低い順に示します。

XAアフィニティが有効な場合、環境変数TUXRACGROUPSで指定されたOracle RACルーティング・ルールは無効になります。

注: XAアフィニティはドメイン・ルーティングには影響しません。リクエストがドメインに到着し、そのドメイン内でサービスへのルーティングが開始される場合にのみ、XAアフィニティはサーバーのルーティングに影響します。

XAアフィニティ・ポリシー

まず、Tuxedoは同じインスタンス名、DB名およびサービス名に関連付けられたサーバーを選択します。これが支配した場合、Tuxedoは次のポリシーに従ってサーバーを見つけます。

注: 同じ優先度の複数のサーバーが見つかると、Tuxedoは通常のロード・バランスに応じてサーバーを見つけます。

前提条件

ソフトウェア要件

Exalogic上のLinuxプラットフォームおよびSPARC SuperCluster上のSolarisプラットフォームのみをサポートします。

特定のプラットフォームのソフトウェア要件の詳細は、「Oracle Tuxedo 12c リリース2 (12.1.3)プラットフォーム・データ・シート」を参照してください。

インストールに関する注意

構成

UBBCONFIG *RESOURCESセクションのOPTIONSにオプションEECSが指定されているかぎり、XAアフィニティ機能はデフォルトで有効です。XAアフィニティを明示的に無効にする新しいオプションNO_XAAFFINITYが、UBBCONFIG *RESOURCESセクションのRMOPTIONSに導入されています。

RMOPTIONS {[...|NO_XAAFFINITY],*}

リスト6-1に、EECSの構成例を示します。リスト6-2に、XAアフィニティを明示的に無効にする例を示します。

リスト6-1 EECSの構成例
* RESOURCES
OPTIONS		EECS
リスト6-2 XAアフィニティを明示的に無効にする例
* RESOURCES
OPTIONS		EECS
RMOPTIONS		NO_XAAFFINITY

tuxedoアプリケーションがアクティブでない場合、このフラグは、TM_MIBを介してT_DOMAINクラスで指定することもできます。詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。

注: XAアフィニティでは、TuxedoサーバーがOracle Databaseのインスタンス情報を取得する必要があります。ユーザーは、TuxedoのTM_MIB T_SERVERクラスのTA_INSTSTRフィールドを介して、サーバーのインスタンス情報を問い合せることができます。詳細は、「T_SERVERクラス定義」を参照してください。

制限

 


共通XIDでのTuxedoの使用

この項の内容は次のとおりです。

概要

一般に、グローバル・トランザクションでは、参加している各グループにはそれぞれのトランザクション・ブランチがあり、特別なトランザクション・ブランチ識別子(XID)で各ブランチが識別されます。グローバル・トランザクションに複数のグループが含まれる場合、Oracle Tuxedoは各ブランチで2フェーズ・コミットを採用し、最初の参加グループをコーディネータとして使用します。

ただし、このリリースの共通XID機能により、コーディネータ・グループのトランザクション・ブランチが、同じトランザクション内の他のすべてのグループと共有されます。同じサービスを介して同じOracle Databaseインスタンスに接続するグループは、コーディネータ・ブランチを直接使用します。このようなグループの場合、XAコミット処理は不要であり、保存されます。

グローバル・トランザクション内のすべてのグループがコーディネータ・ブランチを直接使用するという最も極端なケースでは、Oracle Tuxedoは、2フェーズ・コミットではなく1フェーズ・コミットを採用します。TLOGは作成されません。

一般的なシナリオ

Tuxedoアプリケーション・ドメインDOM1に、GRP1およびGRP2という2つのグループがあるとします。サーバーSERV1GRP1に属し、サービスSVC1を提供します。これに対し、サーバーSERV2GRP2に属し、サービスSVC2を提供します。SERV1SERV2は、両方とも同じインスタンスに接続します。

ネイティブ・クライアントがグローバル・トランザクションを開始して、最初にSVC1を、次にSVC2を呼び出し、トランザクションをコミットします。

前述のケースで共通XID機能が有効な場合、Tuxedoはトランザクションで1フェーズ・コミットを呼び出し、TLOGは作成されません。それ以外の場合は、2フェーズ・コミットが呼び出されます。

ユーザーはTMTRACEを介して前述の動作をトレースできます。詳細は、「TMTRACE」を参照してください。

前提条件

ソフトウェア要件

Exalogic上のLinuxプラットフォームおよびSPARC SuperCluster上のSolarisプラットフォームのみをサポートします。

特定のプラットフォームのソフトウェア要件の詳細は、「Oracle Tuxedo 12c リリース2 (12.1.3)プラットフォーム・データ・シート」を参照してください。

インストールに関する注意

構成

UBBCONFIG *RESOURCESセクションのOPTIONSにオプションEECSが指定されているかぎり、共通XID機能はデフォルトで有効です。共通XIDを明示的に無効にする新しいオプションNO_COMMONXIDが、UBBCONFIG *RESOURCESセクションのRMOPTIONSに導入されています。

RMOPTIONS {[...|NO_COMMONXID],*}

リスト6-1「EECSの構成例」(6-4ページ)に、EECSの構成例を示します。リスト6-3に、共通XIDを明示的に無効にする例を示します。

リスト6-3 共通XIDを明示的に無効にする例
* RESOURCES
OPTIONS		EECS
RMOPTIONS		NO_COMMONXID

tuxedoアプリケーションがアクティブでない場合、このフラグは、TM_MIBを介してT_DOMAINクラスで指定することもできます。詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。

注: 共通XIDでは、TuxedoサーバーがOracle Databaseのインスタンス情報を取得する必要があります。ユーザーは、TuxedoのTM_MIB T_SERVERクラスのTA_INSTSTRフィールドを介して、サーバーのインスタンス情報を問い合せることができます。詳細は、「T_SERVERクラス定義」を参照してください。

制限

 


Single Group Multiple Branches (SGMB)でのTuxedoの使用

この項の内容は次のとおりです。

概要

以前のリリースの同じ参加グループ内のサーバーは、グローバル・トランザクション内の同じトランザクション・ブランチを使用します。しかし、これらのサーバーがRACの異なるインスタンスに接続すると、トランザクション・ブランチは失敗します。1つのブランチが異なるインスタンスを経由できないことを意味する、XAエラーXAER_AFFINITYが報告されます。このため、Tuxedoグループが使用するRACサービスは、シングルトンRACサービスである必要があります。DTPサービス(DTPオプションであるsrvctl modify service内の-xが指定されている場合)または1つのインスタンスのみで提供されるサービスを、シングルトンRACサービスに指定することができます。

このリリースでは、単一グループ内の異なるインスタンス上の異なるトランザクション・ブランチを使用することで、問題が解決されます。Tuxedoグループは非シングルトン・サービスを使用できるため、ロード・バランスなどの利点を享受できます。

前提条件

ソフトウェア要件

Exalogic上のLinuxプラットフォームおよびSPARC SuperCluster上のSolarisプラットフォームのみをサポートします。

特定のプラットフォームのソフトウェア要件の詳細は、「Oracle Tuxedo 12c リリース2 (12.1.3)プラットフォーム・データ・シート」を参照してください。

インストールに関する注意

構成

UBBCONFIG *RESOURCESセクションのOPTIONSにオプションEECSが指定されているかぎり、SGMB機能はデフォルトで有効です。SGMBを明示的に無効にする新しいオプションSINGLETONが、UBBCONFIG *RESOURCESセクションのRMOPTIONSに導入されています。

RMOPTIONS {[...|SINGLETON],*}

このオプションは、ドメイン内で使用されるすべてのRACサービスがシングルトンであることを指定します。したがって、SGMB機能は必要ありません。

リスト6-1「EECSの構成例」(6-4ページ)に、EECSの構成例を示します。リスト6-4に、SGMBを明示的に無効にする例を示します。

リスト6-4 SGMBを明示的に無効にする例
* RESOURCES
OPTIONS		EECS
RMOPTIONS		SINGLETON

tuxedoアプリケーションがアクティブでない場合、このフラグは、TM_MIBを介してT_DOMAINクラスで指定することもできます。詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。

注: SGMBでは、TuxedoサーバーがOracle Databaseのインスタンス情報を取得する必要があります。ユーザーは、TuxedoのTM_MIB T_SERVERクラスのTA_INSTSTRフィールドを介して、サーバーのインスタンス情報を問い合せることができます。詳細は、「T_SERVERクラス定義」を参照してください。

制限

 


Fast Application Notification (FAN)でのTuxedoの使用

この項の内容は次のとおりです。

概要

Tuxedoは、次の目的でFast Application Notification (FAN)を使用します。

前提条件

ソフトウェア要件

Exalogic上のLinuxプラットフォームおよびSPARC SuperCluster上のSolarisプラットフォームのみをサポートします。

特定のプラットフォームのソフトウェア要件の詳細は、「Oracle Tuxedo 12c リリース2 (12.1.3)プラットフォーム・データ・シート」を参照してください。

インストールに関する注意

構成

DBにおける構成

DB構成の内容は次のとおりです。

ONS

Oracleサーバー側で、ONSデーモンを有効にする必要があります。

Tuxedoがネイティブ・クライアントと見なされる場合は、クライアント側のONSデーモンも有効にする必要があります。ONSデーモンの構成ファイルは、$ORACLE_HOME/opmn/conf/ons.configにあります。ONSの構成後、ONSデーモンをonsctl startコマンドで開始します。ONSデーモンが常に実行されていることを確認してください。

Tuxedoがリモート・クライアントと見なされる場合は、クライアント側のONSデーモンは使用されません。これが優先モードです。

注: Oracleクライアント側でOracleバージョンが12.1.0.1.0より低い場合は、ONSデーモンを有効にする必要があります。
ロード・バランシング・アドバイザ(LBA)

サービスにロード・バランシング・アドバイザの目標がある場合、ONSはサービスに関するLBAを公開することがあります。サービスの作成時または変更時に、-Bオプションを使用して(srvctlを介して)目標を指定できます。

TAF

TAFが有効な場合、すべてのTuxedoサーバーはTAFによる再接続を自動的に実行できます。それ以外の場合、XAサーバーのみが再接続を自動的に実行できます。

再接続は、ユーザー・コードの次の要件を使用してTAFによって終了されます。

Tuxedoにおける構成

UBBCONFIG *SERVERSセクションでTMFANサーバーを構成し、UBBCONFIG *RESOURCESセクションのOPTIONSでオプションEECSを構成する必要があります。FANを明示的に無効にする新しいオプションNO_FANが、UBBCONFIG *RESOURCESセクションのRMOPTIONSに導入されています。

RMOPTIONS {[...|NO_FAN],*}

リスト6-1「EECSの構成例」(6-4ページ)に、EECSの構成例を示します。リスト6-5に、FANを明示的に無効にする例を示します。

リスト6-5 FANを明示的に無効にする例
* RESOURCES
OPTIONS		EECS
RMOPTIONS		NO_FAN

tuxedoアプリケーションがアクティブでない場合、このフラグは、TM_MIBを介してT_DOMAINクラスで指定することもできます。詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。

注: FANでは、TuxedoサーバーがOracle Databaseのインスタンス情報を取得する必要があります。ユーザーは、TuxedoのTM_MIB T_SERVERクラスのTA_INSTSTRフィールドを介して、サーバーのインスタンス情報を問い合せることができます。詳細は、「T_SERVERクラス定義」を参照してください。

制限

 


TuxedoをOracle Real Application Clusters (RAC)と共に使用

この項の内容は次のとおりです。

概要

Oracle Real Application Clusters (RAC)は、レプリケートされたOracleデータベース・サービスを使用して同一のOracleデータベースにアクセスするマシンのクラスタリングをサポートします。Oracle RACを使用すると、物理的に異なるOracleサーバー・マシン上に存在する複数のインスタンスから同一のOracleデータベースに同時アクセスできます。また、失敗したデータベース・インスタンスを別の場所にフェイルオーバーすることが可能です。

ただし、XAトランザクション環境でこれらのレプリケーションやフェイルオーバーの機能を利用したり、最適なRACパフォーマンスを実現したりするには、トランザクション・モニター側にOracle RAC用の特殊サポートが必要になります。これはOracle 10gでは、同一XAトランザクション内の複数のRACインスタンスから同一データベースにアクセスすることは許可されないためです。

注: Oracle 12cでは、同一のXAトランザクション内にある複数のRACインスタンスから同一のデータベースにアクセスできますが、すべてのアクセスが同一のRACインスタンスから特定のXAトランザクション内で行われるとパフォーマンスは向上する可能性があります。

さらにOracle 10gR1では、RACインスタンス間のトランザクション・フェイルオーバーの準備に、トランザクション・モニターが必要です。

Tuxedoでは、異なるRACインスタンスに関連付けられたグループのリストを管理者が指定できるようにすることで、Oracle RACに対するトランザクション・モニターのサポートを提供しています。これにより、同じRACデータベースの異なるインスタンスに関連付けられたグループが、同一トランザクションに参加しないことが保証されます。TuxedoのOracle RAC用サポートには、Oracle 10gR1の使用時に必要な、RACフェイルオーバー・イベントをTuxedoトランザクション・マネージャ・サーバー(TMS)プロセスに通知する機能も含まれています。

このため、TMSはRACフェイルオーバー・リカバリの必要に応じて、Oracle 10gR1の準備されたトランザクションのリストをOracleから再取得できます。

注: Oracle 10gR2を使用する場合、管理者はOracle <b>DTP Service</b>を使用してOracle RACシステムにアクセスする必要があります。このDTPサービス名は、関連付けられているTuxedoグループのOPENINFO文字列で指定する必要があります。Oracle 10gR2はサービス名を検証し、必要に応じて別のインスタンスに移行します。
注: Oracle 12c以降のリリースを使用する場合、サービス名は透過的になり、特定の構成をしなくても必要に応じて自動的に代替インスタンスに移行されます。

制限

ソフトウェア要件

特定のプラットフォームのソフトウェア要件の詳細は、「Oracle Tuxedo 12c リリース2 (12.1.3)プラットフォーム・データ・シート」を参照してください。

Oracle RACを使用するためのTuxedoの構成

TuxedoでOracle RACをサポートするためには、次の2つの作業が必要です。

以下のコマンドおよび環境変数は、TuxedoのOracle RACサポートの構成でのみ使用されます。

トランザクション伝播の構成

Oracle 10gR1では、同一XAトランザクション内の複数のRACインスタンスから同一データベースにアクセスすることは許可されません。さらにOracle 10gR1では、RACインスタンス間のトランザクション・フェイルオーバーの準備に、トランザクション・モニターが必要です。

Oracle 10gR2では、複数の異なるRACインスタンスがRAC内の異なるトランザクション・ブランチで動作できますが、トランザクション・ブランチが異なるインスタンス上にある場合は、それらのブランチは疎結合され、ロックを共有しません。最適なコミット・パフォーマンスを実現するには、所定のXAトランザクション内では単一のRACインスタンスのみを使用することが重要です。

このため、XAトランザクションを単一のRACインスタンスに関連付けることは、Oracle 10gR2でも引き続き重要になります。Oracle XAでのRACの使用の詳細は、『Oracle Databaseアプリケーション開発者ガイド-基礎編』のOracle XAを使用したアプリケーションの開発に関する章を参照してください。

TUXRACGROUPS環境変数は、TuxedoグループをOracle RAC構成の特定のインスタンスと関連付けます。これにより、同一RAC構成の異なるインスタンスに含まれるグループが、同一XAトランザクション内に混在するのを防止できます。

注: Oracle 10gを使用している場合は、単一のトランザクションが複数のOracle RACインスタンスにまたがらないようにします。各トランザクションに参加するグループは、そのトランザクションの開始時に決定されます。個々のトランザクションは、各RAC構成の1つの特定のインスタンスに割り当てられます。この割当てでは、RAC構成の各インスタンスに含まれるグループが、それぞれ等しい数のトランザクションに割り当てられます。
注: Oracle 12cでは、異なるRACインスタンスをRAC内の異なるトランザクション・ブランチで処理することが可能で、トランザクション・ブランチが異なるインスタンスにある場合は、厳格にカップリングされロックをリソースが共有されます。そのため、Oracle 12cの使用時にはTUXRACGROUPS環境変数は必要ありません。この環境変数はOracle 12cでも機能するため、これを使用してTuxedoグループをOracle RAC構成の特定のインスタンスに関連付けることができます。

TUXRACGROUPS

TUXRACGROUPS環境変数により特定のRAC構成に関連付けられるグループが指定され、同一トランザクション内のサービス呼出しが同一RAC構成の異なるインスタンスとして識別される複数のグループに送信されるのを防止します。
警告: TUXRACGROUPS環境変数を使用する場合は、この環境変数を構成内のすべてのマシン上で設定する必要があり、すべてのマシン上で同じグループ・セットを同じ順番で指定しなければなりません。
警告: この制限事項を守らないと、一貫性のないグループ・セットがトランザクション内に含まれるおそれがあります。この不整合はコミット時に調整グループによって検出され、トランザクションがロールバックされて、エラー・メッセージがuserlogに送られます。
TUXRACGROUPSの構文

TUXRACGROUPS環境変数は、Oracle RACグループ構成の定義に使用します。構文は次のとおりです。

TUXRACGROUPS="G1,G2,…,Gm;H1,H2,…,Hn[;…]:I1,I2,…,Io;J1,J2,…,Jp[;…][:…]"

カンマ(,)区切りのリスト

Oracle RAC構成の同一インスタンスに含まれるグループを指定します。 カンマ区切りのリスト内に指定した複数のグループは、同一トランザクション内で共に使用できます。
注: 一般的には、1つのデータベース・インスタンスに関連付けられたすべてのサービスは、単一グループ内に配置されます。そのため通常は、TUXRACGROUPSの値にカンマは必要ありません。

セミコロン(;)区切りのリスト

Oracle RAC構成の異なるインスタンスに含まれるグループ・セットを指定します。同一RACデータベース構成の異なるRACインスタンスに含まれるグループは、同一トランザクション内で共に使用することはできません。
TUXRACGROUPS環境変数は、Oracle RAC構成の異なるインスタンスに関連付けられたグループを指定するための変数です。そのため、TUXRACGROUPS環境変数を使用するすべてのアプリケーションで、環境変数の値に少なくとも1つのセミコロンが必要です。

コロン(:)区切りのリスト

任意のOracle RAC構成に関する情報と、別のOracle RAC構成に関する情報と区別するために使用します。コロンで区切られた個々のOracle RACデータベース構成は、相互に完全に独立しています。
注意: 一般的には、1つのRACデータベース構成のみを指定します。そのため通常は、TUXRACGROUPSの値にコロンは必要ありません。
TUXRACGROUPSの例

この項では、4つの異なるOracle RACグループ構成の定義例を示します。

例1 :単純な構成

TUXRACGROUPS="G1;G2"

図6-1は、単純なOracle RAC構成の例です。

この例では、1つのOracleデータベース(ORA1)に対して2つのOracle RACインスタンスが存在し、各インスタンスにそれぞれ1つのグループが含まれています。

この場合、同じトランザクション・リクエストをGROUP1GROUP2の両方に送信することはできません。これは、各グループが同一のOracle RACデータベース構成にマップされた異なるインスタンスを介してデータベース・サービスにアクセスするためです。

図6-1 (ORA1)単純な構成

(ORA1)単純な構成

例2 : 1つのOracle RACインスタンスに複数のグループ(ファイル内に複数あり)

TUXRACGROUPS="GROUP1;GROUP2:GROUP3;GROUP4,GROUP5"

図6-2は、1つのインスタンスに複数のグループを追加した例です。

この例では、2つのOracleデータベースORA1ORA2が存在しています。ORA1はマシン固有のサービスORA1SITE1ORA1SITE2を、ORA2はマシン固有のサービスORA2SITE1ORA2SITE2を提供します。この構成は、Oracle RAC構成の各インスタンスに関連付けられたグループに、ほぼ同数のトランザクションを割り当て、同じサービスを構成することを目的としています。

この場合、同じトランザクション・リクエストをGROUP1GROUP2の両方に送信することはできません。これは、各グループが同一のOracle RACデータベース構成にマップされた異なるインスタンスを介してデータベース・サービスにアクセスするためです。GROUP3GROUP4、またはGROUP3GROUP5についても同様で、同じトランザクションをこれらのグループの両方に送信することはできません。

GROUP4GROUP5は、どちらも同じOracle RACデータベース構成の同じデータベース・サービスにアクセスするため、これらのグループはまとめて許可されます。GROUP1GROUP4は、異なるRACデータベース構成にアクセスするため、まとめて許可されます。この構成にGROUP6もある場合、GROUP6はOracle RACグループではないため、他のグループとともに許可されます。

注意: 各Oracle RACインスタンスに含まれるグループの数は、同一である必要はありません。
図6-2 (ORA2) 1つのOracle RACインスタンス内に複数のグループが存在

(ORA2) 1つのOracle RACインスタンス内に複数のグループが存在

この構成のUBBCONFIGファイルの*GROUPSおよび*SERVERSセクションは、リスト6-6のようになります。

リスト6-6 UBBCONFIGファイルの*GROUPSセクションと*SERVERSセクションの例
*GROUPS
DEFAULT: TMSNAME=TMS_ORA TMSCOUNT=2
GROUP1    LMID=SITE1   GRPNO=1
OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SqlNet=ORA1SITE1+SesTm=100+LogDir=.+MaxCur=5"
GROUP2    LMID=SITE2   GRPNO=2
OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SqlNet=ORA1SITE2+SesTm=100+LogDir=.+MaxCur=5"
GROUP3    LMID=SITE1   GRPNO=3
OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SqlNet=ORA2SITE1+SesTm=100+LogDir=.+MaxCur=5"
GROUP4    LMID=SITE2   GRPNO=4
OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SqlNet=ORA2SITE2+SesTm=100+LogDir=.+MaxCur=5"
GROUP5    LMID=SITE2   GRPNO=5
OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SqlNet=ORA2SITE2+SesTm=100+LogDir=.+MaxCur=5"
GROUP6    LMID=SITE1   GRPNO=6  TMSNAME=TMS_QM
OPENINFO="TUXEDO/QM:/home/myapplication/QUE:QSPACE"
*SERVERS
DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"
EMPLOYEE_SVR SRVGRP=GROUP1 SRVID=1
EMPLOYEE_SVR SRVGRP=GROUP2 SRVID=2
BANKING_SVR SRVGRP=GROUP3 SRVID=3
BANKING_SVR SRVGRP=GROUP4 SRVID=4
BANKING_SVR SRVGRP=GROUP5 SRVID=5
注意: GROUP4GROUP5には同じOPENINFO文字列が指定されています。これは、どちらのグループも同じデータベースが提供する同じデータベース・サービスを使用することを意味しています。
注: Oracleグループ用のOPENINFO文字列を*GROUPSセクションに指定する方法は、RACなしにOracleを使用する場合と変わりません。Oracleグループ用のOPENINFO文字列を指定する方法の詳細は、『Oracle Databaseアプリケーション開発者ガイド-基礎編』Oracle XAを使用したアプリケーションの開発に関する章を参照してください。

例3 :複数のOracle RACインスタンスに複数のグループ(ファイル内に複数あり)

TUXRACGROUPS="GROUP11,GROUP12,GROUP13;GROUP21,GROUP22:GROUP3;GROUP4, GROUP5"

図6-3は、複数のインスタンスに複数のグループを追加する例を示したものです。

この例は、1つ前で説明した例と似ていますが、GROUP11GROUP12、およびGROUP13はいずれも1番目のRAC構成の1番目のRACインスタンスに、GROUP21GROUP22は2番目のRACインスタンスに関連付けられています。

この構成で、トランザクション内の最初のサービス呼出しがGROUP12に渡された場合、このトランザクション内のその他のサービス呼出しはGROUP11GROUP12、またはGROUP13には送信できますが、GROUP21またはGROUP22に送信することはできません。

許可されたグループ内では通知されていないが、1つまたは複数の禁止されたグループ内で使用可能なサービスに対して、トランザクション型のサービス呼出しが実行された場合は、以下のいずれかの結果になります。

TUXRACGROUPS環境変数に定義されている各RAC構成について、Tuxedoでは、トランザクションの開始時に、その構成内のどのRACグループをトランザクションに参加させるかが決定します。

TUXRACGROUPSを使用したトランザクション作成の特徴

トランザクションは、存在している間はOracle RACインスタンスに固定されます。このことは、このようなトランザクションの呼出しフローでOracle RACに関連付けられたTuxedoサービスに常にアクセスできるかどうかに関係なく当てはまります。

トランザクションの作成方法は、次の2とおりです。

TUXRACGROUPSを使用したデータ依存型ルーティング

データ依存型ルーティングは、Oracle RAC構成をサポートするように拡張されています。UBBCONFIGの*ROUTINGセクションには、ルーティング範囲が同一のグループを複数定義することができます。リスト6-7に、同じ範囲の値を持つ異なるTuxedoグループの例を示します。

リスト6-7 同じ範囲の値を持つTuxedoグループ
RANGES="1-5:GROUP1A, 1-5:GROUP1B, 6-10:GROUP2B, 6-10:GROUP2A, *:*"

この例では、GROUP1AGROUP1Bのデータ範囲が同じで、GROUP2AGROUP2Bのデータ範囲が同じです。Tuxedoは、トランザクションが属するOracle RACインスタンスに関連付けられているグループに、サービス・リクエストをルーティングします。

RACグループにより提供されるトランザクション・サービスに対するデータ依存型ルーティングでは、以下の場合にしか目的の結果を得られません。

トランザクション・ルーティングの開始時に、現在のトランザクションで許可されていないグループはすべて無視されます。ルーティングの決定では、以下のグループのみが対象となります。

非トランザクション型リクエストに対するルーティングには、すべてのグループが参加可能です。サービスは、UBBCONFIGファイル内の*ROUTINGセクションのRANGESフィールドに指定されたデータ値と一致した最初のグループにルーティングされます。特定の範囲の値に対する非トランザクション型リクエストはすべて、1つのOracle RACインスタンスによってのみ処理されます。

トランザクション型と非トランザクション型が混在するリクエストのルーティングでは、一部のアプリケーションが非トランザクション型リクエストのロード・バランシングをリクエストしないことがあります。個々のデータ値について各アプリケーション内で最初に記述されるRACインスタンスはそれぞれ異なるため、非トランザクション型リクエストについては、個々のRACインスタンスで提供される複数のサービス間で適宜ロード・バランシングが実施されます。

非トランザクション型リクエストの場合、同じルーティング範囲に関連付けられたすべてのグループ間でロード・バランシングを実施する方法はありません。ロード・バランシングを1つずつ実施する場合は、以下を実行します。

図6-4は、Oracle RAC構成内でのトランザクション型/非トランザクション型リクエストのルーティング例を示したものです。

図6-4 トランザクション型/非トランザクション型リクエストのルーティング

トランザクション型/非トランザクション型リクエストのルーティング

この例で示した構成は、2つのOracle RACインスタンスで構成されています。TUXRACGROUPSにリストされていない1つのグループに1,000個のトランザクションが作成されている場合、約500個のトランザクションがOracle RACインスタンス1に固定され、GROUP1AGROUP2Aにのみアクセスできます。残りの500個のトランザクションはOracle RACインスタンス2に固定され、GROUP1BGROUP2Bにのみアクセスできます。

リスト 6-8は、この構成に対するUBBCONFIGファイルの*SERVICESセクションと*ROUTINGセクションの例です。

リスト6-8 UBBCONFIGファイルの*SERVICESセクションと*ROUTINGセクションの例
*SERVICES
DEPOSIT SRVGRP=GROUP1A ROUTING=MYROUTE
DEPOSIT SRVGRP=GROUP2A ROUTING=MYROUTE
DEPOSIT SRVGRP=GROUP1B ROUTING=MYROUTE
DEPOSIT SRVGRP=GROUP2B ROUTING=MYROUTE
*ROUTING
MYROUTE FIELD=”BRANCH_ID”
RANGES=”1-5:GROUP1A, 1-5:GROUP1B, 6-10:GROUP2B, 6-10:GROUP2A, *:*”
BUFTYPE=”FML32”

GROUP1AおよびGROUP2A は、Oracle RACインスタンス1に属します。GROUP1BおよびGROUP2Bは、Oracle RACインスタンス2に属します。BRANCH_IDが1 - 5のリクエストは、GROUP1AまたはGROUP1Bで処理されます。BRANCH_IDが6 - 10のリクエストは、GROUP2AまたはGROUP2Bで処理されます。

トランザクションのリクエストでは、すべてのトランザクションはOracle RACインスタンス1に固定されます。ブランチ1-5はGROUP1Aに、ブランチ6-10はGROUP2Aにそれぞれマッピングされます。もう半分は、Oracle RACインスタンス2に割り当てられます。ブランチ1-5はGROUP1Bに、ブランチ6-10はGROUP2Bにそれぞれマッピングされます。

非トランザクション型リクエストの場合は、ブランチ1 - 5がGROUP1Aに、ブランチ6 - 10がGROUP2Bにマップされます。これは、指定されたグループのうち、これらのグループがそれぞれのルーティング範囲に最初に一致するためです。無効なBRANCH_IDが指定されたリクエストは、許可されている任意のグループにマップされます。

注意: RACインスタンス間における一部の非トランザクション型のロード・バランシングを達成するために、Oracle RACインスタンス1は最初に1つのデータ範囲に指定され、RACインスタンス2は最初にその残りのデータ範囲に指定されます。
特定のOracle RACインスタンスへのトランザクションの割当て

現在の環境を複数のマシンに分割することもできます。たとえば、TuxedoとOracle RACが別々の建物に配置されている場合、Oracle RACインスタンス1にのみアクセスするマシン群とOracle RACインスタンス2のみにアクセスするマシン群を1つのTuxedoドメインで管理して地域的な独立性を維持することも可能です。呼出しが特定の建物の外に送信されるのをできるかぎり少なくするように環境を構成できます。

図6-5は、マシン1 (GROUP1AGROUP2Aが所属)とマシン2 (GROUP1BGROUP2Bが所属)の例を示しています。また、Tuxedo /WSクライアント、Tuxedoネイティブ・クライアント、Tuxedo /Qの場合やMQ Seriesなどの別のリソース・マネージャとリンクしているサーバーの場合、Tuxedo /Domainゲートウェイから呼出しが実行されてトランザクションが作成される場合もあります。

リクエストが送信されるたびに、トランザクションをローカル・マシンに固定し、異なるマシン間のホップをできるだけ回避する必要があります。

図6-5 特定のOracle RACインスタンスへのトランザクションの割当て

特定のOracle RACインスタンスへのトランザクションの割当て

リスト6-9は、2つの物理マシン(TUXM1およびTUXM2)でTuxedoが稼動している場合のUBBCONFIGファイルの例です。両方のマシンの2つのグループがOracle RACに接続しています。GROUP1AおよびGROUP2Aのグループは、RACインスタンス1に接続しているTUXM1というマシン上で実行中です。GROUP1BおよびGROUP2Bのグループは、RACインスタンス2に接続しているTUXM2というマシン上で実行中です。

リスト6-9 UBBCONFIGファイルの例
*MACHINES
DEFAULT:
	APPDIR="/path/to/appdir"
ENVFILE="/path/to/oracle.env"
TUXDIR="/path/to/tuxdir"
TUXCONFIG="/path/to/tuxconfig"
TLOGDEVICE="/path/to/TLOG"

"machine1" LMID=TUXM1

"machine2" LMID=TUXM2

*GROUPS
ADMGRPA LMID=TUXM1 GRPNO=10 OPENINFO=NONE
ADMGRPB LMID=TUXM2 GRPNO=20 OPENINFO=NONE

GROUP1A LMID=TUXM1 GRPNO=101 TMSNAME=TMS_ORA
OPENINFO="Oracle_XA:Oracle_XA+ACC=P/user/password+Sqlnet=ORA1SITE1+SesTm=100+LogDir=.+MaxCur=5"
GROUP1B LMID=TUXM2 GRPNO=102 TMSNAME=TMS_ORA
OPENINFO="Oracle_XA:Oracle_XA+ACC=P/user/password+Sqlnet=ORA1SITE2+SesTm=100+LogDir=.+MaxCur=5"

GROUP2A LMID=TUXM1 GRPNO=201 TMSNAME=TMS_ORA
OPENINFO="Oracle_XA:Oracle_XA+ACC=P/user/password+Sqlnet=ORA1SITE1+SesTm=100+LogDir=.+MaxCur=5"
GROUP2B LMID=TUXM2 GRPNO=202 TMSNAME=TMS_ORA
OPENINFO="Oracle_XA:Oracle_XA+ACC=P/user/password+Sqlnet=ORA1SITE2+SesTm=100+LogDir=.+MaxCur=5"

GROUP_TDOM_A LMID=TUXM1 GRPNO=301
GROUP_TDOM_B LMID=TUXM2 GRPNO=302

GROUP_CLIENT_A LMID=TUXM1 GRPNO=401 TMSNAME=TMS
GROUP_CLIENT_B LMID=TUXM2 GRPNO=402 TMSNAME=TMS

*SERVERS
DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"

TMSYSEVT SRVGRP="ADMGRPA" SRVID=10
TMUSREVT SRVGRP="ADMGRPA" SRVID=20

TMSYSEVT SRVGRP="ADMGRPB" SRVID=10 CLOPT="-A -- -S "
TMUSREVT SRVGRP="ADMGRPB" SRVID=20 CLOPT="-A -- -S "

EMPLOYEE_SVR SRVGRP=GROUP1A SRVID=1
EMPLOYEE_SVR SRVGRP=GROUP1B SRVID=2
BANKING_SVR SRVGRP=GROUP2A SRVID=3
BANKING_SVR SRVGRP=GROUP2B SRVID=4

DMADM SRVGRP="GROUP_TDOM_A" SRVID=100
GWADM SRVGRP="GROUP_TDOM_A" SRVID=110
GWTDOMAIN SRVGRP="GROUP_TDOM_A" SRVID=111 REPLYQ=Y RQADDR="GWGRP_M1"
GWADM SRVGRP="GROUP_TDOM_B" SRVID=110
GWTDOMAIN SRVGRP="GROUP_TDOM_B" SRVID=111 REPLYQ=Y RQADDR="GWGRP_M2"

また、両方のマシン上に、管理サービス用のグループ、Tuxedo /Domainゲートウェイ用のグループ、ネイティブTuxedoクライアントのグループがそれぞれ1つずつ存在しています。トランザクションはすべてGWTDOMAINとネイティブ・クライアントによって作成されます。オープンされたトランザクションが適切なRACインスタンスに所属してローカルで処理されるためには、リスト 6-10に示されているように、GWTDOMAINとネイティブTuxedoクライアントは直接Oracle RACに接続しない場合でもTUXRACGROUPSに含まれている必要があります。

注意: ネイティブ・クライアントは、ローカル・グループにtpinfo->grpnameを設定して、適切な動作が行われるようにする必要があります。詳細は、「Tuxedoネイティブ・クライアントによって作成されたトランザクションがリモート・マシンに送信されるのを回避する」を参照してください。
リスト6-10 TUXGROUPS
TUXRACGROUPS="GROUP_TDOM_A,GROUP_CLIENT_A,GROUP1A,GROUP2A;GROUP_TDOM_B,
GROUP_CLIENT_B,GROUP1B,GROUP2B"
TUXRAGROUPSトランザクションの事例

トランザクションの外部で実行されたサービス呼出しの処理

トランザクションが含まれない限り、Tuxedoはロードが可能な間はローカル・マシン上でできる限り多くのリクエストを処理しようとします。アイドル状態のローカル・サービスがない場合にのみ、ロード・バランシング・アルゴリズムに基づいてリクエストがリモート・マシンに送信されます。つまり、すべてのサービスがそれぞれのマシン上で利用できる場合は、リモート・マシンにリクエストが送信される心配はないということです。

管理者は、Oracle RMとリンクしていない場合やOracle RACインスタンスに物理的に関連付けられていない場合でも、呼出しフローでアクセスされ、新しいトランザクションをオープンする候補となるTUXRACGROUPS環境変数にすべてのサービス・グループが含まれていることを常に確認する必要があります。環境変数TUXRACGROUPSは、非トランザクション型のサービス呼出しに対しては影響を及ぼしません。

外部のリソース・マネージャを操作しているグループによって作成されたトランザクションがリモート・マシンに送信されるのを回避する

Tuxedoサーバーが別のRM (MQSeriesなど)や別のデータベースで構築されている場合、このグループをTUXRACGROUPS環境変数に含めることによって、新しく開始したトランザクションをローカル・マシンに固定することができます。

リスト6-11 MQSeriesの例
TUXRACGROUPS="MQSGROUPA,GROUP1A,GROUP2A;MQSGROUPB,GROUP1B,GROUP2B"

この例では、MQSGROUPAGROUP1A、および GROUP2Aがマシン1に配置され、MQSGROUPBGROUP1B、およびGROUP2Bがマシン2に配置されています。

グループMQSGROUPA内のサーバーによってトランザクションが作成されると、グループGROUP1AGROUP2AGROUP1B、およびGROUP2Bのサービスに対するすべてのTuxedoサービス呼出しがGROUP1AGROUP2Aにのみ送信されます。GROUP1BGROUP2Bは、RACインスタンス2に属していて、トランザクションがグループMQSGROUPAを介してRACインスタンス1で作成されたために無視されます。

GWTDOMAINによって作成されたトランザクションがリモート・マシンに送信されるのを回避する

各マシンのローカルTuxedo /Domainゲートウェイで作成します。リスト6-12に示すように、TUXRACGROUPSという環境変数を設定します。

リスト6-12 GWTDOMAINの例
TUXRACGROUPS="GWTGROUPA,GROUP1A,GROUP2A;GWTGROUPB,GROUP1B,GROUP2B"

この例では、GWTGROUPAGROUP1A、および GROUP2Aがマシン1に配置され、GWTGROUPBGROUP1B、およびGROUP2Bがマシン2に配置されています。

マシン1上のGWTDOMAINが外部リクエストを受信して新しいトランザクションを作成すると、グループGROUP1AGROUP2AGROUP1B、およびGROUP2Bのサービスに対するすべてのTuxedoサービス呼出しがGROUP1AGROUP2Aにのみ送信されます。GROUP1BGROUP2Bは、RACインスタンス2に属していて、トランザクションがグループGWTGROUPAを介してRACインスタンス1で作成されたために無視されます。

TMQFORWARDによって作成されたトランザクションがリモート・マシンに送信されるのを回避する

各マシンにローカルTuxedo /Q構成を作成します。リスト6-13に示すように、TUXRACGROUPS環境変数を設定します。

リスト6-13 TMQFORWARDの例
TUXRACGROUPS="QUEUEGROUPA,GROUP1A,GROUP2A;QUEUEGROUPB,GROUP1B,GROUP2B"

この例では、QUEUEGROUPAGROUP1A、および GROUP2Aがマシン1に配置され、QUEUEGROUPBGROUP1B、およびGROUP2Bがマシン2に配置されています。

マシン1上のTMQFORWARDがこのようなOracleサービスに新しいメッセージをトランザクションとして送信すると、グループGROUP1AGROUP2AGROUP1B、およびGROUP2Bのサービスに対するすべてのTuxedoサービス呼出しがGROUP1AGROUP2Aにのみ送信されます。GROUP1BGROUP2Bは、RACインスタンス2に属していて、トランザクションがグループQUEUEGROUPAを介してRACインスタンス1で作成されたために無視されます。

Tuxedoネイティブ・クライアントによって作成されたトランザクションがリモート・マシンに送信されるのを回避する

ネイティブ・クライアントを特別なサーバー・グループにバインドすることもできます。そのためには、コマンドbuildclient -r <RM_of_the_group> -f <source_file> -o <binary_file>を使用してクライアントをビルドし、使用するグループ名を指定してtpinit()を実行するだけです。

たとえば、2つの追加グループCLIENTGROUPACLIENTGROUPBを作成して、それぞれのグループで少なくとも2つのTMSを起動することができます。リスト6-14に示すように、TUXRACGROUPS環境変数を設定します。

リスト6-14 リモート・マシンの例
TUXRACGROUPS="CLIENTGROUPA,GROUP1A,GROUP2A;CLIENTGROUPB,GROUP1B,GROUP2B"

tpinfo->grpnameCLIENTGROUPAが設定されている場合、TPINIT構造体を指定してtpinit(TPINIT *tpinfo)を実行すると、クライアントがCLIENTGROUPAに関連付けられます。tpinfo->grpnameCLIENTGROUPBが設定されていると、クライアントがCLIENTGROUPBに関連付けられます。

CLIENTGROUPAがマシン1上で、CLIENTGROUPBがマシン2でそれぞれ実行中の場合、マシン1のネイティブ・クライアントは、tpinfo->grpname = CLIENTGROUPAを使用してtpinit()を常に呼び出し、マシン2のネイティブ・クライアントはtpinfo->grpname = CLIENTGROUPBを使用してtpinit()を常に呼び出す必要があります。Tuxedoネイティブ・クライアントがtpbegin()を呼び出すとき、トランザクションは、CLIENTGROUPAの場合はRACインスタンス1に、CLIENTGROUPBの場合はRACインスタンス2にそれぞれ関連付けられます。

Tuxedo /WSクライアントによって作成されたトランザクションがリモート・マシンに送信されるのを回避する

ワークステーション・クライアントの場合、grpnameの値にはNULL文字列(長さが0の文字列)を指定します。任意のグループ名を設定したり、/WSクライアントを特定のグループに固定したりすることはできません。Tuxedo /WSクライアント内ではtpbegin()は指定されません。オープンしているトランザクションはすべてのRACインスタンスに平等に配布されます。

Tuxedo /WSクライアントにおけるベスト・プラクティスは、トランザクションがクライアント側で処理されるのを回避し、Tuxedo /WSクライアントによって呼び出される最初のサーバーでトランザクションを開始することです。たとえば、UBBCONFIGファイルの*SERVICESセクション内の呼び出されるサービスに対してAUTOTRANパラメータを設定すると、自動的にトランザクションを作成させることができます。

トランザクション・リカバリの構成

TMS_rac_refresh(1)XARETRYDURATIONSECONDS、およびXARETRYINTERVALは、トランザクション・リカバリの処理にのみ使用されます。

TMS_rac_refresh(1)は、Oracle RACグループ間のフェイルオーバーが発生したときに呼び出されます。TMS_rac_refresh(1)は、コマンド行から手動で実行しないでください。TMS_rac_refresh(1)の呼出しには、Oracle Fast Application Notification (FAN)を使用します。

注意: Oracle FANの構成方法の詳細は、Oracle 10gのマニュアルを参照してください。

環境変数XARETRYDURATIONSECONDSXARETRYINTERVALは、Oracle RACの要求に応じたトランザクション・リカバリ処理(xa_recover())の再試行に使用します。

XARETRYDURATIONSECONDS

TMS_rac_refresh(1)が呼び出されたときに、Tuxedo Transaction Manager Server (TMS)によりxa_recover()処理を再試行する間隔を指定します。この値が設定されていないか、0に設定されている場合、xa_recover()は1回しか実行されません。
XARETRYDURATIONSECONDSのデフォルト値は0です。
注意: Oracle 10.1の場合は、XARETRYDURATIONSECONDS120に設定することをお薦めします。

XARETRYINTERVAL

XARETRYDURATIONSECONDSに設定した値でxa_recover()処理を再試行する間隔を秒単位で設定します。XARETRYINTERVAL値は、XARETRYDURATIONSECONDSに0より大きい値を指定した場合にのみ適用されます。
XARETRYINTERVALのデフォルト値は30です。
Oracle 10g Fast Application Notification (FAN)の構成

TuxedoでOracle RAC用の構成をする上で重要になるのが、グループ・フェイルオーバーの発生時に適切なグループ・パラメータを使ってTMS_rac_refresh(1)を呼び出せるように、Oracle FANを設定する作業です。(グループ・パラメータとグループ・フェイルオーバーの詳細は、「トランザクション伝播の構成」を参照してください。)

Oracle FANの詳細は、『Workload Management with Oracle Real Application Clusters (PDF) White Paper』を参照してください

Oracle FANスクリプトの例

リスト6-15は、Oracle FANスクリプトの例です。

リスト6-15 Oracle FANスクリプトの例
//This File should be placed at ORA_CRS_HOME/racg/usrco//
------------------------------calout.sh-------------------------
#! /bin/ksh 

#parse the event

AWK=awk
NOTIFY_EVENTTYPE=$1 # Event type is handled differently

for ARGS in $*
do
PROPERTY=`echo $ARGS|$AWK -F"=" '{print $1}'`
VALUE=`echo $ARGS|$AWK -F"=" '{print $2}'`
case ${PROPERTY} in
VERSION|version)NOTIFY_VERSION=$VALUE;;
SERVICE|service)NOTIFY_SERVICE=$VALUE;;
DATABASE|database)NOTIFY_DATABASE=$VALUE;;
INSTANCE|instance)NOTIFY_INSTANCE=$VALUE;;
HOST|host) NOTIFY_HOST=$VALUE ;;
STATUS|status) NOTIFY_STATUS=$VALUE;;
REASON|reason) NOTIFY_REASON=$VALUE;;
CARD|card) NOTIFY_CARDINALITY=$VALUE ;;
TIMESTAMP|timestamp) NOTIFY_LOGDATE=$VALUE;; # catch
event
??:??:??) NOTIFY_LOGTIME=$PROPERTY;; # catch event time
(hh24:mi:ss)
esac
done

#Set the REFRESH_DIR environment variable.
. /home/oracle/callout.env

#Make a log to record events.
FAN_LOGFILE=/home/oracle/app/products/10.1.0.3.0/db_1/calloutlog/`hostname`_upti
me.log
touch ${FAN_LOGFILE}
echo ${1} >>${FAN_LOGFILE}

#invoke the TMS_rac_refresh command.
if [ ${NOTIFY_EVENTTYPE} = "INSTANCE" -a ${NOTIFY_STATUS} = "down" ]
then
${REFRESH_DIR}/rac_refresh >> ${FAN_LOGFILE} 2>&1
fi
-----------------------------callout.sh end-----------------------------
-----------------------------callout.env----------------------------------
#! /bin/ksh
#TUXEDO and Oracle RAC server are not one the same machine.
export REFRESH_DIR=/tmp
-----------------------------callout.env end------------------------------
-----------------------------rac_refresh----------------------------------
#! /bin/ksh
#If TUXEDO and Oracle RAC server on different machine

. /home/oracle/callout.env

rsh -l ${LOGNAME} ${TUX_MASTER_MACHINE} ${REFRESH_DIR}/rac_refresh
>/tmp/run1.log 2>&1

rsh -l ${LOGNAME} ${TUX_NONMASTER_MACHINE}
${REFRESH_DIR}/rac_refresh >/tmp/run1.log 2>&1

#If TUXEDO and Oracle RAC server are on same machine
#set up environment variable
#export APPDIR=/tmp
#export ORACLE_HOME=/home/oracle/Ora10g
#export TUXDIR=/nfs/users/libo/r902/BJ/bld
#export PATH=.:${PATH}:${TUXDIR}/bin
#. $TUXDIR/tux.env
#export TUXCONFIG=${APPDIR} /tuxconfig

#invoke TMS_rac_refresh
#TMS_rac_refresh RACDBGRP1
#TMS_rac_refresh RACDBGRP3
-----------------------------rac_refresh end-----------------------------
Oracle 10gR2を使用する場合のトランザクション・リカバリの構成

Oracle 10gR2では、トランザクション・リカバリの構成が大幅に簡素化されています。Oracle RACに関連付けられる各グループのOPENINFO文字列で指定されたデータベース・サービスを、DTPサービスとしてOracleで宣言する必要があります。

たとえば、リスト6-6では、GROUP1はサービスORA1SITE1を介してOracleにアクセスし、GROUP2はサービスORA1SITE2を介してOracleにアクセスしていました。Oracle 10gR2では、サービスORA1SITE1を、優先インスタンスSITE1および使用可能なインスタンスSITE2と共にDTP=TRUEで宣言する必要があります。サービスORA1SITE2は、優先インスタンスSITE2および使用可能なインスタンスSITE1と共にDTP=TRUEで宣言します。同様のプロセスを、グループGROUP3GROUP4、およびGROUP5にも適用しなければなりません。

異なる優先インスタンスを宣言することで、両方のインスタンスが使用可能になっている通常の動作時には、アプリケーションでロード・バランシングの効果を得ることができます。

TUXRACGROUPS環境変数の設定により、RAC構成の異なるインスタンスが同一のトランザクションで組み合わされないことが保証され、最適なパフォーマンスを実現できます。1つのRACインスタンスがダウンした場合、Oracleは、トランザクションの整合性を維持しながら、DTPサービスを非優先インスタンスに転送します。

Oracle 10gR2のDTPサービスを使用している場合は、Oracle FANの構成は不要であり、お薦めしません(TMS_rac_refresh(1)を使用するか、またはXARETRYDURATIONSECONDS環境変数またはXARETRYINTERVAL環境変数を設定してください)。

Oracle 12cでのトランザクション回復の構成

Oracle 12cでは特別な構成は不要で、トランザクション回復は透過的に行われます。

UBBCONFIGファイル内の環境変数の指定

TuxedoのOracle RAC用環境変数は、オペレーティング・システムのコマンド行からも設定できますが、これらの環境変数の設定には、UBBCONFIGファイル内の*MACHINESセクションにENVFILEパラメータを指定する方法を強くお薦めします。

Oracle RACの環境変数を設定する場合は、構文に次の考慮事項を適用します。

関連項目


  先頭に戻る       前  次