WebOTX Manual V10.2 (第4版) 目次を表示 |
Transactionサービスに関する運用操作法について説明します。なお、各属性の説明については[ リファレンス > 設定 > Transactionサービス > Transactionサービスに関する設定 ]をご参照ください。
Transactionサービスの起動、および停止処理の手順について説明します。
1. 統合運用管理ツールよりドメインと接続します。
2. ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」を選択し右クリックします。
3. 「Transactionの開始」を選ぶとTransactionサービスを開始します。逆に「Transactionサービスの停止」を選ぶとTransactionサービスを停止します。
1. otxadmin コマンドを起動し、ドメインにログインします。
2. Transactionサービスを開始する場合は次のコマンドを実行します。
3. 逆にTransactionサービスを停止する場合は次のコマンドを実行します。
2フェーズコミットの途中で障害が発生した場合、Transactionサービスは、トランザクションのリカバリ処理を実行します。リカバリ処理で使用するデータベースやコネクタリソースの情報を、Transactionサービスのリソースとして定義します。ここでは、そのリソースの登録・削除操作の手順について説明します。
JDBCリソース、JCAリソースの登録・削除を行う場合は、次の手順で操作を行ってください。JDBCリソースは、「JDBCデータソースのテスト」操作を行った時や、トランザクション実行時に自動的に生成されます。そのため、登録作業を省略することができます。
1. 統合運用管理ツールよりドメインと接続します。
2. ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「リソース」を選択します。
3. 右クリックメニューより次のいずれかのオペレーションを実行します。
4. 表示された画面で、生成、または、削除するリソースの名前と、必要な情報を設定してください。設定内容の詳細は、[ リファレンス > 設定 > Transactionサービス > Transactionサービスに関する設定 ]を参照してください。
5. 自動生成されたJDBCリソースを表示するためには、「リソース」の「リソースの再表示」オペレーションを実行します。
1. otxadmin コマンドを起動し、ドメインにログインします。
2. リソースの登録、または、リソースの削除コマンドを実行します。
3. 自動生成されたリソースを表示します。
稼動中のトランザクション一覧情報を取得するための手順について説明します。
WebOTXでは、業務アプリケーションの稼動状態などの統計情報を採取する機能を提供しています。Transactionサービスに関しても、稼動中のトランザクション一覧や数、平均処理時間などの情報を採取し、表示する機能を提供しています。
ただし全ての統計情報を採取すると逆にトランザクション自体の性能劣化につながります。そのためTransactionサービスでは3つの情報採取レベルを用意し、レベルに応じて採取する情報の量を調整できるようにしています。詳しくは、[ リファレンス > 統計情報一覧 > 採取可能なパフォーマンス情報 > JTAStats ]を参照してください。
なお、表示するトランザクション情報もそのレベルに応じて変わります。
Transactionサービスで用意している3つの情報採取レベルにはOFF/LOW/HIGHの3つがあります。それらのレベルに応じて表示する稼動中のトランザクション情報が異なります。障害状態になっているトランザクションなど重要度が高いものについては設定されているレベルが低くても表示されるようになっています。
項目 |
説明 |
表示対象となるトランザクション情報 |
---|---|---|
OFF (レベル0) | 統計情報は基本的に採取しません。 |
次の状態のトランザクション情報のみ表示します。
|
LOW (レベル1) | Transactionサービスで提供する統計情報のうち、障害レベルのものについてのみ採取します。レベルOFFの場合に比べ、若干のトランザクション性能劣化が発生します。 |
次の状態のトランザクション情報のみ表示します。
|
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. 「Transaction情報」ツリーの下に各トランザクション情報が表示されます。
1. otxadmin コマンドを起動し、ドメインにログインします。
2. 次のコマンドを実行します。
3.
2.で実行したコマンドはサーバから情報を取得しただけなので、一覧を表示させるにはさらに次のコマンドを実行します。
4. 3.を実行すると次のようにリスト表示されます。
各トランザクションに対して強制的に完了操作を行うことができます。その手順について説明します。
1. 統合運用管理ツールよりドメインと接続します。
2. ツリービューより「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「Transaction情報」−「<トランザクション識別子>(数字の部分)」を選択し右クリックします。右側にはトランザクションに関する情報が表示されます。
3. 該当するトランザクションに対して行いたい処理に応じてメニューを選択します。ただしトランザクションの状態に応じて実行可能なコマンドの種類は限定されますのでご注意ください。
1. otxadminコマンドを起動し、ドメインにログインします。
2. 次のコマンドを実施すると稼動中トランザクションの識別子一覧を見ることができます。
3.
次のコマンドを実行してトランザクションの完了処理を行うことができます。<トランザクション識別子>のところには2.のコマンドで指定したstxid相当の数字を指定します。
なお、強制削除を行うとトランザクションの継続処理を全く実施せずにトランザクション情報を削除してしまいますので、場合によってはトランザクション全体としての結果に矛盾が生じる場合があります。慎重に行ってください。
また、トランザクションの操作については、統合運用管理ツールの「<ドメイン名>」-「統計情報」−「domain」−「トランザクションサービス」のところでも実施することができます。詳細については [ 構築・運用 > ドメインの構築 > 統計情報の取得 > Transactionサービス(JTA)統計情報の取得 ] をご参照ください。
登録・削除以外の、リソースの運用操作を行うための手順について説明します。
データベースサーバのメンテナンスを行う場合など、データベースサーバとのコネクションを切断する必要がある場合は、リソースの停止オペレーションを実行します。データベースサーバのメンテナンスが終わった場合は、リソースの開始オペレーションを実行し、トランザクションのリカバリ処理を行うことができる状態に戻します。
1. 統合運用管理ツールよりドメインと接続します。
2. ツリービューより次のいずれかを選択します。
3. 右クリックメニューより次のいずれかのオペレーションを実行します。
「リソースの開始」、または、「リソースの停止」
1. otxadmin コマンドを起動し、ドメインにログインします。
2. リソースの開始、または、リソースの停止を実行します。
トランザクションのリカバリ操作は、通常、本マニュアルの[ ドメインの構築 > 統計情報の取得 > Transactionサービス(JTA)統計情報の取得 > トランザクションの操作 ]の説明に従って実行します。ただし、まれにDBMS間との状態不一致などによりトランザクションマネージャ側でトランザクションの結果を自動追跡できなくなる場合があります。そういう状態になった場合には、リソース毎にリカバリ操作を実行します。
なお、[ ドメインの構築 > 統計情報の取得 > Transactionサービス(JTA)統計情報の取得 > トランザクションの操作 ]で表示されるトランザクションの情報は、リソース毎の操作では表示されません。
1. 統合運用管理ツールよりドメインと接続します。
2. ツリービューより次のいずれかを選択します。
3. 右クリックメニューより「トランザクションの一覧表示」オペレーションを実行します。
4. 「トランザクションの一覧表示」で表示された “ShortTxId”を指定して次のいずれかのオペレーションを実行します。
1. otxadmin コマンドを起動し、ドメインにログインします。
2. トランザクションの一覧を表示します。
3. トランザクションのリカバリ処理を実行します。
どの操作を行うかどうかについては、「トランザクションの一覧表示」で表示されたXidをキーにしてデータベース側のトランザクションの状態を確認した上で、決定してください。詳細は、各データベースのオンラインリファレンスを参照してください。
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フェーズコミット対応リソースをグローバルトランザクションに参加させる場合、JDBCデータソースに関する設定・登録が必要となります。登録の際にデータソースの種別(dataSourceType)に「JDBC API」を指定してください。リソースに対する運用操作については、リソースの種別に関わらず共通です。
JDBCデータソースに関する設定の詳細は、[ リファレンス > 設定 > JDBCデータソース > JDBCデータソース設定項目・設定方法 ]をご参照ください。また、AATとの連携のための準備についてもJDBCデータソースの章で掲載していますが、詳細はAATのマニュアルをご参照ください。
本来であれば、1つのグローバルトランザクション内で「2フェーズコミット対応リソース」と「1フェーズコミット対応リソース」を同時に参加させて、データの同時更新を行うことはできません。これは1フェーズコミット対応リソースが2フェーズコミットトランザクションに対応していないため、2フェーズコミットメントの第1段階(プリペア)を実行することができないからです。
WebOTXのTransactionサービスでは、上述のような混在を可能にする形態をサポートしています。ただしトランザクションの同時更新における一貫性を保証する関係上次のような構成上の制限をつけています。
・
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フェーズコミットメントでの動作を前提としているものを、いわば無理やり2フェーズコミットトランザクションに参加させているため、トランザクション完了処理の際にヒューリスティックとなる可能性が高くなります。つまりトランザクション全体をコミットしていいのかロールバックしていいのかTransactionサービス(トランザクションマネージャ)で判断がつかなくなる状態となります。
例えばACOSとの通信障害、あるいはアプリケーションの異常終了などにより1フェーズコミット対応リソースに対するコミット要求が失敗すると上述のような状態に陥ります。
この場合、ACOS側には処理要求が届いておりデータ更新が正常にコミットされているかもしれません。そうであればトランザクション全体をコミットする必要があります。逆に、処理要求自体がACOS側に到達していない可能性もあります。そうであればトランザクション全体をロールバックして更新を無効にしてあげなければなりません。
その際の復旧処理は次のように行います。
(1) データベースの更新状況の判断
(2) 該当するトランザクションの検索
(3) 該当するトランザクションへのコマンド発行
なお、トランザクション状態がStatusPreparingのものの一覧を表示させる場合、本マニュアルの[ トランザクション一覧情報の取得操作 ]にあるように、トランザクションモニタレベルをHIGHにする必要があります。
クライアントアプリケーションにおいてもトランザクション機能を利用することができます。クライアントアプリケーションで利用するトランザクションを管理するためにProxy Recovery Coordination Server(以下Proxy RCS)を利用する必要があります。ただし、EJBのクライアントであるアプリケーションクライアントではこれらのサーバは必要ありません。
Proxy RCSは統合運用管理ツールより起動することができます。詳細については、[ リファレンス > 設定 > Transactionサービス > Transactionサービスに関する設定 ]を参照してください。
本節では、Proxy RCSを利用するためのクライアント側の設定方法、及び、クライアントアプリケーションのトランザクションの動作トレースの採取の方法について説明します。
Proxy RCSを利用する際にはクライアントアプリケーション起動時にProxy RCSを取得する必要があります。このリファレンスは名前サーバに登録されています。このリファレンスを取得するためには以下のように設定します。
名前 |
値 |
既定値 |
---|---|---|
TFDecision |
Proxy RCS 0: 自マシン上にある 1: 他のマシン上のものを利用 |
0 |
TFMachine | TFDecisionが1の場合のマシン名 | 無し |
NSRoot |
Proxy RCSが利用する名前サーバの初期コンテキストをINS形式で指定する。 例:corbaloc://ホスト名:ポート番号/NameService |
無し(自ホストの名前サーバを利用) |
TxTimeout | トランザクションタイムアウト時間(秒)。0を指定するとタイムアウト無しとなる。 | 600 |
クライアントアプリケーション起動時のシステムプロパティで指定する。(-D名前=値)
クライアントアプリケーションのトランザクションの動作トレースの採取は以下の手順で行なえます。なお、EJBのアプリケーションクライアントに関しても同様の手順で採取できます。
1. トレース採取方法設定ファイルを作成
以下のJavaコマンドを実行して作成してください。これにより、trace.confファイルが生成されます。
2. トレース採取方法設定ファイルの項目の設定
以下の項目を必要に応じて変更してください。
名前 |
値 |
既定値 |
---|---|---|
TraceLevel |
0〜5 0:無し、1:エラー、2:警告、3:情報、4:詳細、5:デバッグ |
1 |
TraceFileSize | トレースファイルサイズ(Byte)、TraceLevelを5にする場合には、サイズを大きくして下さい | 1048576(1MB) |
TraceFileName | 出力するトレースのファイル名 | 引数で指定したもの |
3. クライアントアプリケーション起動時にトレース採取方法設定ファイルを指定して実行
クライアントアプリケーション起動時のシステムプロパティに以下を追加してください。