ITPub博客

首页 > 数据库 > Oracle > UNDO信息收集

UNDO信息收集

原创 Oracle 作者:dbs101 时间:2012-01-03 00:02:58 0 删除 编辑

UNDO信息收集

UNDO数据是用来维护事物操作的记录。记录修改前的数据映像。

用途:

回滚活动的事务
恢复中断的事务
提供一致读
执行逻辑闪回操作

UNDO数据保存在块中,和数据块一样,会产生redo日志。

和数据块一样,UNDO有表空间,段(SEGMENT),区域(EXTENT),块(BLOCK)

Undo段头包含:
空闲的undo区域(EXTENTS)池
UNDO槽号(SLOT)集合

Version: 0x01
  FREE BLOCK POOL::
    uba: 0x00000000.20c0.11 ext: 0x2  spc: 0x1848 
    uba: 0x00000000.20c0.02 ext: 0x2  spc: 0x1ef6 
    uba: 0x00000000.20be.26 ext: 0x0  spc: 0xa2a  
    uba: 0x00000000.1f16.02 ext: 0x4  spc: 0x1f1e 
    uba: 0x00000000.1f16.0b ext: 0x4  spc: 0x1b0c 
  TRN TBL::
 
  index  state cflags  wrap#    uel         scn            dba            parent-xid    nub     stmt_num    cmt
  ------------------------------------------------------------------------------------------------
   0x00    9    0x00  0x9ea1  0x0003  0x0418.14952377  0x46800318  0x0000.000.00000000  0x00000001   0x00000000  1312888300
......
   0x0c   10    0x80  0x9e77  0x0002  0x0418.14952662  0x46800319  0x0000.000.00000000  0x00000001   0x00000000  0
......

每个槽号(SLOT)分配给一个事务
每个槽号(SLOT)包含UNDO区域(EXTENTS)的列表
区域(EXTENTS)可以从一个UNDO段移植到另一个段
UNDO槽号(SLOT)可以循环使用,并尽量长地保留在段头中,减少出现ORA-01555的机会。

TRANSACTION ID

可以从data block中获取transaction id

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0035.01a.0000a9e6  0x468000ed.2fb1.26  C---    0  scn 0x0418.14952662
0x02   0x0033.00c.00009e77  0x46800319.20c0.12  ----    1  fsc 0x0000.00000000

如果事务是活动的,那么可以从视图v$transaction中获取transaction id

XIDUSN 段号
XIDSLOT 槽号(SLOT)
XIDSQN 序列号(INDEX)

Undo区域(EXTENTS):
包含连续的undo block集合

多个事务可以同时写同样的段和区域(EXTENT)。
当前的区域满,第一个事务检查下一个区域(EXTENT)。如果下一个区域(EXTENT)没有包含活动事务的数据,
那么下一个区域(EXTENT)就成为当前的区域。如果下一个区域(EXTENT)包含活动事务的数据,数据库尝试
分配一个新的区域(EXTENT)。

UNDO块(block)
一个UNDO块只能分配给一个事务
UNDO块包含块头,UNDO记录

UNDO块头包含:
事务ID(XID):当前或上一个使用这个块的事务
UNDO块的序列号
UNDO块中的记录数,当前事务不需要这个。
uba: 0x46800319.20c0.10 ctl max scn: 0x0418.149521cd prv tx scn: 0x0418.149521f0
txn start scn: scn: 0x0418.149523e8 logon user: 569
 prev brb: 1182794519 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x03  ver: 0x01 
op: Z
Array Update of 1 rows:
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 0
ncol: 1 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x012afa9c  hdba: 0x012afa9b
itli: 2  ispac: 0  maxfr: 4858
vect = 0
col  0: [ 2]  c1 03

UNDO记录串联在一起,这样允许事务被回滚

UNDO记录可以被循环利用,并尽量久地保持在块中,减少ORA-01555的错误

UBA-UNDO字节地址,指UNDO记录的地址。包含UNDO块的DBA,UNDO块的序列号,UNDO块中的记录

0x468000ed.2fb1.26

在视图中V$TRANSACTION也可以看到
UBAFIL, UBABLK - 文件和块号
UBASQN - 序列号
UBAREC - 记录号

