WebOTX運用編(Transactionサービスの運用操作)

1 はじめに

本書はWebOTX実行環境を運用するための運用操作法について概要や具体的な設定項目や設定方法について記載しています。

対象読者

このマニュアルはWebOTX Application Server Web Edition、Standard-J Edition、Standard Edition、Enterprise Editionを使って運用環境を構築するシステムエンジニア、日々の運用を行うオペレータを対象としています。

表記について

パス名表記

本書ではパス名の表記については特にOSを限定しない限りセパレータはスラッシュ’/’で統一しています。Windows環境においては’\’に置き換えてください。

環境変数表記

インストールディレクトリやドメインルートディレクトリなど環境によって値の異なるものについては環境変数を用いて表します。

${env} または$(env)で表しています。

例)

コマンド操作について

本書中では運用操作に用いるコマンドの詳細についての説明は省略しています。

コマンドの詳細は「運用管理コマンド」、「運用管理コマンドリファレンス」を参照してください。

2 Transactionサービスの運用操作

Transactionサービスに関する運用操作法について説明します。なお、各属性の説明については「運用編(コンフィグレーション)Transactionサービスに関する設定」をご参照ください。

2.1 Transactionサービスの起動・停止

Transactionサービスの起動、および停止処理の手順について説明します。

統合運用管理ツールから操作

1.  統合運用管理ツールよりドメインと接続します。

2.  ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transacitonサービス」を選択し右クリックします。

3.  「Transactionの開始」を選ぶとTransactionサービスを開始します。逆に「Transactionサービスの停止」を選ぶとTransactionサービスを停止します。

コマンドから操作

1.  otxadmin コマンドを起動し、ドメインにログインします。

2.  Transactionサービスを開始する場合は次のコマンドを実行します。

3.  逆にTransactionサービスを停止する場合は次のコマンドを実行します。

2.2 リソースの登録・削除

2フェーズコミットの途中で障害が発生した場合、Transactionサービスは、トランザクションのリカバリ処理を実行します。リカバリ処理で使用するデータベースやコネクタリソースの情報を、Transactionサービスのリソースとして定義します。ここでは、そのリソースの登録・削除操作の手順について説明します。

統合運用管理ツールからリソース登録・削除

JDBCリソース、JCAリソース、C++ XAリソースの登録・削除を行う場合は、次の手順で操作を行ってください。JDBCリソースは、「JDBCデータソースのテスト」操作を行った時や、トランザクション実行時に自動的に生成されます。そのため、登録作業を省略することができます。

1.   統合運用管理ツールよりドメインと接続します。

2.   ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「リソース」を選択します。

3.   右クリックメニューより次のいずれかのオペレーションを実行します。

4.   表示された画面で、生成、または、削除するリソースの名前と、必要な情報を設定してください。設定内容の詳細は、「運用編(コンフィグレーション)Transactionサービスに関する設定 」を参照してください。

5.   自動生成されたJDBCリソースを表示するためには、「リソース」の「リソースの再表示」オペレーションを実行します。

また、AP用C++ XAリソースの登録・削除を行う場合は、次の手順で操作を行ってください。TransactionサービスとAPで同じC++ XAリソースを使用する場合は、AP用C++ XAリソースの登録作業を行う必要はありません。

1.  ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「リソース」−「cppxa-resource」−「C++XAリソース名」を選択します。

2.   右クリックメニューより次のいずれかのオペレーションを実行します。

3.   表示された画面で、生成、または、削除するリソースの名前と、必要な情報を設定してください。設定内容の詳細は、「運用編(コンフィグレーション)Transactionサービスに関する設定」を参照してください。

コマンドからリソース登録・削除

1.   otxadmin コマンドを起動し、ドメインにログインします。

2.   リソースの登録、または、リソースの削除コマンドを実行します。

3.   自動生成されたリソースを表示します。

2.3 トランザクション一覧情報の取得操作

稼動中のトランザクション一覧情報を取得するための手順について説明します。

WebOTXでは、業務アプリケーションの稼動状態などの統計情報を採取する機能を提供しています。Transactionサービスに関しても、稼動中のトランザクション一覧や数、平均処理時間などの情報を採取し、表示する機能を提供しています。

