1 フェーズコミット対応リソースのコミット失敗時の対応

事象説明

    1 フェーズコミット対応リソースがグローバルトランザクションに参加するモデルの場合、トランザクション完 了処理の際にヒューリスティックとなる可能性が高くなります。つまりトランザクション全体をコミットしてい いのかロールバックしていいのかTransaction サービス(トランザクションマネージャ)で判断がつかなくな る状態となります。
    例えばACOS との通信障害、あるいはアプリケーションの異常終了などにより1 フェーズコミット対応リソ ースに対するコミット要求が失敗すると上述のような状態に陥ります。

状況の確認方法

    アプリケーション動作時にログファイルに次のような例外(COMM_FAILURE(3157))が出力されます。

    org.omg.CORBA.COMM_FAILURE: Commit of 1phase-resource has failed for communication failure between DBMS. vmcid: 0x0 minor code: 3157 completed: Maybe

    また、統合運用管理ツールでトランザクションの一覧を表示させた場合、「StatusPreparing」状態のトラン ザクションが存在することが確認できます。
    詳細は[ ドメイン構築・基本設定ガイド > 7. WebOTXの内部サービス > 7.4. Transactionサービス ] をご参照ください。

復旧方法

    1. データベースの更新状況の判断
      1 フェーズコミット対応リソースを使って更新しているデータベース(例えばACOS 上のデータベース) の更新状況を、トランザクションログなどを使って調査し、コミットすべきかロールバックすべきか決定 します。

    2. 該当するトランザクションの検索
      WebOTX が提供する統合運用管理ツール、あるいは運用管理コマンドよりトランザクション一覧を表 示させます。トランザクション状態が「StatusPreparing」となっているトランザクションが 該当するものです。

    3. 該当するトランザクションへのコマンド発行
      上記2.で見つけたトランザクションに対して、1.の結果に応じて「強制コミット」あるいは「強制ロールバッ ク」を発行して2 フェーズコミット対応リソースへの完了要求を発行してください。


関連情報