UNDO的初始化参数

UNDO_RETENTION:在覆盖undo信息前,Oracle数据库尝试保留undo信息的最小时间。在undo
retetion之前的旧undo信息被成为expired,并且空间可以被新事务覆盖。在undo retention
之后的undo信息被成为unexpired,并被保留来提供一致读和闪回操作。

UNDO_RETENTION可以参考v$undostat.maxquerylen

UNDO表空间的大小:

undo的大小 = 最大的v$undostat.undoblks*undo_retention*block_size

然后再增加20%

系统的事务数在auto管理时由rollback segment header block上的事务表( TRN TBL)所决定的,34个。
alter system dump undo header '_SYSSMU11_2654867243$';
  TRN TBL::
 
  index  state cflags  wrap#    uel         scn            dba            parent-xid    nub     stmt_num    cmt
  ------------------------------------------------------------------------------------------------
   0x00    9    0x00  0x000d  0x000c  0x0000.0017b290  0x014001ef  0x0000.000.00000000  0x00000010   0x00000000  1326013252
   0x01    9    0x00  0x000d  0x0021  0x0000.0017b1b5  0x01400083  0x0000.000.00000000  0x00000001   0x00000000  1326013200
   0x02    9    0x00  0x000d  0x0003  0x0000.0017b26a  0x01400089  0x0000.000.00000000  0x00000001   0x00000000  1326013252
   0x03    9    0x00  0x000d  0x0004  0x0000.0017b26e  0x0140008c  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x04    9    0x00  0x000d  0x0005  0x0000.0017b275  0x014001e1  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x05    9    0x00  0x000d  0x001b  0x0000.0017b279  0x014001e4  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x06    9    0x00  0x000d  0x000a  0x0000.0017b284  0x014001ec  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x07    9    0x00  0x000d  0x0014  0x0000.0017b3cc  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x08    9    0x00  0x000d  0x000b  0x0000.0017b28c  0x014002a1  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x09    9    0x00  0x000c  0x000e  0x0000.0017b31c  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x0a    9    0x00  0x000d  0x0008  0x0000.0017b288  0x014001ee  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x0b    9    0x00  0x000d  0x0000  0x0000.0017b28f  0x014002a3  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x0c    9    0x00  0x000d  0x000d  0x0000.0017b294  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013252
   0x0d    9    0x00  0x000d  0x0009  0x0000.0017b314  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x0e    9    0x00  0x000d  0x000f  0x0000.0017b338  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x0f    9    0x00  0x000d  0x0011  0x0000.0017b359  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x10    9    0x00  0x000d  0x0007  0x0000.0017b3bb  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x11    9    0x00  0x000d  0x0012  0x0000.0017b36f  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x12    9    0x00  0x000d  0x0013  0x0000.0017b382  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x13    9    0x00  0x000d  0x0010  0x0000.0017b38c  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x14    9    0x00  0x000d  0x0015  0x0000.0017b3df  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x15    9    0x00  0x000d  0x0016  0x0000.0017b404  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x16    9    0x00  0x000d  0x0017  0x0000.0017b427  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x17    9    0x00  0x000d  0x0018  0x0000.0017b440  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x18    9    0x00  0x000d  0x0019  0x0000.0017b44f  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x19    9    0x00  0x000d  0x001a  0x0000.0017b45d  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x1a    9    0x00  0x000d  0x001c  0x0000.0017b468  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x1b    9    0x00  0x000c  0x0006  0x0000.0017b280  0x014001e9  0x0000.000.00000000  0x00000003   0x00000000  1326013252
   0x1c    9    0x00  0x000d  0x001d  0x0000.0017b485  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x1d    9    0x00  0x000d  0x001e  0x0000.0017b4a7  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x1e    9    0x00  0x000d  0x001f  0x0000.0017b4c7  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x1f    9    0x00  0x000d  0xffff  0x0000.0017b4dc  0x014002a3  0x0000.000.00000000  0x00000001   0x00000000  1326013549
   0x20    9    0x00  0x000c  0x0001  0x0000.0017b123  0x01400083  0x0000.000.00000000  0x00000001   0x00000000  1326012800
   0x21    9    0x00  0x000c  0x0002  0x0000.0017b1f8  0x01400083  0x0000.000.00000000  0x00000001   0x00000000  1326013246
  EXT TRN CTL::

