デッドロックトランザクションのロールバック状況確認方法

はじめに

デッドロックしたトランザクションを中断した時に、ロールバックの進捗を確認する方法を残しておく。

内容

前提

実行環境は以下となる。

  • 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も考慮に入れた対応をする必要がある。
その判断をするために利用すると良い。

コメント

タイトルとURLをコピーしました