はじめに
デッドロックしたトランザクションを中断した時に、ロールバックの進捗を確認する方法を残しておく。
内容
前提
実行環境は以下となる。
- OSバージョン
- Windows Server 2016 Standard
- Oracle Databaseバージョン
- Oracle Database 12C
利用場面
トランザクションを中断したものの、セッション情報を見ると、いつまでもステータスがACTIVEな状態のことがある。
その際、ロールバックに時間がかかっている可能性があり、その進捗を確認したい時に利用する。
確認方法
以下のクエリを実行する。
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS "TIME"
,KTUXEUSN
,KTUXESLT
,KTUXESQN
,KTUXESTA
,KTUXESIZ
FROM X$KTUXE
WHERE KTUXECFL LIKE '%DEAD%'
ORDER BY 1
まとめ
ロールバック状況で、数値の長時間変動がない場合、ロールバックも上手くいっていない場合があるため、セッションキルだけでなく、ORAKILLも考慮に入れた対応をする必要がある。
その判断をするために利用すると良い。
コメント