oracle表空管理方式(LMT)、ASSM段管理方式、一级位图块、二级位图块、三级位图块。(十)

2014-11-24 09:14:16 · 作者: · 浏览: 3
,除了第一个extent的第8个块之外,其他extent的第一个block都有两个块包含元数据。且该父指针指向了第10个块第二位图块。

总结一下:

每个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