再現テストのお願い
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)"に設定できれば、デッドロ
ックは回避可能なはずです。
以上、よろしくお願いいたします。
2003/07/09
ugya@lycos.com