日期:2014-05-16 浏览次数:20501 次
DBA在维护oracle的过程,和undo有关的常用脚本。在前面的一些文章也涉及了挺多的,在此简单总结一点。
1)怎样查询数据库当前某个session的事务所使用的回滚段大小?
sys@ORCL> select b.sid,b.username,a.xidusn,a.used_ublk
  2         from v$transaction a,v$session b
  3        where a.addr=b.taddr;
       SID USERNAME                           XIDUSN  USED_UBLK
---------- ------------------------------ ---------- ----------
       147 HR                                      9          1
       154 SCOTT                                   5          1
    2)查询哪个用户正在使用回滚段的资源?
select s.username,u.name 
  from v$transaction t,v$rollstat r,v$rollname u,v$session s
 where s.taddr=t.addr and
       t.xidusn=r.usn and
       r.usn=u.usn 
 order by s.username
USERNAME                       NAME
------------------------------ ------------------------------
HR                             _SYSSMU9$
SCOTT                          _SYSSMU5$
    3)显示undo表空间统计信息--v$undostat,自动管理引入的,每隔10分钟汇报一次
select to_char(begin_time,'hh24:mi:ss') begin_time,
       to_char(end_time,'hh24:mi:ss') end_time,
       undoblks,
       ssolderrcnt
  from v$undostat;
BEGIN_TI END_TIME   UNDOBLKS SSOLDERRCNT
-------- -------- ---------- -----------
12:02:41 12:04:33          0           0
11:52:41 12:02:41        109           0
11:42:41 11:52:41         35           0
11:32:41 11:42:41         52           0
11:22:41 11:32:41          2           0
    4)显示在线undo段的统计信息
select a.name,b.xacts,b.writes,b.extents from v$rollname a,v$rollstat b where a.usn=b.usn; NAME XACTS WRITES EXTENTS ------------------------------ ---------- ---------- ---------- SYSTEM 0 5080 6 _SYSSMU1$ 0 128452 4 _SYSSMU2$ 0 131562 4 _SYSSMU3$ 0 153310 4 _SYSSMU4$ 0 95228 4 _SYSSMU5$ 1 11954 9 _SYSSMU6$ 0 211674 10 _SYSSMU7$ 0 365956 7 _SYSSMU8$ 0 68614 17 _SYSSMU9$ 1 30516 5 _SYSSMU10$ 0 219062 17