总结一下:
每个extent除了第一个exten之外其他的每个extent的第一个块和第二个块都属于第一位图块,父指针都指向第二位图块(10block),且每个extent的第一个块和第二个块都作为第一位图块管理其他剩余的块。对于第一个extent来说,第一位图块为8到9,第二位图块为10,如果第二位图块不能满足需求则到第三位图块也就是11块。
简要图片如下:

在来看一下表空间管理方式的lmt。
SQL> conn sys/root as sysdba
Connected.
SQL> set linesize 200
SQL> col name for a30
SQL> col value for a70
SQL> alter system dump datafile 5 block 3;
System altered.
SQL> select * from v$diag_info;
INST_ID NAME VALUE
---------- ------------------------------ ----------------------------------------------------------------------
1 Diag Enabled TRUE
1 ADR Base /opt/app/oracle
1 ADR Home /opt/app/oracle/diag/rdbms/rhys/RHYS
1 Diag Trace /opt/app/oracle/diag/rdbms/rhys/RHYS/trace
1 Diag Alert /opt/app/oracle/diag/rdbms/rhys/RHYS/alert
1 Diag Incident /opt/app/oracle/diag/rdbms/rhys/RHYS/incident
1 Diag Cdump /opt/app/oracle/diag/rdbms/rhys/RHYS/cdump
1 Health Monitor /opt/app/oracle/diag/rdbms/rhys/RHYS/hm
1 Default Trace File /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_ora_4079.trc
1 Active Problem Count 0
1 Active Incident Count 0
11 rows selected.
SQL>
Block dump from disk:
buffer tsn: 6 rdba: 0x01400003 (5/3)
scn: 0x0000.00160e8c seq: 0x01 flg: 0x04 tail: 0x0e8c1e01
frmt: 0x02 chkval: 0xb146 type: 0x1e=KTFB Bitmapped File Space Bitmap
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F0928BD0A00 to 0x00007F0928BD2A00
7F0928BD0A00 0000A21E 01400003 00160E8C 04010000 [......@.........]
7F0928BD0A10 0000B146 00000005 00000008 00000000 [F...............]
7F0928BD0A20 00000011 0000F7EF 00000000 00000000 [................]
7F0928BD0A30 00000000 00000000 0001FFFF 00000000 [................]
7F0928BD0A40 00000000 00000000 00000000 00000000 [................]
Repeat 506 times
7F0928BD29F0 00000000 00000000 00000000 0E8C1E01 [................]
File Space Bitmap Block:
BitMap Control:
RelFno: 5, BeginBlock: 8, Flag: 0, First: 17, Free: 63471
FFFF010000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
对于oracle 每组数据信息,组和组直接从左往右读,组内从右边往左读。那么FFFF010000000000转换为2进制为111111111111111100000001,在此准换为:10000000 11111111 11111111,1代表extent为used,0代表为free,可以看到正好是17个extent。和如下查询一直。
SQL> select owner,segment_name,segment_type,file_id,extent_id,block_id,BLOCKS from dba_extents where segment_name='T';
OWNER SEGMENT_NAME SEGMENT_TYPE FILE_ID EXTENT_ID BLOCK_ID BLOCKS
------------------------------ ---------------------------------------- ------------------ ---------- ---------- ---------- ----------
AMY T TABLE 5 0 8 20
AMY T TABLE 5 1 28 20
AMY T TABLE 5 2 48 20
AMY T TABLE 5 3 68 20
AMY T TABLE 5 4 88 20
AMY T TABLE 5 5 108 20
AMY T TABLE 5 6 128 20
AMY T TABLE 5 7 148 20
AMY T TABLE 5 8 168 20
AMY T TABLE 5 9 188 20
AMY T TABLE 5 10 208 20
OWNER SEGMENT_NAME SEGMENT_TYPE FILE_ID EXTENT_ID BLOCK_ID BLOCKS
------------------------------ ---------------------------------------- ------------------ ---------- ---------- ---------- ----------
AMY T TABLE 5 11 228 20
AMY T TABLE 5 12 248 20
AMY T TABLE 5 13 268 20
AMY T TABLE 5 14 288 20
AMY T TABLE 5 15 308 20
AMY T TABLE 5 16 328 20
17 rows selected.
这就是lmt管理方式。
总结一下: 对于表空间分配是以extent为最小单位,使用3-7位图块进行管理,对于表空间最小i/0单位是block,采用assm位图管理方式。
that's all