6 Oracle Real Application Clusters (RAC)でのTuxedoの使用の概要
この章では、Oracle TuxedoとOracle RACを密接に統合することで提供される高度な機能を活用する方法について説明します。ほとんどの機能は、Oracle Tuxedo Advanced Performance Packのライセンスでのみ使用できます。
Tuxedo Advanced Performance Packでのみ使用可能な機能 | |
---|---|
インスタンス認識 | |
XAトランザクション・アフィニティ | |
共通XID | |
単一グループの複数ブランチ(SGMB) | |
Fast Application Notification (FAN)を使用したデータベース・インスタンス間のフェイルオーバー/フェイルバック | |
Fast Application Notification (FAN)を使用したRACインスタンス間のロード・バランシング |
- インスタンス認識
- XAアフィニティでのTuxedoの使用
- 共通XIDでのTuxedoの使用
- Single Group Multiple Branches (SGMB)でのTuxedoの使用
- Fast Application Notification (FAN)でのTuxedoの使用
- TuxedoをOracle Real Application Clusters (RAC)と共に使用
関連項目:
詳細は、『Oracle Tuxedo Advanced Performance Packの使用』を参照してください。6.1 インスタンス認識
Oracle Databaseに関連するサーバーの場合、Tuxedoはカスタマイズされたコールバックを使用して、Oracle Databaseのインスタンス情報を取得します。
- XAサーバー
- Tuxedoは、カスタマイズされたコールバックを使用して、XAサーバーの静的コールバック登録でOracle Databaseのインスタンス情報を取得します。
- 非XAサーバー
- Tuxedoは、カスタマイズされたコールバックを使用して、非XAサーバーの動的コールバック登録でOracle Databaseのインスタンス情報を取得します。この場合、次の要件が適用されます。
-
$TUXDIR/lib/tuxociucb.so.1.0
パッケージが$ORACLE_HOME/lib
にデプロイされている必要があります。 -
ORA_OCI_UCBPKG
環境変数にパッケージ名が含まれている必要があります。
-
インスタンス認識が必要な非XAサーバーを実行する前に、$ORACLE_HOME/lib
にパッケージをデプロイする必要があります。そうしないと、動的コールバック登録を使用するサーバーが失敗します。
非XAサーバーは、起動時に、環境変数ORA_OCI_UCBPKG
の自動設定を試みます。サーバーの処理が失敗すると、ULOG
にエラー・メッセージが表示され、サーバーにおけるインスタンス認識が無効になります。
6.2 XAアフィニティでのTuxedoの使用
この項では、次の項目について説明します。
6.2.1 概要
Oracle RAC環境では、データベースとインスタンス間に1対多の関係があります。Oracle RACで実行されているサーバーまたはTuxedoアプリケーションのグループは、異なるインスタンスに接続する可能性があります。
可能な場合、すべてのデータベース操作を同じRACインスタンスに接続し(該当の操作が1つのグローバル・トランザクション・ブランチで行われるのか、または1つのグローバル・トランザクション内の異なるブランチで行われるかは関係ない)、TuxedoドメインとWebLogic Server間でWebLogic Tuxedo Connector (WTC)を介してアフィニティ情報を自動的に交換するのが、XAアフィニティの役割です。
親トピック: XAアフィニティでのTuxedoの使用
6.2.2 XAアフィニティの優先度
次に、Tuxedoサーバーの選択ルールを優先度が高い順から低い順に示します。
-
GWTDOMAIN
トランザクション・ルーティング - RACインスタンスを使用したトランザクション・アフィニティ用のOracle RACルーティング
- サービス・バージョニング
- クライアント/サーバーのアフィニティ・ルーティング
- XAアフィニティ
- Oracle RAC LBA (ロード・バランシング・アドバイザ)に基づくロード・バランス
- Tuxedoロード・バランス
XAアフィニティが有効な場合、環境変数TUXRACGROUPS
で指定されたOracle RACルーティング・ルールは無効になります。
ノート:
XAアフィニティはドメイン・ルーティングには影響しません。リクエストがドメインに到着し、そのドメイン内でサービスへのルーティングが開始される場合にのみ、XAアフィニティはサーバーのルーティングに影響します。親トピック: XAアフィニティでのTuxedoの使用
6.2.3 XAアフィニティ・ポリシー
Tuxedoは同じインスタンス名、DB名およびサービス名に関連付けられたサーバーを選択します。これが支配した場合、Tuxedoは次のポリシーに従ってサーバーを見つけます。
- Tuxedoは、同じDB名と同じサービス名の両方に関連するサーバーを見つけようとします。サーバーのグループは、現在のグローバル・トランザクションに含めないでください。
- 前述の試行が失敗すると、Tuxedoは、同じDB名と同じインスタンス名の両方に関連するサーバーを見つけようとします。
- 前述の試行が失敗すると、Tuxedoは、同じDB名に関連するサーバーを見つけようとします。
- 前述の試行が失敗すると、Tuxedoは、Tuxedoの通常のロード・バランスに応じてサーバーを見つけます。
ノート:
同じ優先度の複数のサーバーが見つかると、Tuxedoは通常のロード・バランスに応じてサーバーを見つけます。親トピック: XAアフィニティでのTuxedoの使用
6.2.4 前提条件
6.2.4.1 ソフトウェア要件
この機能は、Microsoft Windowsプラットフォーム上のOracle Tuxedo 32ビットを除く、Oracle Tuxedoでサポートされるすべてのプラットフォームで実行できます。
特定のプラットフォームのソフトウェア要件の詳細は、『Oracle Tuxedoプラットフォーム・データ・シート』を参照してください。
親トピック: 前提条件
6.2.4.2 インストールに関するノート
- Oracle Tuxedoは、12cリリース2 (12.1.3)以降である必要があります。
- Oracle Databaseは、11.2.0.2.0以降である必要があります。
親トピック: 前提条件
6.2.5 構成
UBBCONFIG
*RESOURCES
セクションのOPTIONS
にオプションXPP
が指定されているかぎり、XAアフィニティ機能はデフォルトで有効です。
ノート:
Oracle ExalogicおよびOracle SPARC SuperClusterプラットフォームでは、OPTIONS
パラメータはEECS
に設定される必要があります。
XAアフィニティを明示的に無効にする新しいオプションNO_XAAFFINITY
が、UBBCONFIG *RESOURCES
セクションのRMOPTIONS
に導入されています。
RMOPTIONS {[...|NO_XAAFFINITY],*}
次のリストに、EECS
を構成する例を示します。次のリストは、XAアフィニティを明示的に無効にする例を示しています。
EECSの構成例のリスト
* RESOURCES
OPTIONS EECS
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クラス定義に関する項を参照してください。
親トピック: XAアフィニティでのTuxedoの使用
6.2.6 制限
- グループでMRM (複数のRM)はサポートされません。
- 1つのトランザクション内でのアフィニティ・コンテキスト(データベース名+インスタンス名+サービス名)の最大数は16です。
- XAアフィニティは、マルチサーバーの単一キューをサポートしません。
- XAアフィニティは、マルチスレッド・サーバーをサポートしません。
- XAアフィニティは、クロスドメイン・サービスをサポートしません。
親トピック: XAアフィニティでのTuxedoの使用
6.3 共通XIDでのTuxedoの使用
この項では、次の項目について説明します。
6.3.1 概要
一般に、グローバル・トランザクションでは、参加している各グループにはそれぞれのトランザクション・ブランチがあり、特別なトランザクション・ブランチ識別子(XID)で各ブランチが識別されます。グローバル・トランザクションに複数のグループが含まれる場合、Oracle Tuxedoは各ブランチで2フェーズ・コミットを採用し、最初の参加グループをコーディネータとして使用します。
ただし、このリリースの共通XID機能により、コーディネータ・グループのトランザクション・ブランチが、同じトランザクション内の他のすべてのグループと共有されます。同一のサービスを介して同一のOracleデータベース・インスタンスに接続するグループでは、コーディネータ・ブランチを直接使用します。これらのグループではXAコミット操作を必要とせずに保存されます。
グローバル・トランザクション内のすべてのグループがコーディネータ・ブランチを直接使用するという最も極端なケースでは、Oracle Tuxedoは、2フェーズ・コミットではなく1フェーズ・コミットを採用します。TLOG
は作成されません。
親トピック: 共通XIDでのTuxedoの使用
6.3.1.1 一般的なシナリオ
Tuxedoアプリケーション・ドメインDOM1
に、GRP1
およびGRP2
という2つのグループがあるとします。サーバーSERV1
はGRP1
に属し、サービスSVC1
を提供します。これに対し、サーバーSERV2
はGRP2
に属し、サービスSVC2
を提供します。SERV1
とSERV2
は、両方とも同じインスタンスに接続します。
ネイティブ・クライアントがグローバル・トランザクションを開始して、最初にSVC1
を、次にSVC2
を呼び出し、トランザクションをコミットします。
前述のケースで共通XID機能が有効な場合、Tuxedoはトランザクションで1フェーズ・コミットを呼び出し、TLOG
は作成されません。それ以外の場合は、2フェーズ・コミットが呼び出されます。
ユーザーはTMTRACE
を介して前述の動作をトレースできます。詳細は、「セクション5 - ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス」のTMTRACE
に関する項を参照してください
親トピック: 概要
6.3.2 前提条件
6.3.2.1 ソフトウェア要件
この機能は、Microsoft Windowsプラットフォーム上のOracle Tuxedo 32ビットを除く、Oracle Tuxedoでサポートされるすべてのプラットフォームで実行できます。
特定のプラットフォームのソフトウェア要件の詳細は、『Oracle Tuxedoプラットフォーム・データ・シート』を参照してください。
親トピック: 前提条件
6.3.2.2 インストールに関するノート
- Oracle Tuxedoは、12cリリース2 (12.1.3)以降である必要があります。
- Oracle Databaseは、11.2.0.2.0以降である必要があります。
親トピック: 前提条件
6.3.3 構成
UBBCONFIG * RESOURCES
セクションのOPTIONS
にオプションXPP
が指定されているかぎり、共通XID機能はデフォルトで有効です。共通XIDを明示的に無効にする新しいオプションNO_COMMONXID
が、UBBCONFIG *RESOURCES
セクションのRMOPTIONS
に導入されています。
RMOPTIONS {[...|NO_COMMONXID],*}
次のリストに、XPP
を構成する例を示します。次のリストは、共通XIDを明示的に無効にする例を示しています。
共通XIDを明示的に無効にする例のリスト
* RESOURCES
OPTIONS XPP
RMOPTIONS NO_COMMONXID
このフラグは、tuxedoアプリケーションが非アクティブなときにTM_MIB
を介してT_DOMAIN
クラスで指定することもできます。詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』.を参照してください
ノート:
共通XIDでは、TuxedoサーバーがOracle Databaseのインスタンス情報を取得する必要があります。ユーザーは、TuxedoのTM_MIB
T_SERVER
クラスのTA_INSTSTR
フィールドを介して、サーバーのインスタンス情報を問い合せることができます。詳細は、T_SERVERクラス定義に関する項を参照してください。
親トピック: 共通XIDでのTuxedoの使用
6.3.4 制限
- グループでMRM (複数のRM)はサポートされません。
- マルチスレッド・サーバーは、
MIB
を介してインスタンス情報を提供しません。しかし、共通XIDは、サーバーによってディスパッチされたスレッドではそのまま適切に機能します。 - 2フェーズ・コミットのシナリオでは、
GWTDOMAIN
が準備やコミットの実行に常に関与しています。 GWTDOMAIN
が配置されているグループがコーディネータ・グループの場合、共通XIDは機能しません。
親トピック: 共通XIDでのTuxedoの使用
6.4 Single Group Multiple Branches (SGMB)でのTuxedoの使用
この項では、次の項目について説明します。
6.4.1 概要
以前のリリースでは、同一の参加グループのサーバーはグローバル・トランザクション内の同一トランザクション・ブランチを使用しています。ただし、トランザクション・ブランチは、これらのサーバーがRACの異なるインスタンスに接続される場合に失敗します。1つのブランチが異なるインスタンスを経由できないことを意味する、XAエラーXAER_AFFINITY
が報告されます。このため、Tuxedoグループが使用するRACサービスは、シングルトンRACサービスである必要があります。DTPサービス(DTPオプションであるsrvctl modify service
内の-x
が指定されている場合)または1つのインスタンスのみで提供されるサービスを、シングルトンRACサービスに指定することができます。
このリリースでは、単一グループ内の異なるインスタンス上の異なるトランザクション・ブランチを使用することで、問題が解決されます。Tuxedoグループは非シングルトン・サービスを使用できるため、ロード・バランスなどの利点を享受できます。
6.4.2 前提条件
6.4.2.1 ソフトウェア要件
この機能は、Microsoft Windowsプラットフォーム上のOracle Tuxedo 32ビットを除く、Oracle Tuxedoでサポートされるすべてのプラットフォームで実行できます。
特定のプラットフォームのソフトウェア要件の詳細は、『Oracle Tuxedoプラットフォーム・データ・シート』を参照してください。
親トピック: 前提条件
6.4.2.2 インストールに関するノート
- Oracle Tuxedoは、12cリリース2 (12.1.3)以降である必要があります。
- Oracle Databaseは、11.2.0.2.0以降である必要があります。
親トピック: 前提条件
6.4.3 構成
UBBCONFIG *RESOURCES
セクションのOPTIONS
にオプションEECS
が指定されているかぎり、SGMB機能はデフォルトで有効です。SGMBを明示的に無効にする新しいオプションSINGLETON
が、UBBCONFIG *RESOURCES
セクションのRMOPTIONS
に導入されています。
RMOPTIONS {[...|SINGLETON],*}
このオプションは、ドメイン内で使用されるすべてのRACサービスがシングルトンであることを指定します。したがって、SGMB機能は必要ありません。
次のリストに、EECS
を構成する例を示します。次のリストは、SGMBを明示的に無効にする例を示しています。
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クラス定義に関する項を参照してください。
6.4.4 制限
- グループでMRM (複数のRM)はサポートされません。
- 1つのグループに16を超えるインスタンスが含まれる場合、トランザクションは失敗します。
- 優先予約グループがマルチブランチ・グループの場合、XAに対する読取り専用の最適化はトランザクションで機能しません。
GWTDOMAIN
がコーディネータでない場合は、優先予約グループがコーディネータ・グループです。それ以外の場合、優先予約グループは、コーディネータ・ドメイン内で次に登場する参加グループです。 - マルチスレッド・サーバーは、
MIB
を介してインスタンス情報を提供しません。しかし、SGMBは、サーバーによってディスパッチされたスレッドではそのまま適切に機能します。
6.5 Fast Application Notification (FAN)でのTuxedoの使用
この項では、次の項目について説明します。
6.5.1 概要
Tuxedoは、次の目的でFast Application Notification (FAN)を使用します。
- 高速な障害検出を提供する。
- Tuxedoサーバーからの無効なDB接続の削除および有効なDB接続の作成。Tuxedoサーバーが有効なDB接続を作成できない場合、Tuxedoはこれらのサーバーをルーティング・リストから削除します。
- Oracle RACノードの計画済停止と計画外停止に対して正常なシャットダウンを実行する。
- ノードの追加や削除などのトポロジの変化に適応する。
- 実行時の作業リクエストをアクティブなすべてのOracle RACインスタンスに分散する(クラスタへの再参加を含む)。
6.5.2 前提条件
6.5.2.1 ソフトウェア要件
この機能は、Microsoft Windowsプラットフォーム上のOracle Tuxedo 32ビットを除く、Oracle Tuxedoでサポートされるすべてのプラットフォームで実行できます。
特定のプラットフォームのソフトウェア要件の詳細は、『Oracle Tuxedoプラットフォーム・データ・シート』を参照してください。
親トピック: 前提条件
6.5.2.2 インストールに関するノート
- Oracle Tuxedoは、12cリリース2 (12.1.3)以降である必要があります。
- Oracle Databaseは、11.2.0.2.0以降である必要があります。
- 接続ステアリングを使用するには、Oracle Client 11.2.0.2.0またはOracle Client 12.1.0.1.0と特定のパッチが必要です(パッチについては、Oracleサポートにお問い合せください。または、Oracle Clientのより上位のリリースを使用してください)。
親トピック: 前提条件
6.5.3 構成
6.5.3.1 DBにおける構成
DB構成の内容は次のとおりです。
親トピック: 構成
6.5.3.1.1 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デーモンを有効にする必要があります。親トピック: DBにおける構成
6.5.3.1.2 ロード・バランシング・アドバイザ(LBA)
サービスにロード・バランシング・アドバイザの目標がある場合、ONSはサービスに関するLBAを公開することがあります。サービスを作成または変更する場合は、-Bオプションを使用して、srvctl
を介して目標を指定できます。
親トピック: DBにおける構成
6.5.3.1.3 TAF
TAFが有効な場合、すべてのTuxedoサーバーはTAFによる再接続を自動的に実行できます。それ以外の場合、XAサーバーのみが再接続を自動的に実行できます。
親トピック: DBにおける構成
6.5.3.2 Tuxedoにおける構成
UBBCONFIG *SERVERS
セクションでTMFAN
サーバーを構成し、UBBCONFIG *RESOURCES
セクションのOPTIONS
でオプションXPP
を構成する必要があります。FANを明示的に無効にする新しいオプションNO_FAN
が、UBBCONFIG *RESOURCES
セクションのRMOPTIONS
に導入されています。
RMOPTIONS {[...|NO_FAN],*}
次のリストに、XPP
を構成する例を示します。次のリストは、FANを明示的に無効にする例を示しています。
FANを明示的に無効にする例のリスト
* RESOURCES
OPTIONS XPP
RMOPTIONS NO_FAN
このフラグは、tuxedoアプリケーションが非アクティブなときにTM_MIB
を介してT_DOMAIN
クラスで指定することもできます。詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。
ノート:
FANでは、TuxedoサーバーがOracle Databaseのインスタンス情報を取得する必要があります。ユーザーは、TuxedoのTM_MIB
T_SERVER
クラスのTA_INSTSTR
フィールドを介して、サーバーのインスタンス情報を問い合せることができます。詳細は、T_SERVERクラス定義に関する項.を参照してください親トピック: 構成
6.6 TuxedoをOracle Real Application Clusters (RAC)と共に使用
この項では、次の項目について説明します。
6.6.1 概要
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サービス</b>
を使用してOracle RACシステムにアクセスする必要があります。このDTPサービス名は、関連付けられているTuxedoグループのOPENINFO文字列で指定する必要があります。Oracle 10gR2はサービス名を検証し、必要に応じて別のインスタンスに移行します。
ノート:
Oracle 12c以降のリリースを使用する場合、サービス名は透過的になり、特定の構成をしなくても必要に応じて自動的に代替インスタンスに移行されます。6.6.2 制限
- TuxedoでOracle RACがサポートされるのは、Oracle 10g以降のリリースを使用している場合のみです。Oracle 9iの使用時にはOracle RACはサポートされません。
- 場合によっては、Dynamic XAスイッチを有効にしてOracle RACを使用すると、コア・ダンプが生成され、システム・クラッシュの原因となることがあります。この問題が発生した場合はOracleサポートに直接連絡し、次の情報を提供してください。
- BUG 4644880 - Oracleのbugフィックス識別番号
- ご使用の10gリリースに適用済パッチ・セット・バージョン
6.6.4 Oracle RACを使用するためのTuxedoの構成
TuxedoでOracle RACをサポートするためには、次の2つのステップが必要です。
以下のコマンドおよび環境変数は、TuxedoのOracle RACサポートの構成でのみ使用されます。
-
3つの環境変数
- TUXRACGROUPS (Oracle 10gR1および10gR2では必須、Oracle 11g以降では任意)
- "XARETRYDURATIONSECONDS" (Oracle 10gR1でのみ必須)
- "XARETRYINTERVAL" (Oracle 10gR1でのみ必須)
- 1つのコマンド
-
TMS_rac_refresh(1)
(Oracle 10gR1でのみ必須)
-
6.6.4.1 トランザクション伝播の構成
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の例
- TUXRACGROUPSを使用したトランザクション作成の特徴
- TUXRACGROUPSを使用したデータ依存型ルーティング
- 特定のOracle RACインスタンスへのトランザクションの割当て
- TUXRAGROUPSトランザクションの事例
親トピック: Oracle RACを使用するためのTuxedoの構成
6.6.4.1.1 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インスタンスに含まれるグループは、同一トランザクション内で共に使用することはできません。
- コロン(:)区切りのリスト
- 任意のOracle RAC構成に関する情報と、別のOracle RAC構成に関する情報と区別するために使用します。コロンで区切られた個々のOracle RACデータベース構成は、相互に完全に独立しています。
ノート:
一般的には、1つのRACデータベース構成のみを指定します。そのため通常は、TUXRACGROUPS
の値にコロンは必要ありません。
親トピック: トランザクション伝播の構成
6.6.4.1.2 TUXRACGROUPSの例
TUXRACGROUPS="G1;G2"
次の図は、単純なOracle RAC構成を示しています。
この例では、1つのOracleデータベース(ORA1)に対して2つのOracle RACインスタンスが存在し、各インスタンスにそれぞれ1つのグループが含まれています。
この場合、同じトランザクション・リクエストをGROUP1
とGROUP2
の両方に送信することはできません。これは、各グループが同一のOracle RACデータベース構成にマップされた異なるインスタンスを介してデータベース・サービスにアクセスするためです。
図6-1 (ORA1)単純な構成