而系统的事务数是由session来决定的。session*1.1=transactions

SQL> show parameter sessions

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
sessions                             integer     248
shared_server_sessions               integer
SQL> show parameter tran

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
redo_transport_user                  string
star_transformation_enabled          string      FALSE
transactions                         integer     272
transactions_per_rollback_segment    integer     5
SQL> select 248*1.1 from dual;

   248*1.1
----------
     272.8


UNDO相关视图信息:

v$undostat

undoblks - 在一段时间内产生的undo blocks。
unxpstealcnt - unexpired blocks的数目;其他的事务因为没有足够的空间开始使用这些块。
maxquerylen - 最长的运行事务
nospacerrcnt - 记录当数据库开始写undo事务块的时候,空间不可用的错误的次数

SQL> select * from v$rollname;

       USN NAME
---------- ------------------------------
         0 SYSTEM
        11 _SYSSMU11_2654867243$
        12 _SYSSMU12_1424393968$
        13 _SYSSMU13_836041116$
        14 _SYSSMU14_3753167083$
        15 _SYSSMU15_829884116$
        16 _SYSSMU16_3434936924$
        17 _SYSSMU17_760283974$
        18 _SYSSMU18_593553207$
        19 _SYSSMU19_3576614825$
        20 _SYSSMU20_3805373609$

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11         15     974848        464     974848          0
        12          4     253952        300     253952          0
        13          5     319488        524     319488          0
        14          3     188416        626     188416          0
        15         18    2154496        386    2154496          0
        16          4     253952        610     253952          0
        17        359   43180032       1708   43180032          0
        18          8     516096        390     516096          0
        19         15     974848        306     974848          0
        20          7     450560        714     450560          0

连续执行下列语句,直至耗尽所有的undo表空间
insert into test select * from test;
select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;
select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
from v$transaction t, v$session s
where t.addr = s.taddr
;


SQL> insert into test select * from test;

已创建 72202 行。

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11         15     974848     267942     974848          0
        12          4     253952        454     253952          0
        13          5     319488        994     319488          0
        14          3     188416        626     188416          0
        15         18    2154496        804    2154496          0
        16          4     253952        908     253952          0
        17        359   43180032       1918   43180032          0
        18          8     516096        390     516096          0
        19         15     974848     268194     974848          0
        20          7     450560        714     450560          0

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5       6346         25         20         34       1904 ACTIVE          125 2012-01-08 16:19:39
        11          9         10          5        590         33         27         34       1901 ACTIVE          127 2012-01-08 16:19:32

SQL> insert into test select * from test;

已创建 144404 行。

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11         15     974848     267942     974848          0
        12          4     253952        454     253952          0
        13          5     319488        994     319488          0
        14          3     188416        626     188416          0
        15         18    2154496        804    2154496          0
        16          4     253952        908     253952          0
        17        359   43180032       1918   43180032          0
        18          8     516096        390     516096          0
        19         15     974848     803052     974848          0
        20          7     450560        714     450560          0

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5        420         33         32        100       5707 ACTIVE          125 2012-01-08 16:19:39

SQL> insert into test select * from test;

已创建 288808 行。

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11         15     974848     267942     974848          0
        12          4     253952        454     253952          0
        13          5     319488        994     319488          0
        14          3     188416        626     188416          0
        15         18    2154496        804    2154496          0
        16          4     253952        908     253952          0
        17        359   43180032       1918   43180032          0
        18          8     516096        390     516096          0
        19         17    2088960    1873168    2088960          0
        20          7     450560        714     450560          0

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5       1137         36         12        233      13321 ACTIVE          125 2012-01-08 16:19:39

SQL> insert into test select * from test;

已创建 577616 行。

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11         15     974848     267942     974848          0
        12          2     122880        536     253952          1
        13          3     188416       1076     319488          1
        14          2     122880        708     188416          1
        15          8    1499136        886    2154496          1
        16          2     122880        990     253952          1
        17        349   42524672       2000   43180032          1
        18          8     516096        390     516096          0
        19         49    4186112    4013138    4186112          0
        20          7     450560        714     450560          0

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5        946         68         15        498      28546 ACTIVE          125 2012-01-08 16:19:39

