Chinaunix首页 | 论坛 | 博客
  • 博客访问: 582559
  • 博文数量: 57
  • 博客积分: 877
  • 博客等级: 准尉
  • 技术积分: 1275
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-24 16:16
文章分类

全部博文(57)

文章存档

2014年(2)

2013年(15)

2012年(20)

2011年(20)

我的朋友

分类: Oracle

2012-05-08 10:50:30

oracle 中,在创建一些对象(TYPE2 UNDOTABLE PARTITIONTABLEROLLBACKNESTEDTABLELOBSEGMENTLOBINDEXLOB PARTITIONINDEX PARTITIONINDEXCLUSTER oracle都会给他们分配一个段,但段要扩展空间的时候,就会在 header_file+header_block 中找到段头(L3 BMB),L3中找到L2,L1中找到可用块:

1:先创建表 test,并插入数据

点击(此处)折叠或打开

  1. SQL> create table test1(id1 number,id2 number);
  2. Table created

  3. SQL> insert into superman.test1 values(1,1);
  4. 1 row created.
  5. SQL> commit;
  6. Commit complete.

2:查询出test1的段头

点击(此处)折叠或打开

  1. SQL> select header_file,header_block,segment_name from dba_segments
  2.   2 where owner='SUPERMAN';

  3. HEADER_FILE HEADER_BLOCK SEGMENT_NAME
  4. ----------- ------------ ---------------------------------------------------------------------------------

  5.           7 131 BIN$uDHNh3dH+9XgQAB/AQAOkg==$0
  6.           6 130 PEOPLEINFO
  7.           6 29442 TAB1
  8.           6 29466 TEST1
  9.           7 17026 SFZ_INDEX
  10. SQL>

3:转储段头

点击(此处)折叠或打开

  1. SQL> alter system dump datafile 6 block 29466

截取了转储文件中的部分信息进行观察:

点击(此处)折叠或打开

  1. Extent Control Header
  2. -----------------------------------------------------------------
  3. Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 8
  4. last map 0x00000000 #maps: 0 offset: 2716
  5. Highwater:: 0x01807320 ext#: 0 blk#: 8 ext size: 8
  6. #blocks in seg. hdr's freelists: 0
  7. #blocks below: 5
  8. mapblk 0x00000000 offset: 0
  9. Unlocked
  10. --------------------------------------------------------
  11. Low HighWater Mark :
  12. Highwater:: 0x01807320 ext#: 0 blk#: 8 ext size: 8
  13. #blocks in seg. hdr's freelists: 0
  14. #blocks below: 5
  15. mapblk 0x00000000 offset: 0
  16. Level 1 BMB for High HWM block: 0x01807318
  17. Level 1 BMB for Low HWM block: 0x01807318
  18. --------------------------------------------------------
  19. Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
  20. L2 Array start offset: 0x00001434
  21. First Level 3 BMB: 0x00000000
  22. L2 Hint for inserts: 0x01807319
  23. Last Level 1 BMB: 0x01807318
  24. Last Level II BMB: 0x01807319
  25. Last Level III BMB: 0x00000000
  26. Map Header:: next 0x00000000 #extents: 1 obj#: 73518 flag: 0x10000000
  27. Inc # 0
  28. Extent Map
  29. -----------------------------------------------------------------
  30. 0x01807318 length: 8
  31. Auxillary Map
  32. --------------------------------------------------------
  33. Extent 0 : L1 dba: 0x01807318 Data dba: 0x0180731b
  34. --------------------------------------------------------
  35. Second Level Bitmap block DBAs
  36. --------------------------------------------------------
  37. DBA 1: 0x01807319
  38. End dump data blocks tsn: 6 file#: 6 minblk 29466 maxblk 29466

从上面的转储信息中就可以看到二级 bmb 0x01807319file 6 block 29465)一级 bmb  0x01807318file 6 block 29464

4:现在转出 二级 bmb,并截取部分信息进行观察

点击(此处)折叠或打开

  1. Dump of Second Level Bitmap Block
  2. number: 1 nfree: 1 ffree: 0 pdba: 0x0180731a
  3. Inc #: 0 Objd: 73518
  4. opcode:0
  5. xid:
  6. L1 Ranges :
  7. --------------------------------------------------------
  8. 0x01807318 Free: 5 Inst: 1
  9. --------------------------------------------------------
  10. End dump data blocks tsn: 6 file#: 6 minblk 29465 maxblk 29465

5:从二级bmb 中可以看出 指向一级bmb 块地址0x01807318file 6 block 29464

再转储一级bmb


 

点击(此处)折叠或打开

  1. Dump of First Level Bitmap Block
  2. --------------------------------
  3. nbits : 4 nranges: 1 parent dba: 0x01807319 poffset: 0
  4. unformatted: 0 total: 8 first useful block: 3
  5. owning instance : 1
  6. instance ownership changed at 02/07/2012 11:48:49
  7. Last successful Search 02/07/2012 11:48:49
  8. Freeness Status: nf1 0 nf2 0 nf3 0 nf4 5
  9. Extent Map Block Offset: 4294967295
  10. First free datablock : 3
  11. Bitmap block lock opcode 0
  12. Locker xid: : 0x0000.000.00000000
  13. Inc #: 0 Objd: 73518
  14. HWM Flag: HWM Set
  15. Highwater:: 0x01807320 ext#: 0 blk#: 8 ext size: 8
  16. #blocks in seg. hdr's freelists: 0
  17. #blocks below: 5
  18. mapblk 0x00000000 offset: 0
  19. --------------------------------------------------------
  20. DBA Ranges :
  21. --------------------------------------------------------
  22. 0x01807318 Length: 8 Offset: 0
  23. 0:Metadata 1:Metadata 2:Metadata 3:75-100% free
  24. 4:75-100% free 5:75-100% free 6:75-100% free 7:75-100% free
  25. --------------------------------------------------------

这里我们可以看到一些信息了,这里我们可以把0x01807318 看做是起始地址,0:Metadata   1:Metadata   2:Metadata   3:75-100% free  4:75-100% free   5:75-100% free   6:75-100% free   7:75-100% free,前面的一些数字可以看做是偏移量,这里可以得出这段包含了  0x01807318- 0x0180731f 8个块,其中0x01807318- 0x0180731a 3个块是存放元数据的,既段的3个BMB,另外5个块都是可以用来存放表中的数据的!


 




 

阅读(2737) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~