TUXRACGROUPS="GROUP1;GROUP2:GROUP3;GROUP4,GROUP5"
次の図は、複数のグループを1つのインスタンスに追加する場合の例を示しています。
この例では、2つのOracleデータベースORA1
とORA2
が存在しています。ORA1
はマシン固有のサービスORA1SITE1
とORA1SITE2
を、ORA2
はマシン固有のサービスORA2SITE1
とORA2SITE2
を提供します。この構成は、Oracle RAC構成の各インスタンスに関連付けられたグループに、ほぼ同数のトランザクションを割り当て、同じサービスを構成することを目的としています。
この場合、同じトランザクション・リクエストをGROUP1
とGROUP2
の両方に送信することはできません。これは、各グループが同一のOracle RACデータベース構成にマップされた異なるインスタンスを介してデータベース・サービスにアクセスするためです。GROUP3
とGROUP4
、またはGROUP3
とGROUP5
についても同様で、同じトランザクションをこれらのグループの両方に送信することはできません。
GROUP4
とGROUP5
は、どちらも同じOracle RACデータベース構成の同じデータベース・サービスにアクセスするため、これらのグループはまとめて許可されます。GROUP1
とGROUP4
は、異なるRACデータベース構成にアクセスするため、まとめて許可されます。この構成にGROUP6
もある場合、GROUP6
はOracle RACグループではないため、他のグループとともに許可されます。
ノート:
各Oracle RACインスタンスに含まれるグループの数は、同一である必要はありません。図6-2 (ORA2) 1つのOracle RACインスタンス内に複数のグループが存在