ただし全ての統計情報を採取すると逆にトランザクション自体の性能劣化につながります。そのためTransactionサービスでは3つの情報採取レベルを用意し、レベルに応じて採取する情報の量を調整できるようにしています。詳しくは、「運用編(モニタリング) JTAStats」を参照してください。

なお、表示するトランザクション情報もそのレベルに応じて変わります。

トランザクション情報採取レベル

Transactionサービスで用意している3つの情報採取レベルにはOFF/LOW/HIGHの3つがあります。それらのレベルに応じて表示する稼動中のトランザクション情報が異なります。障害状態になっているトランザクションなど重要度が高いものについては設定されているレベルが低くても表示されるようになっています。

項目

説明

表示対象となるトランザクション情報

OFF(レベル0)

統計情報は基本的に採取しません。

トランザクションの状態が次のもののトランザクション情報のみ表示します。

  • StatusCommitted
  • StatusRolledBack
  • StatusUnknown

LOW(レベル1)

Transactionサービスで提供する統計情報のうち、障害レベルのものについてのみ採取します。レベルOFFの場合に比べ、若干のトランザクション性能劣化が発生します。

トランザクションの状態が次のもののトランザクション情報のみ表示します。

  • StatusCommitting
  • StatusRollingBack
  • StatusCommitted
  • StatusRolledBack
  • StatusUnknown

HIGH(レベル2)

Transactionサービスで提供する統計情報の全てを採取します。レベルLOWの場合に比べ、大きなトランザクション性能劣化が発生します。

トランザクションの状態に関わらず全てのトランザクション情報を表示します。

これらのレベルについては次の手順で参照することができます。

統合運用管理ツールを用いたトランザクション情報採取レベルの参照

1.   統合運用管理ツールよりドメインと接続します。

2.   ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「Transaction情報」を選択すると右側に表示されます。

コマンドを用いたトランザクション情報採取レベルの参照

1.   otxadmin コマンドを起動し、ドメインにログインします。

2.   次のコマンドを実行します。0〜2の数字が戻り値として表示されます。

なお、「Transaction情報」(tstxlist)からトランザクション情報採取レベルを設定することはできません。設定については上の絵の中に書かれているように「モニタリングサービス」のところから実施する必要があります。詳細は「運用編(モニタリング)」を参照してください。ここでは簡単に方法を記載します。

統合運用管理ツールを用いたトランザクション情報採取レベルの操作

1.   統合運用管理ツールよりドメインと接続します。

2.   ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「モニタリングサービス」−「モジュールモニタリングレベル」を選択します。

3.   右側に表示される項目のうち、「transactionserviceモニタリングレベル」のところにOFF/LOW/HIGHのいずれかを指定します。

コマンドを用いたトランザクション情報採取レベルの参照

1.   otxadmin コマンドを起動し、ドメインにログインします。

2.   次のコマンドのいずれかを実行します。’=’の後に「OFF」「LOW」「HIGH」のいずれかの文字列を指定します。

次に稼動中のトランザクション一覧の取得方法を記載します。

統合運用管理ツールからトランザクション一覧の取得操作

1.   統合運用管理ツールよりドメインと接続します。

2.   ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「Transaction情報」を選択し右クリックします。

3.   「Transaction一覧取得」を選ぶとサーバに対して処理要求を実施します。

4.   「Trasnaction情報」ツリーの下に各トランザクション情報が表示されます。

コマンドからトランザクション一覧の取得操作

1.  otxadmin コマンドを起動し、ドメインにログインします。

2.   次のコマンドを実行します。

3.   2.で実行したコマンドはサーバから情報を取得しただけなので、一覧を表示させるにはさらに次のコマンドを実行します。

4.   3.を実行すると次のようにリスト表示されます。

2.4 トランザクションの操作

各トランザクションに対して強制的に完了操作を行うことができます。その手順について説明します。

統合運用管理ツールから操作

1.   統合運用管理ツールよりドメインと接続します。

2.   ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transacitonサービス」−「Transaction情報」−「<トランザクション識別子>(数字の部分)」を選択し右クリックします。右側にはトランザクションに関する情報が表示されます。

