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