Oracle でのトランザクション障害への対応

事象説明

Oracle サーバ側で、JAVA_XA というパッケージがインストールされていない場合、EJB のトランザクション(JTA のトランザクション)の実行に失敗することがあります。

状況の確認方法

sqlplus 等で次のコマンドを実行し、インストールされているかどうかを確認してください。

> desc JAVA_XA

復旧方法
sqlplus 等で下記のストアドプロシージャを実行して、JAVA_XA パッケージの再構築を行ってください。
再構築方法の詳細については、必ず、Oracle のマニュアルで確認してください。

${ORACLE_HOME}/javavm/install/initjvm.sql
対象となるエラー事象

トランザクション実行時に、wojdbc.log、または、プロセスグループのログに次の内容が出力されます。(XXXX の部分には、動作状況に応じて異なる値が出力されます。また、oracleErrorCode部分は、出力されないことがあります。)

    WOXAResource.start(flag=TMNOFLAGS,TX=XXXX,xa-hash=XXXX,fid=XXXX,gid=XXXX,bid=XXXX) : catch oracle.jdbc.xa.Oracle XAException, xaErrorCode=-3, oracleErrorCode=6550


ログは、次のファイルに出力されます。

    エージェントプロセス内で動作する場合:
    ${INSTANCE_ROOT}/logs/jdbc/wojdbc.log

    Standard/Enterprise のプロセスグループ内で動作する場合:
    ${INSTANCE_ROOT}/logs/tpsystem/<apgname>/<pgname>/<pgname>.<pid>.log


関連情報