3.   該当するトランザクションに対して行いたい処理に応じてメニューを選択します。ただしトランザクションの状態に応じて実行可能なコマンドの種類は限定されますのでご注意ください。

コマンドから操作

1.   otxadminコマンドを起動し、ドメインにログインします。

2.   次のコマンドを実施すると稼動中トランザクションの識別子一覧を見ることができます。

3.   次のコマンドを実行してトランザクションの完了処理を行うことができます。<トランザクション識別子>のところには2.のコマンドで指定したstxid相当の数字を指定します。


なお、強制削除を行うとトランザクションの継続処理を全く実施せずにトランザクション情報を削除してしまいますので、場合によってはトランザクション全体としての結果に矛盾が生じる場合があります。慎重に行ってください。

statsツリーからのトランザクションの操作

また、トランザクションの操作については、統合運用管理ツールの「<ドメイン名>」-「統計情報」−「domain」−「トランザクションサービス」のところでも実施することができます。詳細については運用編(ドメインの運用)の「Transactionサービス(JTA)統計情報の取得」をご参照ください。

 

2.5 リソースの運用操作

登録・削除以外の、リソースの運用操作を行うための手順について説明します。

リソースの開始と停止

データベースサーバのメンテナンスを行う場合など、データベースサーバとのコネクションを切断する必要がある場合は、リソースの停止オペレーションを実行します。データベースサーバのメンテナンスが終わった場合は、リソースの開始オペレーションを実行し、トランザクションのリカバリ処理を行うことができる状態に戻します。

統合運用管理ツールからリソースの開始と停止

1.   統合運用管理ツールよりドメインと接続します。

2.   ツリービューより次のいずれかを選択します。

3.   右クリックメニューより次のいずれかのオペレーションを実行します。

コマンドからリソースの開始と停止

1.   otxadmin コマンドを起動し、ドメインにログインします。

2.   リソースの開始、または、リソースの停止を実行します。

トランザクションの手動リカバリ操作

トランザクションのリカバリ操作は、通常、本マニュアルの「トランザクションの操作」の説明に従って実行します。ただし、まれにDBMS間との状態不一致などによりトランザクションマネージャ側でトランザクションの結果を自動追跡できなくなる場合があります。そういう状態になった場合には、リソース毎にリカバリ操作を実行します。

なお、「2.4 トランザクションの操作」で表示されるトランザクションの情報は、リソース毎の操作では表示されません。

統合運用管理ツールからトランザクションのリカバリ操作

1.   統合運用管理ツールよりドメインと接続します。

2.   ツリービューより次のいずれかを選択します。

3.   右クリックメニューより「トランザクションの一覧表示」オペレーションを実行します。

4.   「トランザクションの一覧表示」で表示された “ShortTxId”を指定して次のいずれかのオペレーションを実行します。

コマンドからトランザクションのリカバリ操作

1.   otxadmin コマンドを起動し、ドメインにログインします。

2.   トランザクションの一覧を表示します。

3.   トランザクションのリカバリ処理を実行します。

どの操作を行うかどうかについては、「トランザクションの一覧表示」で表示されたXidをキーにしてデータベース側のトランザクションの状態を確認した上で、決定してください。詳細は、各データベースのオンラインリファレンスを参照してください。

2.6 1フェーズコミット対応リソースの2フェーズコミットへの参加

Transactionサービスは、X/Open分散トランザクション処理にしたがったデータベースへのアクセス、および更新をサポートしており、トランザクションマネージャとリソースマネージャとのやりとりにはXAインタフェースが使われます。

Transactionサービス内のリソースマネージャには、2フェーズコミットメントによるトランザクションの調整をサポートする「2フェーズコミット対応リソース」と、ローカルトランザクションのような1フェーズコミットメント調整だけをサポートする「1フェーズコミット対応リソース」の2種類が存在します。