この構成のUBBCONFIG
ファイルの*GROUPS
および*SERVERS
セクションは、次のリストのようになります:
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
ノート:
GROUP4
とGROUP5
には同じOPENINFO
文字列が指定されています。これは、どちらのグループも同じデータベースが提供する同じデータベース・サービスを使用することを意味しています。Oracleグループ用のOPENINFO
文字列を*GROUPS
セクションに指定する方法は、RACなしでOracleを使用する場合と変わりません。Oracleグループ用のOPENINFO
文字列を指定する方法の詳細は、『Oracle Databaseアプリケーション開発者ガイド-基礎編』の「Oracle XAを使用したアプリケーションの開発」の章を参照してください。
TUXRACGROUPS="GROUP11,GROUP12,GROUP13;GROUP21,GROUP22:GROUP3;GROUP4, GROUP5"
次の図は、複数のグループを複数のインスタンスに追加する場合の例を示しています。
この例は、1つ前で説明した例と似ていますが、GROUP11
、GROUP12
、およびGROUP13
はいずれも1番目のRAC構成の1番目のRACインスタンスに、GROUP21
とGROUP22
は2番目のRACインスタンスに関連付けられています。
この構成で、トランザクション内の最初のサービス呼出しがGROUP12
に渡された場合、このトランザクション内のその他のサービス呼出しはGROUP11
、GROUP12
、またはGROUP13
には送信できますが、GROUP21
またはGROUP22
に送信することはできません。
- 呼出しが失敗します
-
tperrno
にTPENOENT
が設定されます -
tperrordetail
に新しい値TPED_GROUP_FORBIDDENが設定されます
図6-3 複数のOracle RACインスタンス内に複数のグループが存在

