SELECT
s.inst_id,
s.sid,
s.serial#,
s.username,
s.osuser,
s.machine,
s.program,
-- Transaction
t.xidusn,
t.used_ublk,
ROUND(t.used_ublk * p.value / 1024 / 1024, 2) AS undo_mb,
-- Session durumu
s.status,
s.state,
s.event,
s.seconds_in_wait,
s.last_call_et,
-- SQL bilgisi
s.sql_id,
q.sql_text,
-- Object bilgisi (tahmini)
o.owner,
o.object_name,
o.object_type,
CASE
WHEN s.event LIKE 'undo%' OR s.event LIKE '%rollback%'
THEN 'ROLLBACK'
ELSE 'ACTIVE'
END AS transaction_state
FROM gv$session s
JOIN gv$transaction t
ON s.saddr = t.ses_addr
AND s.inst_id = t.inst_id
LEFT JOIN gv$sql q
ON s.sql_id = q.sql_id
AND s.inst_id = q.inst_id
LEFT JOIN dba_objects o
ON q.sql_text LIKE '%' || o.object_name || '%'
JOIN gv$parameter p
ON p.name = 'db_block_size'
AND p.inst_id = s.inst_id
ORDER BY t.used_ublk DESC;
Bir yanıt yazın