例えば、ACOS上で管理されるデータベースのような2フェーズコミットメントをサポートしていないものへのアクセスにこの「1フェーズコミット対応リソース」を利用します。Transactionサービスでは、ACOS Access Toolkit(AAT)が提供するJDBCドライバと連携するための「1フェーズコミット対応リソース」を実装しており、それを使用することで、2フェーズコミットメントに対応していないACOS上のトランザクションをWebOTXシステムの2フェーズコミットトランザクションに参加できる機能を提供しています。 つまり同一のトランザクションで、ACOS上のデータベースと、Oracleなどオープンサーバ上のデータベースの同時更新を管理することができます。

1フェーズコミット対応リソースを参加させるための準備

1フェーズコミット対応リソースをグローバルトランザクションに参加させる場合、JDBCデータソースに関する設定・登録が必要となります。登録の際にデータソースの種別(dataSourceType)に「JDBC API」を指定してください。リソースに対する運用操作については、リソースの種別に関わらず共通です。

JDBCデータソースに関する設定の詳細は、運用編(コンフィグレーション) の「JDBCデータソースに関する設定」の章をご参照ください。また、AATとの連携のための準備についてもJDBCデータソースの章で掲載していますが、詳細はAATのマニュアルをご参照ください。

リソース混在時の注意事項

本来であれば、1つのグローバルトランザクション内で「2フェーズコミット対応リソース」と「1フェーズコミット対応リソース」を同時に参加させて、データの同時更新を行うことはできません。これは1フェーズコミット対応リソースが2フェーズコミットトランザクションに対応していないため、2フェーズコミットメントの第1段階(プリペア)を実行することができないからです。

WebOTXのTrasactionサービスでは、上述のような混在を可能にする形態をサポートしています。ただしトランザクションの同時更新における一貫性を保証する関係上次のような構成上の制限をつけています。

・   1つのグローバルトランザクションに参加できる1フェーズコミット対応リソースは1つのみです。

・   伝播先トランザクションに1フェーズコミット対応リソースが参加している場合、伝播元(上位)のトランザクションに登録されているリソースが存在してはいけません。

(OKの場合その1)

(OKの場合その2)

(OKの場合その3)

(OKの場合その4)

(NGの場合その1)

(NGの場合その2)

(NGの場合その3)

このような制限を設ける理由として、例えばApplication間でのトランザクション連携が別ベンダー製品を含む複数アプリケーションサーバをまたがって行われている場合が考えられます。互いのアプリケーションサーバで、それぞれ1フェーズコミット対応リソースが参加していてもそれを互いに認識するためのインタフェースが提供されているとは限らないからです。少なくともWebOTXのTransactionサービスにはそれを通知するための手段は提供していません。

このような構成でトランザクションのコミットを実施しようとすると失敗します。トランザクション全体としてはロールバックしTRANSACTION_ROLLEDBACK例外が返されます。

トランザクション完了時の処理の流れ

トランザクションのコミット時には、まず2フェーズコミット対応リソース群に対して第1段階(プリペア)要求を発行します。2フェーズコミット対応リソース群のうち1つでも異常終了した場合は、トランザクション全体をロールバックさせます。

逆に全ての2フェーズコミット対応リソースから正常終了が戻ってきたら1フェーズコミット対応リソースに対して、コミット要求を発行します。プリペア相当は存在しないため、このタイミングですぐにコミット処理となります。AATと連携する場合、ACOS側データベースに対してAATが提供するJDBCドライバを経由してコミット要求を発行します。これが正常に終了するとトランザクション全体はコミットします。すなわち2フェーズコミット対応リソース群に対してコミットを要求します。逆に異常終了すると2フェーズコミット対応リソース群に対してロールバックを発行します。

1フェーズコミット対応リソースに対するコミット失敗時の流れ

1フェーズコミット対応リソースがグローバルトランザクションに参加するモデルの場合、本来であれば1フェーズコミットメントでの動作を前提としているものを、いわば無理やり2フェーズコミットトランザクションに参加させているため、トランザクション完了処理の際にヒューリスティックとなる可能性が高くなります。つまりトランザクション全体をコミットしていいのかロールバックしていいのかTransactionサービス(トランザクションマネージャ)で判断がつかなくなる状態となります。

例えばACOSとの通信障害、あるいはアプリケーションの異常終了などにより1フェーズコミット対応リソースに対するコミット要求が失敗すると上述のような状態に陥ります。

