col event form a30
col sql_text form a40
select
b.sid
,a.event
,a.WAIT_TIME
,round(d.read_value/1024/1024/1024,2) read_gb
,round(d.write_value/1024/1024/1024,2) write_gb
,round(d.undo_value/1024/1024/1024,2) undo_gb
,e.current_undo
,c.SQL_TEXT
from v$session_wait a
join v$session b on a.sid = b.sid
join v$sqlarea c on b.SQL_ID = c.SQL_ID
join (select * from (select s.sid, t.name, s.value from v$sesstat s inner join v$statname t on s.statistic#=t.statistic#)
pivot (sum(value) as value for name in (
'undo change vector size' UNDO
,'physical read total bytes' READ
,'physical write total bytes' WRITE
))) d on a.sid=d.sid
join (select b.sid, sum(a.USED_UBLK) current_undo from V$TRANSACTION a join v$session b on a.SES_ADDR=b.saddr group by b.sid) e on e.sid=a.sid
where upper(c.sql_text) like 'ALTER TABLE%SHRINK SPACE%'
and b.sid != (select sys_context('USERENV','SID') from dual)
;
col sql_text form a40
select
b.sid
,a.event
,a.WAIT_TIME
,round(d.read_value/1024/1024/1024,2) read_gb
,round(d.write_value/1024/1024/1024,2) write_gb
,round(d.undo_value/1024/1024/1024,2) undo_gb
,e.current_undo
,c.SQL_TEXT
from v$session_wait a
join v$session b on a.sid = b.sid
join v$sqlarea c on b.SQL_ID = c.SQL_ID
join (select * from (select s.sid, t.name, s.value from v$sesstat s inner join v$statname t on s.statistic#=t.statistic#)
pivot (sum(value) as value for name in (
'undo change vector size' UNDO
,'physical read total bytes' READ
,'physical write total bytes' WRITE
))) d on a.sid=d.sid
join (select b.sid, sum(a.USED_UBLK) current_undo from V$TRANSACTION a join v$session b on a.SES_ADDR=b.saddr group by b.sid) e on e.sid=a.sid
where upper(c.sql_text) like 'ALTER TABLE%SHRINK SPACE%'
and b.sid != (select sys_context('USERENV','SID') from dual)
;