TUXRACGROUPS
環境変数に定義されている各RAC構成について、Tuxedoでは、トランザクションの開始時に、その構成内のどのRACグループをトランザクションに参加させるかが決定します。
親トピック: トランザクション伝播の構成
6.6.4.1.3 TUXRACGROUPSを使用したトランザクション作成の特徴
トランザクションは、存在している間はOracle RACインスタンスに固定されます。このことは、このようなトランザクションの呼出しフローでOracle RACに関連付けられたTuxedoサービスに常にアクセスできるかどうかに関係なく当てはまります。
トランザクションの作成方法は、次の2とおりです。
TUXRACGROUPS
内にリストされているグループにトランザクションを作成します。このトランザクションは、TUXRACGROUPS
を介して構成されたOracle RACインスタンスに固定されます。TUXRACGROUPS
内にリストされていないグループにトランザクションを作成します。このトランザクションは、使用可能なOracle RACインスタンスの1つにロード・バランシングに類似したアルゴリズムで固定されます。
親トピック: トランザクション伝播の構成
6.6.4.1.4 TUXRACGROUPSを使用したデータ依存型ルーティング
データ依存型ルーティングは、Oracle RAC構成をサポートするように拡張されています。UBBCONFIGの*ROUTING
セクションには、ルーティング範囲が同一のグループを複数定義することができます。次のリストに、同じ範囲の値を持つ異なるTuxedoグループの例を示します。
同じ範囲の値を持つTuxedoグループの例
RANGES="1-5:GROUP1A, 1-5:GROUP1B, 6-10:GROUP2B, 6-10:GROUP2A, *:*"
この例では、GROUP1A
とGROUP1B
のデータ範囲が同じで、GROUP2A
とGROUP2B
のデータ範囲が同じです。Tuxedoは、トランザクションが属するOracle RACインスタンスに関連付けられているグループに、サービス・リクエストをルーティングします。
RACグループにより提供されるトランザクション・サービスに対するデータ依存型ルーティングでは、以下の場合にしか目的の結果を得られません。
- 各Oracle RACインスタンス構成は、各データ値を処理できるサービス・インスタンスを提供します。
特定のトランザクション内では1つのRAC構成インスタンスしか許可されないため、各RACインスタンス内のサービスに対応したデータ値を指定する必要があります。指定しないと、トランザクションによっては、RAC構成内のどのサービスでもデータ値が処理されない可能性があります。
- 同一のOracle RACインスタンスに接続された異なるサービス・インスタンスで異なるデータ値を処理する場合
すべてのデータ値が同じサービス・インスタンスのセットによって処理される場合は、データ依存型ルーティングを使用する必要はありません。
- 各ルーティング値に対する複数の
RANGES
エントリを、サービスを提供する各RACインスタンスに対して作成する必要がある場合特定のRACインスタンスに対してルーティングを構成しなかった場合は、そのOracle RACインスタンスに固定されたトランザクションのサービス呼出しが失敗し、
tperrno
にTPENOENT
が設定され、tperror
詳細にTPED_GROUP_FORBIDDEN
が設定されます。
トランザクション・ルーティングの開始時に、現在のトランザクションで許可されていないグループはすべて無視されます。ルーティングの決定では、以下のグループのみが対象となります。
- 許可されているRACインスタンスに関連付けられているグループ
- RAC構成に関連付けられていないグループ
非トランザクション型リクエストに対するルーティングには、すべてのグループが参加可能です。サービスは、UBBCONFIGファイル内の*ROUTING
セクションのRANGES
フィールドに指定されたデータ値と一致した最初のグループにルーティングされます。特定の範囲の値に対する非トランザクション型リクエストはすべて、1つのOracle RACインスタンスによってのみ処理されます。
トランザクション型と非トランザクション型が混在するリクエストのルーティングでは、一部のアプリケーションが非トランザクション型リクエストのロード・バランシングをリクエストしないことがあります。個々のデータ値について各アプリケーション内で最初に記述されるRACインスタンスはそれぞれ異なるため、非トランザクション型リクエストについては、個々のRACインスタンスで提供される複数のサービス間で適宜ロード・バランシングが実施されます。
非トランザクション型リクエストの場合、同じルーティング範囲に関連付けられたすべてのグループ間でロード・バランシングを実施する方法はありません。ロード・バランシングを1つずつ実施する場合は、以下を実行します。
- ほぼ等しいデータ量のRACインスタンスがそれぞれ最初に発生するように、各データ値で最初にリストされているRACインスタンスを変更します。
- 中間AUTOTRANサービス(UBBCONFIGファイルの
*SERVICES
セクション内)を呼び出して、各サービス呼出しをトランザクションに関連付けます。
図は、Oracle RAC構成内でのトランザクション型/非トランザクション型リクエストのルーティング例を示しています。
図6-4 トランザクション型/非トランザクション型リクエストのルーティング

