V$TRANSACTION
V$TRANSACTION動的パフォーマンスビューを参照する事で現在発生しているトランザクションを確認できます。SES_ADDR項目でV$SESSIONと紐付け可能なので、どのセッションでトランザクションが発生いしているか確認できます。
現在進行中トランザクション一覧出力SQL
select t.SES_ADDR -- v$sessionとの結合キー ,t.XID -- トランザクションXID ,t.XIDUSN -- UNDOセグメント番号 ,t.STATUS -- トランザクション状態 ,t.START_TIME -- トランザクション開始時刻 ,s.SID ,s.SERIAL# ,s.USERNAME ,s.SQL_EXEC_START -- SQL実行が開始された時刻 ,s.MACHINE ,s.TERMINAL ,s.SQL_ID ,s.STATE ,s.LOCKWAIT,s.PROGRAM from v$session s inner join v$transaction t on s.SADDR = t.SES_ADDR order by s.SQL_ID ;
出力例
以下のような感じで出力されます。(レイアウト都合上縦表示)
SES_ADDR | 00000000A6CE3BE8 | |
XID | 060012005C3C0000 | |
XIDUSN | 6 | |
STATUS | ACTIVE | トランザクションの状態 |
START_TIME | 2012/2/21 0:46 | トランザクション開始時刻 |
SID | 29 | セッションID |
SERIAL# | 18847 | セッションシリアル番号 |
USERNAME | SOONI | |
SQL_EXEC_START | SQL実行開始時間 | |
MACHINE | DESKTOP-00374JP | |
TERMINAL | unknown | |
SQL_ID | ||
STATE | WAITING | |
LOCKWAIT | ||
PROGRAM | SQL Developer |
上記取得したSID + SERIAL# で以下SQLを使ってより詳しい状況も把握できます