WEB开发网
开发学院数据库Oracle append 与 Highwater 测试 阅读

append 与 Highwater 测试

 2008-06-03 12:43:08 来源:WEB开发网   
核心提示: 使用直接路径插入时,会将数据插入到高水位以上的数据块中,append 与 Highwater 测试(6),不会扫描 freelist 中的空闲块,此时我再正常插入一条数据呢?应该插入到 194 块,再回滚呢?高水位会发生什么样的变化?SQL> insert/*+ append */

使用直接路径插入时,会将数据插入到高水位以上的数据块中,不会扫描 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

上一页  1 2 3 4 5 6 7  下一页

Tags:append Highwater

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接