append 与 Highwater 测试
2008-06-03 12:43:08 来源:WEB开发网使用直接路径插入时,会将数据插入到高水位以上的数据块中,不会扫描 freelist 中的空闲块。此时我再正常插入一条数据呢?应该插入到 194 块,因为此时 194 块还没有装满。测试一下:
SQL> insert into test_block select * from dba_objects where rownum = 1;
已创建 1 行。
SQL> select dbms_rowid.rowid_block_number(rowid) block# from test_block;
BLOCK#
----------
194
194
194
194
194
194
194
194
194
194
194
194
195
已选择13行。
SQL> rollback;
回退已完成。
如果直接路径插入后,再回滚呢?高水位会发生什么样的变化?
SQL> insert/*+ append */ into test_block select * from dba_objects where rownum = 1;
已创建 1 行。
SQL> rollback;
回退已完成。
SQL> alter system dump datafile 11 block 193;
系统已更改。
*** 2008-05-30 13:21:06.000
Start dump data blocks tsn: 11 file#: 11 minblk 193 maxblk 193
buffer tsn: 11 rdba: 0x02c000c1 (11/193)
scn: 0x0000.1bf3c7bf seq: 0x01 flg: 0x04 tail: 0xc7bf1001
frmt: 0x02 chkval: 0x233e 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:: 0x02c000c4 ext#: 0 blk#: 2 ext size: 7
#blocks in seg. hdr's freelists: 1
#blocks below: 2
mapblk 0x00000000 offset: 0
Unlocked
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
赞助商链接