我们知道表空间的segment space管理方式有 FLM 和ASSM两种:
1. Free List Managed (FLM)
2. Automatic Segment Space Managed(ASSM)
1 2 3 4 5 6 7 8 9 10 | SQL> select tablespace_name,EXTENT_MANAGEMENT,SEGMENT_SPACE_MANAGEMENT from dba_tablespaces; TABLESPACE_NAME EXTENT_MAN SEGMEN ------------------------------ ---------- ------ SYSTEM LOCAL MANUAL SYSAUX LOCAL AUTO UNDOTBS1 LOCAL MANUAL TEMP LOCAL MANUAL USERS LOCAL AUTO DBASKY LOCAL AUTO |
通常情况下: FLM中的segment header 是第一个extent的第一个block。 而ASSM则不是这样,第一个extent的前几个block是L1,L2,L3位图块,而segment header是第一个L3 位图块。
1 2 3 4 5 6 7 8 9 10 11 12 13 | SQL> select owner,SEGMENT_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS,tablespace_name from dba_extents where segment_name in ('T1','T2'); OWNER SEGMENT_NAME EXTENT_ID FILE_ID BLOCK_ID BLOCKS TABLESPACE_NAME -------------------- -------------------- ---------- ---------- ---------- ---------- ------------------------------ C##DBASKY T2 0 1 100360 8 SYSTEM C##DBASKY T1 0 7 136 8 DBASKY SQL> select owner,segment_Name,HEADER_FILE,HEADER_BLOCK,BLOCKs,tablespace_name from dba_segments where segment_name in ('T1','T2'); OWNER SEGMENT_NAME HEADER_FILE HEADER_BLOCK BLOCKS TABLESPACE_NAME -------------------- -------------------- ----------- ------------ ---------- ------------------------------ C##DBASKY T2 1 100360 8 SYSTEM C##DBASKY T1 7 138 8 DBASKY |
通过转储segment header可以看出他们得不同。此处不多讨论FLM,对于ASSM,插入数据库时也是从段头到L2,从L2到L1,从L1到数据块。
Start dump data blocks tsn: 0 file#:1 minblk 98296 maxblk 98296
Block dump from cache:
Dump of buffer cache at level 4 for pdb=1 tsn=0 rdba=4292600
BH (0x863e8358) file#: 1 rdba: 0x00417ff8 (1/98296) class: 4 ba: 0x861d4000
set: 3 pool: 3 bsz: 8192 bsi: 0 sflg: 0 pwc: 0,0
dbwrid: 0 obj: 91889 objn: 91889 tsn: [1/0] afn: 1 hint: f
hash: [0x8c0872b8,0x8c0872b8] lru: [0x863e86c8,0x863e8088]
ckptq: [NULL] fileq: [NULL]
objq: [0x73987c08,0x73987c08] objaq: [0x73987bf8,0x73987bf8]
st: XCURRENT md: NULL fpin: ‘ktswh03: ktscts’ fscn: 0×0.1dc470 tch: 9
flags: block_written_once
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
Block dump from disk:
buffer tsn: 0 rdba: 0x00417ff8 (1/98296)
scn: 0×0.1dc475 seq: 0×01 flg: 0×04 tail: 0xc4751001
frmt: 0×02 chkval: 0xff60 type: 0×10=DATA SEGMENT HEADER – UNLIMITED ——segment header type
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F77F7061000 to 0x00007F77F7063000
7F77F7061000 0000A210 00417FF8 001DC475 04010000 [......A.u.......]
7F77F7061010 0000FF60 00000000 00000000 00000000 [`...............]
7F77F7061020 00000000 00000001 00000007 00001020 [............ ...]
7F77F7061030 00000000 00000002 00000007 00417FFB [..............A.]
7F77F7061040 00000000 00000000 00000000 00000002 [................]
7F77F7061050 00000000 00000000 00000000 00000001 [................]
7F77F7061060 00000000 000166F1 40000000 00417FF9 [.....f.....@..A.]
7F77F7061070 00000007 00000000 00000000 00000000 [................]
7F77F7061080 00000000 00000000 00000000 00000000 [................]
Repeat 250 times
7F77F7062030 00000000 00010000 00010001 00000000 [................]
7F77F7062040 00000000 00000000 00000000 00000000 [................]
Repeat 250 times
7F77F7062FF0 00000000 00000000 00000000 C4751001 [..............u.]
Extent Control Header
—————————————————————–
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 7
last map 0×00000000 #maps: 0 offset: 4128
Highwater:: 0x00417ffb ext#: 0 blk#: 2 ext size: 7
#blocks in seg. hdr’s freelists: 0
#blocks below: 2
mapblk 0×00000000 offset: 0
Unlocked
Map Header:: next 0×00000000 #extents: 1 obj#: 91889 flag: 0×40000000
Extent Map
—————————————————————–
0x00417ff9 length: 7
nfl = 1, nfb = 1 typ = 1 nxf = 0 ccnt = 0
SEG LST:: flg: UNUSED lhd: 0×00000000 ltl: 0×00000000
Start check mirror blocks: 0 file#:1 minblk 98296 maxblk 98296
ksfdrfms:Mirror Read file=+DATA/dbasky/system01.dbf fob=0x8ac0f100 bufp=0x7f77f7061000 blkno=98296 nbytes=8192
ksfdafReadMirror: Read success from mirror side=1 logical extent number=0 disk=DATA_0002 path=/dev/asm-diske
Mirror I/O done from ASM disk /dev/asm-diske
ksfdrnms:Mirror Read file=+DATA/dbasky/system01.dbf fob=0x8ac0f100 bufp=0x7f77f7063400 nbytes=8192
ksfdafReadMirror: Read success from mirror side=2 logical extent number=1 disk=DATA_0000 path=/dev/asm-diskc
ksfdrnms:Mirror Read file=+DATA/dbasky/system01.dbf fob=0x8ac0f100 bufp=0x7f77f7063400 nbytes=8192
End dump data blocks tsn: 0 file#: 1 minblk 98296 maxblk 98296
=========L3(段头)数据块DUMP。其中记录了L2的详细信息=========
Start dump data blocks tsn: 5 file#:7 minblk 282 maxblk 282
Block dump from cache:
Dump of buffer cache at level 4 for pdb=1 tsn=5 rdba=29360410
BH (0x85fdb518) file#: 7 rdba: 0x01c0011a (7/282) class: 4 ba: 0x85c8a000
set: 3 pool: 3 bsz: 8192 bsi: 0 sflg: 0 pwc: 0,0
dbwrid: 0 obj: 91890 objn: 91890 tsn: [1/5] afn: 7 hint: f
hash: [0x8c7f4ab8,0x8c7f4ab8] lru: [0x85fdb748,0x85fdb4c8]
ckptq: [NULL] fileq: [NULL]
objq: [0x85fdb4f0,0x73987528] objaq: [0x73987518,0x85fdb500]
st: XCURRENT md: NULL fpin: ‘ktswh03: ktscts’ fscn: 0×0.1dc4fc tch: 8
flags: block_written_once
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
Block dump from disk:
buffer tsn: 5 rdba: 0x01c0011a (7/282)
scn: 0×0.1dc502 seq: 0×01 flg: 0×04 tail: 0xc5022301
frmt: 0×02 chkval: 0xcd65 type: 0×23=PAGETABLE SEGMENT HEADER
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F77F7061000 to 0x00007F77F7063000
7F77F7061000 0000A223 01C0011A 001DC502 04010000 [#...............]
7F77F7061010 0000CD65 00000000 00000000 00000000 [e...............]
7F77F7061020 00000000 00000001 00000008 00000A9C [................]
7F77F7061030 00000000 00000005 00000008 01C0011D [................]
7F77F7061040 00000000 00000000 00000000 00000005 [................]
7F77F7061050 00000000 00000000 00000000 00000000 [................]
7F77F7061060 00000005 00000008 01C0011D 00000000 [................]
7F77F7061070 00000000 00000000 00000005 01C00118 [................]
7F77F7061080 01C00118 00000000 00000000 00000000 [................]
7F77F7061090 00000000 00000000 00000000 00000000 [................]
Repeat 3 times
7F77F70610D0 00000001 00002000 00000000 00001434 [..... ......4...]
7F77F70610E0 00000000 01C00119 00000001 01C00118 [................]
7F77F70610F0 01C00119 00000000 00000000 00000000 [................]
7F77F7061100 00000000 00000000 00000001 00000000 [................]
7F77F7061110 000166F2 10000000 01C00118 00000008 [.f..............]
7F77F7061120 00000000 00000000 00000000 00000000 [................]
Repeat 152 times
7F77F7061AB0 01C00118 01C0011B 00000000 00000000 [................]
7F77F7061AC0 00000000 00000000 00000000 00000000 [................]
Repeat 151 times
7F77F7062440 00000000 00000000 01C00119 00000000 [................]
7F77F7062450 00000000 00000000 00000000 00000000 [................]
Repeat 185 times
7F77F7062FF0 00000000 00000000 00000000 C5022301 [.............#..]
Extent Control Header
—————————————————————–
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 8
last map 0×00000000 #maps: 0 offset: 2716
Highwater:: 0x01c0011d ext#: 0 blk#: 5 ext size: 8
#blocks in seg. hdr’s freelists: 0
#blocks below: 5
mapblk 0×00000000 offset: 0
Unlocked
——————————————————–
Low HighWater Mark :
Highwater:: 0x01c0011d ext#: 0 blk#: 5 ext size: 8
#blocks in seg. hdr’s freelists: 0
#blocks below: 5
mapblk 0×00000000 offset: 0
Level 1 BMB for High HWM block: 0x01c00118
Level 1 BMB for Low HWM block: 0x01c00118
——————————————————–
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0×00001434
First Level 3 BMB: 0×00000000
L2 Hint for inserts: 0x01c00119 ——插入查找的L2数据块281
Last Level 1 BMB: 0x01c00118 ——L1 block 280
Last Level II BMB: 0x01c00119 ——L2 block 281
Last Level III BMB: 0×00000000
Map Header:: next 0×00000000 #extents: 1 obj#: 91890 flag: 0×10000000
Inc # 0
Extent Map
—————————————————————–
0x01c00118 length: 8
Auxillary Map
——————————————————–
Extent 0 : L1 dba: 0x01c00118 Data dba: 0x01c0011b
——————————————————–
Second Level Bitmap block DBAs
——————————————————–
DBA 1: 0x01c00119 ———-L3块(即段头)中记录的L2中的地址。随着数据的增多,这里的L2会渐渐增多。
Start check mirror blocks: 5 file#:7 minblk 282 maxblk 282
ksfdrfms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7061000 blkno=282 nbytes=8192
ksfdafReadMirror: Read success from mirror side=1 logical extent number=0 disk=DATA_0000 path=/dev/asm-diskc
Mirror I/O done from ASM disk /dev/asm-diskc
ksfdrnms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7063400 nbytes=8192
ksfdafReadMirror: Read success from mirror side=2 logical extent number=1 disk=DATA_0001 path=/dev/asm-diskd
ksfdrnms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7063400 nbytes=8192
End dump data blocks tsn: 5 file#: 7 minblk 282 maxblk 282
=========L1数据块DUMP。其中记录了数据块的详细信息=======
*** 2013-09-01 19:59:23.977
Start dump data blocks tsn: 5 file#:7 minblk 280 maxblk 280
Block dump from cache:
Dump of buffer cache at level 4 for pdb=1 tsn=5 rdba=29360408
BH (0x85fdb158) file#: 7 rdba: 0x01c00118 (7/280) class: 8 ba: 0x85c84000
set: 3 pool: 3 bsz: 8192 bsi: 0 sflg: 0 pwc: 0,0
dbwrid: 0 obj: 91890 objn: 91890 tsn: [1/5] afn: 7 hint: f
hash: [0x8c7a1bd8,0x8c7a1bd8] lru: [0x85fdb4c8,0x85fdb108]
ckptq: [NULL] fileq: [NULL]
objq: [0x73987528,0x85fdb4f0] objaq: [0x85fdb500,0x73987518]
st: XCURRENT md: NULL fpin: ‘ktspfwh6: ktspffbmb’ fscn: 0×0.1dc4fc tch: 1
flags: block_written_once
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
Block dump from disk:
buffer tsn: 5 rdba: 0x01c00118 (7/280)
scn: 0×0.1dc500 seq: 0×03 flg: 0×04 tail: 0xc5002003
frmt: 0×02 chkval: 0x37ce type: 0×20=FIRST LEVEL BITMAP BLOCK
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F77F7061000 to 0x00007F77F7063000
7F77F7061000 0000A220 01C00118 001DC500 04030000 [ ...............]
7F77F7061010 000037CE 00000000 00000000 00000000 [.7..............]
7F77F7061020 00000000 00000000 00000000 00000000 [................]
Repeat 1 times
7F77F7061040 00000000 00000000 00000000 00000004 [................]
7F77F7061050 FFFFFFFF 00000003 00000003 00000008 [................]
7F77F7061060 00010001 00000000 00000000 00000000 [................]
7F77F7061070 00000000 00000005 00000000 00000000 [................]
7F77F7061080 00000000 00080007 000006D3 00000002 [................]
7F77F7061090 01C00119 00000000 00000000 00000005 [................]
7F77F70610A0 00000008 01C0011D 00000000 00000000 [................]
7F77F70610B0 00000000 00000005 00000000 00000001 [................]
7F77F70610C0 000166F2 001DC0CE 00000000 01C00118 [.f..............]
7F77F70610D0 00000008 00000000 00000000 00000000 [................]
7F77F70610E0 00000000 00000000 00000000 00000000 [................]
Repeat 9 times
7F77F7061180 00000000 00000000 00000000 00101111 [................]
7F77F7061190 00000000 00000000 00000000 00000000 [................]
Repeat 485 times
7F77F7062FF0 00000000 00000000 00000000 C5002003 [............. ..]
Dump of First Level Bitmap Block
——————————–
nbits : 4 nranges: 1 parent dba: 0x01c00119 poffset: 0
unformatted: 3 total: 8 first useful block: 3
owning instance : 1
instance ownership changed at
Last successful Search
Freeness Status: nf1 0 nf2 0 nf3 0 nf4 0
Extent Map Block Offset: 4294967295
First free datablock : 5
Bitmap block lock opcode 2
Locker xid: : 0×0007.008.000006d3
Dealloc scn: 1949902.0
Flag: 0×00000001 (-/-/-/-/-/HWM)
Inc #: 0 Objd: 91890
HWM Flag: HWM Set
Highwater:: 0x01c0011d ext#: 0 blk#: 5 ext size: 8 ====高水位线在第5个block。
#blocks in seg. hdr’s freelists: 0
#blocks below: 5
mapblk 0×00000000 offset: 0
——————————————————–
DBA Ranges : =======数据块的详细信息, 0 即280, 1即281, 2即282, 3,4是数据块
——————————————————–
0x01c00118 Length: 8 Offset: 0
0:Metadata 1:Metadata 2:Metadata 3:FULL
4:FULL 5:unformatted 6:unformatted 7:unformatted
——————————————————–
Start check mirror blocks: 5 file#:7 minblk 280 maxblk 280
ksfdrfms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7061000 blkno=280 nbytes=8192
ksfdafReadMirror: Read success from mirror side=1 logical extent number=0 disk=DATA_0000 path=/dev/asm-diskc
Mirror I/O done from ASM disk /dev/asm-diskc
ksfdrnms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7063400 nbytes=8192
ksfdafReadMirror: Read success from mirror side=2 logical extent number=1 disk=DATA_0001 path=/dev/asm-diskd
ksfdrnms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7063400 nbytes=8192
End dump data blocks tsn: 5 file#: 7 minblk 280 maxblk 280
=========L2数据块DUMP。其中记录了L1的详细信息=====
*** 2013-09-01 20:00:51.561
Start dump data blocks tsn: 5 file#:7 minblk 281 maxblk 281
Block dump from cache:
Dump of buffer cache at level 4 for pdb=1 tsn=5 rdba=29360409
BH (0x85fdb3d8) file#: 7 rdba: 0x01c00119 (7/281) class: 9 ba: 0x85c88000
set: 3 pool: 3 bsz: 8192 bsi: 0 sflg: 0 pwc: 0,0
dbwrid: 0 obj: 91890 objn: 91890 tsn: [1/5] afn: 7 hint: f
hash: [0x8c0b00b8,0x8c0b00b8] lru: [0x85fdb608,0x85fdb248]
ckptq: [NULL] fileq: [NULL]
objq: [0x85fdb270,0x85fdb630] objaq: [0x85fdb640,0x85fdb280]
st: XCURRENT md: NULL fpin: ‘ktspswh4: ktspfsbmb’ fscn: 0×0.1dc4fc tch: 1
flags: block_written_once
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
Block dump from disk:
buffer tsn: 5 rdba: 0x01c00119 (7/281)
scn: 0×0.1dc4fc seq: 0×02 flg: 0×04 tail: 0xc4fc2102
frmt: 0×02 chkval: 0xe111 type: 0×21=SECOND LEVEL BITMAP BLOCK
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F77F7061000 to 0x00007F77F7063000
7F77F7061000 0000A221 01C00119 001DC4FC 04020000 [!...............]
7F77F7061010 0000E111 00000000 00000000 00000000 [................]
7F77F7061020 00000000 00000000 00000000 00000000 [................]
Repeat 1 times
7F77F7061040 00000000 00000000 00000000 01C0011A [................]
7F77F7061050 00000001 00000001 00000000 00000000 [................]
7F77F7061060 00000000 00000000 000166F2 00000001 [.........f......]
7F77F7061070 00000000 01C00118 00010005 00000000 [................]
7F77F7061080 00000000 00000000 00000000 00000000 [................]
Repeat 502 times
7F77F7062FF0 00000000 00000000 00000000 C4FC2102 [.............!..]
Dump of Second Level Bitmap Block
number: 1 nfree: 1 ffree: 0 pdba: 0x01c0011a
Inc #: 0 Objd: 91890
opcode:0
xid:
L1 Ranges :
——————————————————–
0x01c00118 Free: 5 Inst: 1 ========L2中记录的L1的详细信息
——————————————————–
Start check mirror blocks: 5 file#:7 minblk 281 maxblk 281
ksfdrfms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7061000 blkno=281 nbytes=8192
ksfdafReadMirror: Read success from mirror side=1 logical extent number=0 disk=DATA_0000 path=/dev/asm-diskc
Mirror I/O done from ASM disk /dev/asm-diskc
ksfdrnms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7063400 nbytes=8192
ksfdafReadMirror: Read success from mirror side=2 logical extent number=1 disk=DATA_0001 path=/dev/asm-diskd
ksfdrnms:Mirror Read file=+DATA/DBASKY/DATAFILE/dbasky.268.824642631 fob=0x8ac0e6e8 bufp=0x7f77f7063400 nbytes=8192
End dump data blocks tsn: 5 file#: 7 minblk 281 maxblk 281
segment header block的类型
ID | Type | |
Decimal | Hex | |
1
11 12 14 15 16 17 18 23 29 32 33 34 35 36 37 |
0×01
0x0b 0x0c 0x0e 0x0f 0×10 0×11 0×12 0×17 0x1d 0×20 0×21 0×22 0×23 0×24 0×25 |
undo segment header
data file header data segment header with FLG(Free List Group) block unlimited undo segment header unlimited save undo segment header unlimited data segment header unlimited data segment header with FLG blocks extent map block bitmapped segment header bitmapped file space header first level bitmap block second level bitmap block third level bitmap block Pagetable segment header block Pagetable extent map block System Managed Undo Extent Map Block |
参考:http://blog.chinaunix.net/uid-7628732-id-119768.html