Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


10.8.4 トランザクションがロールバックしたときの状況を確認する方法

APまたはコマンドを実行したときに,トランザクションのロールバックが発生しているかどうかを確認する方法について説明します。また,トランザクションのロールバックが発生している場合に,ロールバックの進捗状況を確認する方法についても説明します。

■トランザクションがロールバックしているかどうかを確認する方法

トランザクションがロールバックしているかどうかを確認する場合,adbls -d cnctコマンドを実行してください。出力項目「STATUS」を確認して,"ROLLBACKING"となっているAPおよびコマンドがないかどうかを確認してください。"ROLLBACKING"となっている場合は,対象のAPやコマンドはロールバック中です。

■ロールバックの進捗状況を確認する方法

トランザクションのロールバックに想定以上の時間が掛かっている場合は,KFAA81215-Iメッセージが出力されているかどうかを確認してください。KFAA81215-Iメッセージを確認すると,トランザクションのロールバックに伴う,データベースの回復処理の進捗状況を確認できます。

KFAA81215-Iメッセージから,データベースの回復処理が完了して,後続の処理を再開できる時間を見積もってください。

なお,KFAA81215-Iメッセージは,サーバ定義のadb_log_rec_msg_intervalオペランドの指定値に従って,一定の間隔で出力されます。

■ロールバックが完了したあとに実施すること

トランザクションのロールバックが完了したあとで,KFAA81211-Iメッセージが出力されているかどうかを確認してください。KFAA81211-Iメッセージには,トランザクションの回復処理に関する情報が出力されます。

KFAA81211-Iメッセージを確認して,回復処理に時間が掛かったトランザクションについて,コミット回数を増やすなど,1トランザクションによるデータベースの更新量を減らすことを検討してください。

なお,KFAA81211-Iメッセージは,サーバ定義のadb_log_rec_msg_intervalオペランドの指定値よりも,回復処理に時間が掛かったトランザクションが存在する場合に出力されます。

また,KFAA81211-Iメッセージに出力されたトランザクションIDから,対象のトランザクションで実行されたSQL文を特定できます。トランザクションIDをキーにして,SQLトレース情報の「SQL文の実行情報」に出力されたtran_idの値を確認してください。トランザクションIDとtran_idが一致するSQL文が,対象のトランザクションで実行されたSQL文です。SQL文の実行情報については,「10.11.2 SQLトレース情報に出力される情報」の「(2) SQL文の実行情報」を参照してください。