3bd hdba: 0x010003b2
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 83(0x53) flag: 0x2c
lock: 0 ckix: 1
ncol: 2 nnew: 1
size: 1
col 1: [ 7] 44 48 54 45 53 54 31
SQL>
SELECT utl_raw.cast_to_varchar2(replace('44 48 54 45 53 54 31',' '))
value
FROM dual;
VALUE
-------------------------------------------
DHTEST1 (6)提交事务,由于内存已经刷新,因此数据块上的事务不应该被清除,dump数据块查看,与我们期望的一致(事务未被清除)
SQL>
commit;
Commit complete.
DUMP block trace 文件:
Block header dump: 0x010003bd
Object id
on Block? Y
seg/obj: 0x11ed7 csc: 0x00.fbdc3 itc: 3 flg: E typ: 1 -
DATA
brn: 1 bdba: 0x10003b0 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0xffff.000.00000000 0x00000000.0000.00
C--- 0 scn 0x0000.000fbdc3
0x02 0x0016.013.00000002 0x018000b4.0000.1b ---- 1 fsc 0x0001.00000000 --事务信息确实没有被清除!
0x03 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
bdba: 0x010003bd
DUMP undo header 文件:
TRN CTL:: seq: 0x0000 chd: 0x0014 ctl: 0x0013 inc: 0x00000000 nfb: 0x0003
mgc: 0xb000 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
uba: 0x018000b4.0000.1b scn: 0x0000.00000000
Version: 0x01
FREE BLOCK POOL::
uba: 0x018000b4.0000.1b ext: 0x0 spc: 0x1204
uba: 0x018000b3.0000.08 ext: 0x0 spc: 0x1c52
uba: 0x018000b2.0000.24 ext: 0x0 spc: 0x124e
uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
TRN TBL::
index
state cflags wrap# uel scn dba parent-xid nub stmt_num cmt
------------------------------------------------------------------------------------------------
...........省略一部分...............
0x11 9 0x00 0x0002 0x0012 0x0000.000fbe45 0x018000b4 0x0000.000.00000000 0x00000001 0x00000000 1399884492
0x12 9 0x00 0x0002 0x0013 0x0000.000fbe5e 0x018000b4 0x0000.000.00000000 0x00000001 0x00000000 1399884492
0x13 9 0x00 0x0002 0xffff 0x0000.000fc00b 0x018000b4 0x0000.000.00000000 0x00000001 0x00000000 1399885369
0x14 9 0x00 0x0001 0x0015 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 0
0x15 9 0x00 0x0001 0x0016 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 0
0x16 9 0x00 0x0001 0x0017 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 0
0x17 9 0x00 0x0001 0x0018 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 0
............后面省略..................... undo事务表上的state已经从10变为9,表示事务已经提交 (7)在session B中发起游标查询,查询rowid='AAAR7XAAEAAAAO9ABT'的这一行 varible v_cur1 refcursor begin open :v_cur1 for select * from dhtest2
where rowid='AAAR7XAAEAAAAO9ABT'; end; / PL/SQL procedure successfully completed. (8)在session C中发起大量事务,将回滚段信息覆盖,并且确保事务表也已经被覆盖多次!
SQL>
update dhtest1
set object_name='DDDDDDDDDDDD'
where rownum<99;
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL>
commit;
Commit complete.
SQL>
update dhtest1
set object_name='DDDDDDDDDDDD'
where rownum<99;
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
98
rows updated.
SQL> /
update dhtest1
set object_name='DDDDDDDDDDDD'
where rownum<99
*
ERROR
at line 1:
ORA-30036: unable
to
extend segment
by 8
in undo tablespace 'UNDO2'
SQL>
commit
2 ;
Comm |