この例で示した構成は、2つのOracle RACインスタンスで構成されています。TUXRACGROUPS
にリストされていない1つのグループに1,000個のトランザクションが作成されている場合、約500個のトランザクションがOracle RACインスタンス1に固定され、GROUP1A
とGROUP2A
にのみアクセスできます。残りの500個のトランザクションはOracle RACインスタンス2に固定され、GROUP1B
とGROUP2B
にのみアクセスできます。
この構成のUBBCONFIG
ファイルの*SERVICES
および*ROUTING
セクションの例は、次のリストのようになります:
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は最初にその残りのデータ範囲に指定されます。親トピック: トランザクション伝播の構成
6.6.4.1.5 特定のOracle RACインスタンスへのトランザクションの割当て
現在の環境を複数のマシンに分割することもできます。たとえば、TuxedoとOracle RACが別々の建物に配置されている場合、Oracle RACインスタンス1にのみアクセスするマシン群とOracle RACインスタンス2のみにアクセスするマシン群を1つのTuxedoドメインで管理して地域的な独立性を維持することも可能です。呼出しが特定の建物の外に送信されるのをできるかぎり少なくするように環境を構成できます。
次の図は、マシン1 (GROUP1A
とGROUP2A
が所属)とマシン2 (GROUP1B
とGROUP2B
が所属)の例を示しています。また、Tuxedo /WSクライアント、Tuxedoネイティブ・クライアント、Tuxedo /Qの場合やMQ Seriesなどの別のリソース・マネージャとリンクしているサーバーの場合、Tuxedo /Domainゲートウェイから呼出しが実行されてトランザクションが作成される場合もあります。
リクエストが送信されるたびに、トランザクションをローカル・マシンに固定し、異なるマシン間のホップをできるだけ回避する必要があります。
図6-5 特定のOracle RACインスタンスへのトランザクションの割当て

