Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2796424
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2011-01-02 22:10:25

                              FLM来管理的EXTENT
         1,首先创建一个segment space management manual的tablespace,然后在这个表中创建一个表,如;
SQL> select tablespace_name,segment_space_management from dba_tablespaces;
TABLESPACE_NAME                SEGMEN
------------------------------ ------
SYSTEM                         MANUAL
UNDOTBS1                       MANUAL
SYSAUX                         AUTO
TEMP                           MANUAL
USERS                          AUTO
TEST1                          MANUAL
SQL> select tablespace_name,segment_name from dba_segments where owner='SYS' and segment_name='TEST2';
TABLESPACE_NAME                SEGMENT_NAME
------------------------------ ------------------------------
TEST1                          TEST2

2,接下来对这个SEGMENT的HEADER BLOCK进行DUMP;
SQL> select segment_name,header_file,header_block from dba_segments where segment_name='TEST2' and owner='SYS';
SEGMENT_NAME                   HEADER_FILE HEADER_BLOCK
------------------------------ ----------- ------------
TEST2                                    5            9
SQL> alter system dump datafile 5 block 9;
System altered.
3,接下来分析TRACE文件,
Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      spare2: 0      #extents: 3      #blocks: 23
                  last map  0x00000000  #maps: 0      offset: 4128
      Highwater::  0x0140001e  ext#: 2      blk#: 5      ext size: 8
  #blocks in seg. hdr's freelists: 5
  #blocks below: 20
  mapblk  0x00000000  offset: 2
                   Unlocked
     Map Header:: next  0x00000000  #extents: 3    obj#: 52310  flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
   0x0140000a  length: 7
   0x01400011  length: 8
   0x01400019  length: 8
  nfl = 1, nfb = 1 typ = 1 nxf = 0 ccnt = 9
  SEG LST:: flg: USED   lhd: 0x01400019 ltl: 0x0140001d
End dump data blocks tsn: 8 file#: 5 minblk 9 maxblk 9
倒数第二行和第三行的数据结构是FREE LIST AREA的部分
nfl = 1, nfb = 1 typ = 1 nxf = 0 ccnt = 9
  SEG LST:: flg: USED   lhd: 0x01400019 ltl: 0x0140001d
FLG表示是否使用了FLM的管理方式,LHD表示FREE LIST的第一块的DBA地址,LTL表示了FREE LIST最后一块的地址;Highwater::  0x0140001e表示了INSERT INTO操作的开始的数据块的DBA
对于每个数据块,都有一个FLC字段,用来表示该块已连链接到一个FREE LIST,FLC的NEXT DBA为0则表示该块为最FREE LIST的最后一块.当DL请求一个新的数据块用来进行UPDATE操作时,必须从FREE LIST头部开始进行查找,一直到找到足够的空间为止,随着表不断增大时,更新操作的查找空间需要的时间越来越长,从而影响性能.
阅读(2845) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-08 20:26:43

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com