下面这个脚本是显示哪些活动事务占用undo空间
set lines 200
set pages 999
clear col
set termout off
set trimout on
set trimspool on
REM
REM Current transactions
REM
REM Will show only last transaction by a user
REM
REM May need to use 786472.1 for better picture
REM of activity
connect / as sysdba
alter session set nls_date_format='dd-Mon-yyyy hh24:mi';
col username format a10 wrapped heading "User"
col name format a22 wrapped heading "Undo Segment Name"
col xidusn heading "Undo|Seg #"
col xidslot heading "Undo|Slot #"
col xidsqn heading "Undo|Seq #"
col ubafil heading "File #"
col ubablk heading "Block #"
col start_time format a10 word_wrapped heading "Started"
col status format a8 heading "Status"
col blk format 999,999,999 heading "KBytes"
col used_urec heading "Rows"
col username format a10
col OSUSER format a10
col MACHINE format a10
col SQL_ID format a10
col SQL_TEXT format a30
spool undoactivity.out
prompt
prompt ############## RUNTIME ##############
prompt
col rdate head "Run Time"
select sysdate rdate from dual;
prompt
prompt ############## Current Uncommitted Transactions ##############
prompt
select start_time, --事务起始时间
username, --用户名
s.MACHINE, --机器名称
s.OSUSER, --登录名
r.name, --回滚段名称
ubafil, --Undo block address (UBA) filenum
ubablk, --UBA block number
t.status, --回话状态
(used_ublk * p.value) / 1024 blk, --使用的回滚段空间
used_urec, --使用的undo 记录 ,
s1.SQL_ID, --sql_id
s1.SQL_TEXT --sql文本
from v$transaction t, v$rollname r, v$session s, v$parameter p,v$sql s1
where xidusn = usn
and s.saddr = t.ses_addr
and p.name = 'db_block_size'
and s.SADDR=s1.ADDRESS(+)
order by 1;
set termout on
set trimout off
set trimspool off
clear col