append 与 Highwater 测试
2008-06-03 12:43:08 来源:WEB开发网高水位没有发生变化,仍然在第196块。而 append 一条数据后提交,高水位会再移动到第197块:
SQL> insert/*+ append */ into test_block select * from dba_objects where rownum = 1;
已创建 1 行。
SQL> commit;
提交完成。
SQL> alter system dump datafile 11 block 193;
系统已更改。
*** 2008-05-30 13:30:30.000
Start dump data blocks tsn: 11 file#: 11 minblk 193 maxblk 193
buffer tsn: 11 rdba: 0x02c000c1 (11/193)
scn: 0x0000.1bf4000f seq: 0x02 flg: 0x00 tail: 0x000f1002
frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 7
last map 0x00000000 #maps: 0 offset: 4128
Highwater:: 0x02c000c5 ext#: 0 blk#: 3 ext size: 7
#blocks in seg. hdr's freelists: 1
#blocks below: 3
mapblk 0x00000000 offset: 0
Disk Lock:: Locked by xid: 0x0001.001.000051ed
Map Header:: next 0x00000000 #extents: 1 obj#: 31997 flag: 0x40000000
Extent Map
-----------------------------------------------------------------
0x02c000c2 length: 7
nfl = 1, nfb = 1 typ = 1 nxf = 0 ccnt = 1
SEG LST:: flg: USED lhd: 0x02c000c2 ltl: 0x02c000c2
End dump data blocks tsn: 11 file#: 11 minblk 193 maxblk 193
看看此时表 test_block 的数据分布:
SQL> select dbms_rowid.rowid_block_number(rowid) block# from test_block;
BLOCK#
----------
194
194
194
194
194
194
194
194
194
194
194
195
196
已选择13行。
小结:
1. append 数据时,会从 Highwater 之后的数据块开始直接插入数据。
2. append 数据后,在提交之前不会升高 Highwater 的位置,提交后才升高 Highwater。
赞助商链接