Here is how to track a transaction’s progress:
select t.used_urec, --> if increasing, then the transaction is moving forward, otherwise is rolling back
t.start_time,
sysdate - to_date(t.start_time,'dd/mm/yy hh24:mi:ss') date_diff,
s.sid,s.serial#,
s.username,
s.status,
s.schemaname,
s.osuser,
s.process,
s.machine,
s.terminal,
s.program,
s.module,
to_char(s.logon_time,'DD/MON/YY HH24:MI:SS') logon_time
from v$transaction t, v$session s
where s.saddr = t.ses_addr
and sid=26
order by start_time;