SQL> insert into test select * from test;

已创建 1155232 行。

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11          5     319488     268024     974848          1
        12          2     122880        536     253952          1
        13          3     188416       1076     319488          1
        14          2     122880        708     188416          1
        15          3    1171456        968    2154496          2
        16          2     122880        990     253952          1
        17        329   40230912       2164   43180032          3
        18          3     188416        472     516096          1
        19        100    8511488    8293238    8511488          0
        20          4     253952        796     450560          1

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5       1420        119         12       1028      59000 ACTIVE          125 2012-01-08 16:19:39

SQL> insert into test select * from test;

已创建 2310464 行。

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11          6     385024     269336     974848          1
        12          2     122880       2256     253952          1
        13          3     188416       3588     319488          1
        14          2     122880       1908     188416          1
        15          3    1171456       1784    2154496          2
        16          2     122880       3366     253952          1
        17        259   30728192       3530   43180032         10
        18          3     188416       1864     516096          1
        19        161   17424384   16853176   17424384          0
        20          4     253952       2572     450560          1

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5       2647        181         58       2087     119905 ACTIVE          125 2012-01-08 16:19:39

SQL> insert into test select * from test;

已创建 4620928 行。

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11          7     450560     270672     974848          5
        12          3     188416       4514     253952          1
        13          4     253952       9896     319488          3
        14          2     122880       4884     188416          1
        15          4    1236992       3748    2154496          4
        16          3     188416      10494     253952          1
        17        119   13688832       6126   43180032         24
        18          3     188416       4456     516096          1
        19        302   34529280   33973212   34529280          0
        20          4     253952       5604     450560          1

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5       4511        321         12       4207     241719 ACTIVE          125 2012-01-08 16:19:39

SQL> insert into test select * from test;
insert into test select * from test
*
第 1 行出现错误:
ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS2' 中)


SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11          2     122880     271246     974848         12
        12          2     122880       4984     253952          4
        13          2     122880      10378     319488          7
        14          2     122880       6222     188416          2
        15          2     122880       4412    2154496          7
        16          2     122880      11696     253952          2
        17          2     122880       7602   43180032         38
        18          2     122880       4756     516096          3
        19        436   50192384   49456626   50192384          1
        20          2     122880       6558     450560          2

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        19         32         13          5       4511        321         12       4207     241719 ACTIVE          125 2012-01-08 16:19:39

SQL>

所有的空间都被集中在19回滚段,其他的回滚段只有基本的2个extents。

在自动管理的undo表空间中,set transaction use rollback segment是不起效的。

set transaction use rollback segment "_SYSSMU11_2654867243$";

SQL> select usn,extents,rssize,writes,hwmsize,shrinks from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES    HWMSIZE    SHRINKS
---------- ---------- ---------- ---------- ---------- ----------
         0          6     385024       5368     385024          0
        11          2     122880     278782     974848         12
        12          2     122880       8034     253952          4
        13          2     122880      58396     319488          7
        14          2     122880      15242     188416          2
        15          2     122880       5806    2154496          7
        16          2     122880      99134     253952          2
        17          5     319488     282314   43180032         38
        18          2     122880       6628     516096          3
        19        423   49340416   49456954   50192384          5
        20          5     319488     280048     450560          2

已选择11行。

SQL> select XIDUSN,XIDSLOT,XIDSQN,UBAFIL,UBABLK,UBASQN,UBAREC,USED_UBLK,USED_UREC,t.STATUS,
  2  s.sid,to_char(s.LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')
  3  from v$transaction t, v$session s
  4  where t.addr = s.taddr
  5  ;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC  USED_UBLK  USED_UREC STATUS                  SID TO_CHAR(S.LOGON_TIM
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- -------------------
        20          5         15          5        380         17         53         34       1901 ACTIVE          127 2012-01-08 16:39:54

新事务使用的自动分配的段20。


参考:
Biti回滚段探究.pdf
http://www.hellodb.net/2009/04/undo.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25105315/viewspace-714361/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 统计信息恢复
请登录后发表评论 登录
全部评论

注册时间:2010-12-18

  • 博文量
    92
  • 访问量
    428023