この場合、ACOS側には処理要求が届いておりデータ更新が正常にコミットされているかもしれません。そうであればトランザクション全体をコミットする必要があります。逆に、処理要求自体がACOS側に到達していない可能性もあります。そうであればトランザクション全体をロールバックして更新を無効にしてあげなければなりません。

その際の復旧処理は次のように行います。

(1)   データベースの更新状況の判断

(2)   該当するトランザクションの検索

(3)   該当するトランザクションへのコマンド発行

なお、トランザクション状態がStatusPreparingのものの一覧を表示させる場合、本マニュアルの「トランザクション一覧情報の取得操作」にあるように、トランザクションモニタレベルをHIGHにする必要があります。

2.7 クライアントアプリケーションの運用操作

クライアントアプリケーションにおいてもトランザクション機能を利用することができます。クライアントアプリケーションで利用するトランザクションを管理するためにProxy Recovery Coordination Server(以下Proxy RCS)、もしくは、リカバリサーバを利用する必要があります。ただし、EJBのクライアントであるアプリケーションクライアントではこれらのサーバは必要ありません。

Proxy RCSは統合運用管理ツールより起動することができます。詳細については、「運用編(コンフィグレーション)」の「Transactionサービスに関する設定」の節を参照してください。リカバリサーバはTS運用管理ツール、もしくは、サービス等から起動することができます。詳細については、「WebOTX運用編」の付録にある「Transactionサービス(リカバリサーバ利用時)」を参照してください。

なお、トランザクション機能を利用したクライアントアプリケーションのプログラミング方法については、「アプリケーション開発ガイド」の「プログラミング・開発」の「Transactionサービス」の節を参照してください。

本節では、Proxy RCS、もしくは、リカバリサーバを利用するためのクライアント側の設定方法、及び、クライアントアプリケーションのトランザクションの動作トレースの採取の方法について説明します。

Proxy RCS、リカバリサーバを利用するための設定

Proxy RCS、もしくは、リカバリサーバを利用する際にはクライアントアプリケーション起動時にProxy RCS、もしくは、リカバリサーバのリファレンス(TransactionFactory)を取得する必要があります。このリファレンスは名前サーバに登録されています。このリファレンスを取得するためには以下のように設定します。

設定内容

名前

既定値

TFDecision

Proxy RCS、リカバリサーバの位置

0: 自マシン上にある
1: 他のマシン上のものを利用

0

TFMachine

TFDecisionが1の場合のマシン名

無し

NSRoot

Proxy RCS、リカバリサーバが利用する名前サーバの初期コンテキストをINS形式で指定する。

例:corbaloc://ホスト名:ポート番号/NameService

無し(自ホストの名前サーバを利用)

TxTimeout

トランザクションタイムアウト時間(秒)。0を指定するとタイムアウト無しとなる。

600

設定方法

C++クライアントアプリケーションの場合)

Windows版:レジストリ(regeditで更新)\\HKEY_LOCAL_MACHINE\SOFTWARE\NEC\WebOTX_S\Client配下

UNIX版:/etc/WebOTX/TS/WebOTX_TS.confの[Client]セクション配下

Javaクライアントアプリケーションの場合)

クライアントアプリケーション起動時のシステムプロパティで指定する。(-D名前=値)

トレースを採取するための設定

クライアントアプリケーションのトランザクションの動作トレースの採取は以下の手順で行なえます。なお、EJBのアプリケーションクライアントに関しても同様の手順で採取できます。

1.   トレース採取方法設定ファイルを作成

2.   トレース採取方法設定ファイルの項目の設定

以下の項目を必要に応じて変更してください。

名前

既定値

TraceLevel

0〜5
0:無し、1:エラー、2:警告、3:情報、4:詳細、5:デバッグ

1

TraceFileSize

トレースファイルサイズ(byte)、TraceLevelを5にする場合には、サイズを大きくして下さい

1048576(1MByte)

TraceFileName

出力するトレースのファイル名

CurTrace.trc(C++)、もしくは、引数で指定したもの(Java)

3.   クライアントアプリケーション起動時にトレース採取方法設定ファイルを指定して実行

なお、採取したトレースを参照するためには以下のツールを利用してください。