Below Query find out SQL has run for the longest time in your database.
from gv$sql s, gv$undostat u
Base on gv$transaction and gv$session find out most undo used in your database.
select s.sid, s.username, t.used_urec, t.used_ublk
from gv$session s, gv$transaction twhere s.saddr = t.ses_addr order by t.used_ublk desc;
Below query which session is currently using the most undo in your database.
select s.sid, t.name, s.value
from gv$sesstat s, gv$statname t
where s.statistic# = t.statistic#and t.name = 'undo change vector size' order by s.value desc;
When you run above query base on output your find out which SID for the session consuming the most undo.
If you want find out active transaction, you can user gv$transaction view.
select sql.sql_text sql_text, t.USED_UREC Records,
t.USED_UBLK Blocks, (t.USED_UBLK*8192/1024) KBytes
from gv$transaction t, gv$session s, gv$sql sqlwhere t.addr = s.taddr
and s.sql_id = sql.sql_id
and s.username ='&USERNAME'
Base on above query output, number of undo records used(USED_REC) and undo blocks consumed by a transaction (USED_UBLK).
Above query is based on RAC Database. If you database is not in RAC, please user V$ views.