Fala amigo…
Tenta este aqui…
Criei ele ontem.. pois estava precisando…
SELECT r.name "RB NAME", p.pid "ORACLE PID", p.spid "SYSTEM PID ",
NVL (p.username, 'NO TRANSACTION') "OS USER", s.UserName, s.Status,
S.MACHINE,D.SEGMENT_NAME, D.BYTES/1024/1024 "MB" , D.BLOCKS, D.EXTENTS,
D.TABLESPACE_NAME
FROM v$lock l,
v$process p,
v$rollname r,
v$session s,
dba_segments D
WHERE l.sid = s.sid(+)
AND s.paddr = p.addr
AND TRUNC (l.id1(+)/65536) = r.usn
AND l.type(+) = 'TX'
AND l.lmode(+) = 6
AND R.NAME = D.segment_name
AND D.SEGMENT_TYPE in ('ROLLBACK','TYPE2 UNDO')
ORDER BY r.NAME
E este aqui ajuda tbm.. Vc verifica qual o tamanho dos dados EXPIRADOS e dos dados NÃO EXPIRADOS no UNDO…
select 'EXPIRADO -> ' ||sum(bytes)/1024/1024 SITUACAO from dba_undo_extents
where status = 'EXPIRED'
UNION
select 'NÃO EXPIRADO -> ' ||sum(bytes)/1024/1024 SITUACAO from dba_undo_extents
where status = 'UNEXPIRED'
Abraços…