Subject: 再現テストのお願い デッドロック回避策として、下記2ケースをテストしていただけますでしょうか。 ①リソース参照に分離レベルを定義 該当のSQLを実行するSessionBeanに対して"リソース参照"を定義し、実行環境にデ プロイしてからテストを実施して下さい。 設定方法の例を画像として送付させていただきます。 "タイプ"にはお使いのデータソースを指定して下さい。 "分離レベル"は"トランザクション読み取りコミット(TRANSACTION_READ_COMMITTED)"です。 ・WSADの場合の例 ConnectionSharing.zip ・WASのAATツールの例 aat.zip ②SELECT文に"WITH CS"オプションを定義 以前実行していただいて効果がなかったとの事ですが、SELECT文を修正し、もう一 度実施していただき解析用の資料をいただく事は可能でしょうか? 上記テストでデッドロックが解消されなかった場合は、お手数ですが、前回と同じ 資料(CLI トレース、JDBCトレース、イベントモニター、 デプロイメント・ディスクリプター)を取得していただけますでしょうか? また、下記要領でlock snapshotを取得していただけると助かります。 -------------------------------------------------------------------------------------------------------------- 取得に先立って、dead lock check timeout の時間を3分くらいに伸ばしていただ き、デッドロックが発生した事に気がついたらすぐ コマンドを入力して下さい $ db2 update db cfg for sample using dlchktime 180000 DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. コマンド実行用のウインドウから下記コマンドを実行 $ db2 update monitor switches using lock on DB20000I The UPDATE MONITOR SWITCHES command completed successfully. デッドロックの待ち(3分)がはじまったと思われたら、上のlockモニターの switch on したウインドウで下記コマンドを実行 $ db2 get snapshot for locks on sample > l1.txt -------------------------------------------------------------------------------------------------------------- テスト実施に先立って、下記のようなコードで分離レベルの設定をしていない事も ご確認下さい。 Connection conn = ds.getConnection(); conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITED) 上記①②の指定が優先されるはずですので、まずは上記①②の指定でテストを実施 して下さい。 今回のデッドロック発生の原因は、分離レベルのデフォルトが"トランザクション反復可能読み取り(RS)"であり、 "トランザクション読み取りコミット(CS)"では無かった事が原因だと考えておりま す。 分離レベルを"トランザクション読み取りコミット(CS)"に設定できれば、デッドロ ックは回避可能なはずです。 以上、よろしくお願いいたします。