次のリストに、2つの物理マシン(TUXM1
およびTUXM2
)でTuxedoが実行されている場合のUBBCONFIGファイルの例を示します。両方のマシンの2つのグループがOracle RACに接続しています。GROUP1A
およびGROUP2A
のグループは、RACインスタンス1に接続しているTUXM1
というマシン上で実行中です。GROUP1B
およびGROUP2B
のグループは、RACインスタンス2に接続しているTUXM2
というマシン上で実行中です。
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=1
00+LogDir=.+MaxCur=5"
GROUP1B LMID=TUXM2 GRPNO=102 TMSNAME=TMS_ORA
OPENINFO="Oracle_XA:Oracle_XA+ACC=P/user/password+Sqlnet=ORA1SITE2+SesTm=1
00+LogDir=.+MaxCur=5"
GROUP2A LMID=TUXM1 GRPNO=201 TMSNAME=TMS_ORA
OPENINFO="Oracle_XA:Oracle_XA+ACC=P/user/password+Sqlnet=ORA1SITE1+SesTm=1
00+LogDir=.+MaxCur=5"
GROUP2B LMID=TUXM2 GRPNO=202 TMSNAME=TMS_ORA
OPENINFO="Oracle_XA:Oracle_XA+ACC=P/user/password+Sqlnet=ORA1SITE2+SesTm=1
00+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インスタンスに所属してローカルで処理されるためには、次のリストに示されているように、GWTDOMAINとネイティブTuxedoクライアントは直接Oracle RACに接続しない場合でもTUXRACGROUPS
に含まれている必要があります。
ノート:
ネイティブ・クライアントは、ローカル・グループにtpinfo->grpname
を設定して、適切な動作が行われるようにする必要があります。詳細は、「Tuxedoネイティブ・クライアントによって作成されたトランザクションがリモート・マシンに送信されるのを回避する」を参照してくださいTUXGROUPSのリスト
TUXRACGROUPS="GROUP_TDOM_A,GROUP_CLIENT_A,GROUP1A,GROUP2A;GROUP_TDOM_B,
GROUP_CLIENT_B,GROUP1B,GROUP2B"
親トピック: トランザクション伝播の構成
6.6.4.1.6 TUXRAGROUPSトランザクションの事例
- トランザクションの外部で実行されたサービス呼出しの処理
- トランザクションが含まれない限り、Tuxedoはロードが可能な間はローカル・マシン上でできる限り多くのリクエストを処理しようとします。アイドル状態のローカル・サービスがない場合にのみ、ロード・バランシング・アルゴリズムに基づいてリクエストがリモート・マシンに送信されます。つまり、すべてのサービスがそれぞれのマシン上で利用できる場合は、リモート・マシンにリクエストが送信される心配はないということです。
- 外部のリソース・マネージャを操作しているグループによって作成されたトランザクションがリモート・マシンに送信されるのを回避する
- Tuxedoサーバーが別のRM (MQSeriesなど)や別のデータベースで構築されている場合、このグループを
TUXRACGROUPS
環境変数に含めることによって、新しく開始したトランザクションをローカル・マシンに固定することができます。 - GWTDOMAINによって作成されたトランザクションがリモート・マシンに送信されるのを回避する
- 各マシンのローカルTuxedo /Domainゲートウェイで作成します。次のリストに示すように、
TUXRACGROUPS
環境変数を設定します。 - TMQFORWARDによって作成されたトランザクションがリモート・マシンに送信されるのを回避する
- 各マシンにローカルTuxedo /Q構成を作成します。次のリストに示すように、
TUXRACGROUPS
環境変数を設定します。 - Tuxedoネイティブ・クライアントによって作成されたトランザクションがリモート・マシンに送信されるのを回避する
- ネイティブ・クライアントを特別なサーバー・グループにバインドすることもできます。そのためには、コマンド
buildclient -r <RM_of_the_group> -f <source_file> -o <binary_file>
を使用してクライアントをビルドし、使用するグループ名を指定してtpinit()
を実行するだけです。 - Tuxedo /WSクライアントによって作成されたトランザクションがリモート・マシンに送信されるのを回避する
- ワークステーション・クライアントの場合、
grpname
の値にはNULL文字列(長さが0の文字列)
を指定します。任意のグループ名を設定したり、/WSクライアントを特定のグループに固定したりすることはできません。Tuxedo /WSクライアント内のtpbegin()
は常に未指定で、オープンしているトランザクションはすべてのRACインスタンスに均等に分散されます。
親トピック: トランザクション伝播の構成
6.6.4.2 トランザクション・リカバリの構成
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のマニュアルを参照してください。環境変数XARETRYDURATIONSECONDS
とXARETRYINTERVAL
は、Oracle RACの要求に応じたトランザクション・リカバリ処理(xa_recover()
)の再試行に使用します。
- XARETRYDURATIONSECONDS
TMS_rac_refresh(1)
が呼び出されたときに、Tuxedo Transaction Manager Server (TMS)によりxa_recover()
処理を再試行する間隔を指定します。この値が設定されていないか、0に設定されている場合、xa_recover()
は1回しか実行されません。- XARETRYINTERVAL
XARETRYDURATIONSECONDS
に設定した値でxa_recover()
処理を再試行する間隔を秒単位で設定します。XARETRYINTERVAL
値は、XARETRYDURATIONSECONDS
に0より大きい値を指定した場合にのみ適用されます。
- Oracle 10g Fast Application Notification (FAN)の構成
- Oracle 10gR2を使用する場合のトランザクション・リカバリの構成
- Oracle 12c以降を使用する場合のトランザクション・リカバリの構成
- UBBCONFIGファイル内の環境変数の指定
親トピック: Oracle RACを使用するためのTuxedoの構成
6.6.4.2.1 Oracle 10g Fast Application Notification (FAN)の構成
TuxedoでOracle RAC用の構成をする上で重要になるのが、グループ・フェイルオーバーの発生時に適切なグループ・パラメータを使ってTMS_rac_refresh(1)
を呼び出せるように、Oracle FANを設定する作業です。(グループ・パラメータとグループ・フェイルオーバーの詳細は、「トランザクション伝播の構成」を参照してください。)
Oracle FANの詳細は、Oracle Real Application Clustersの自動ワークロード管理(PDF)のホワイト・ペーパーを参照してください
親トピック: トランザクション・リカバリの構成
6.6.4.2.2 Oracle 10gR2を使用する場合のトランザクション・リカバリの構成
Oracle 10gR2では、トランザクション・リカバリの構成が大幅に簡素化されています。Oracle RACに関連付けられる各グループのOPENINFO
文字列で指定されたデータベース・サービスを、DTPサービスとしてOracleで宣言する必要があります。
たとえば、次のリストで、GROUP1
はサービスORA1SITE1
を経由してOracleにアクセスし、GROUP2
はサービスORA1SITE2
を経由してOracleにアクセスしています。Oracle 10gR2では、サービスORA1SITE1
を、優先インスタンスSITE1
および使用可能なインスタンスSITE2
とともにDTP=TRUE
で宣言する必要があります。サービスORA1SITE2
は、優先インスタンスSITE2
および使用可能なインスタンスSITE1
とともにDTP=TRUE
で宣言する必要があります。同様のプロセスを、グループGROUP3
、GROUP4
およびGROUP5
にも適用しなければなりません。
異なる優先インスタンスを宣言することで、両方のインスタンスが使用可能になっている通常の動作時には、アプリケーションでロード・バランシングの効果を得ることができます。
TUXRACGROUPS
環境変数の設定により、RAC構成の異なるインスタンスが同一のトランザクションで組み合されないことが保証され、最適なパフォーマンスを実現できます。1つのRACインスタンスがダウンした場合、Oracleは、トランザクションの整合性を維持しながら、DTPサービスを非優先インスタンスに転送します。
Oracle 10gR2のDTPサービスを使用している場合は、Oracle FANの構成は不要であり、お薦めしません(TMS_rac_refresh(1)
を使用するか、XARETRYDURATIONSECONDS
環境変数またはXARETRYINTERVAL
環境変数を設定してください)。
親トピック: トランザクション・リカバリの構成
6.6.4.2.3 Oracle 12c以降を使用する場合のトランザクション・リカバリの構成
Oracle Databaseリリース12c以降では特別な構成は不要で、トランザクション・リカバリは透過的に行われます。
親トピック: トランザクション・リカバリの構成
6.6.4.2.4 UBBCONFIGファイル内の環境変数の指定
TuxedoのOracle RAC用環境変数は、オペレーティング・システムのコマンド行からも設定できますが、これらの環境変数の設定には、UBBCONFIG
ファイル内の*MACHINES
セクションにENVFILE
パラメータを指定する方法を強くお薦めします。
Oracle RACの環境変数を設定する場合は、構文に次の考慮事項を適用します。
ENVFILE
パラメータを使ってTuxedo環境変数を設定する場合は(推奨される設定方法)、環境変数の値を二重引用符で囲まないでください。- 環境変数がコマンド行で設定される場合に、コマンド行インタプリタで特殊文字として解釈される可能性のある文字が環境変数値に含まれている場合は、引用符が必要です。特殊文字の例として、セミコロンがあります。
- TuxedoのOracle RAC用環境変数が、RAC構成内のすべてのノード上で、一貫性のある形で設定されていることを確認します。
関連項目:
- 「セクション1 - コマンド」の
buildtms(1)
に関する項 - 「セクション5 - ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス」の
UBBCONFIG(5)
に関する項 - トランザクションについて
- トランザクション対応のATMIアプリケーションの構成
- 『Cを使用したOracle Tuxedo ATMIアプリケーションのプログラミング』の「グローバル・トランザクションのコーディング」
- Oracle Real Application Clustersホーム・ページ
- Oracle Application Server Adapters for Tuxedo
- RACでXAを使用するためのベスト・プラクティス
親トピック: トランザクション・リカバリの構成