Oracle 11G 表空间数据文件区管理方式有两种分别是统一区大小表空间和系统管理区大小表空间。Oracle 11G 默认管理方式为系统管理区大小。如下是创建一个新表空间,并且创建一张表:
从上述查询结果可以看出,数据文件从6号问题的128号块开始分配,分配了8个块,每个块8K,即一个区分配64K,6号文件从0号块到127号块未分配给表,说明是用于内部管理使用,我们使用dump 命令查看一下:6号文件0号和1号块信息(数据文件头):
6号文件2号块-127号块信息(KTFB Bitmapped File Space Header):
......
6号文件128号块信息(FIRST LEVEL BITMAP BLOCK):
从上述结果可以看出: 数据文件0-1号数据块记录数据文件信息,2-127号块是位图,用于管理数据块第二 当表插入数据时,数据库如何给表分配空间,随着数据量的增加,区分配大小从64K(8*8K)到 1M(128*8k),各区的大小从最初8个 64K的区,多个1M的区,详细自行测试(alter table test.test allocate extent;),如下:
针对dump 文件内容解析材料如下:
|
域 |
长度 |
含义 |
|
type |
1 |
本 Block 的类型,可以取值:
0x01 undo segment header
0x02 undo block
0x03 save undo header block
0x04 save undo data block
0x05 data segment header block(temp, index, data)
0x06 KTB managed data block(with ITL)
0x07 temp table data block(no ITL)
0x08 sort key
0x09 sort run
0x0a segment free list block
0x0b data file header
0x0c data segment header with FLG blcks
0x0e unlimited undo segment header
0x0f unlimited save undo segment header
0x10 unlimited data segment header
0x11 unlimited data segment header with FLG blocks
0x12 extent map block
0x17 bitmapped segment header
0x1d KTFB bitmapped file space header
0x1e KTFB bitmapped file space bitmap
0x20 first level bitmap block
0x21 second level bitmap block
0x22 third level bitmap block
0x23 pagetable segment header block
0x24 pagetable extent map block
0x25 system managed undo extent map block |
|
frmt |
1 |
格式,标识不同的 block 版本 |
|
spare1/2 |
2 |
保留 |
|
rdba |
4 |
相对 block 地址,前 10 个 bit 为相对文件 id ,后 22 个 bit 为 block 号,可见 1 个 tablespace 可以有 1023 个 datafile ,每个 datafile 可以有 4M 个 block |
|
scn |
6 |
本 block 最近一次更新时的 scn |
|
seq |
1 |
如果更新本 block 时 scn 相同,则 seq 加 1 |
|
flg |
1 |
组合标志位:
0x01
新
block
,
data
部分为空;
0x02 delayed logging change advance SCN/SEQ
0x04
校验
CHECKSUM
0x08
临时
block |
|
chkval |
2 |
flg 的 CHECKSUM 标志为真时,写入前对 block 计算 CHECKSUM ,并填入本域,后继读出时会再次计算并检查,防止块损坏 |
|
spare3 |
2 |
保留 |
KTFB Bitmapped File Space Bitmap部分关键信息
|
域 |
含义 |
|
beginblock |
存放 data 的 block 地址,前面的区域存放Data File Header、KTFB Bitmapped File Space Header、KTFB Bitmapped File Space Bitmap |
|
flag |
0 permanent 文件, 1 临时文件 |
|
first |
本 block 中第 1 个可用的 unit 位置 |
|
free |
本 block 中 free 的 unit 数量 |
|
map |
1 个 bit 代表 1 个 unit , 0 表示 free , 1 表示 used |
segment 3级bitmap管理机制

表1.2-6 L1 BMB部分关键信息
|
一级域 |
二级域 |
含义 |
|
parent dba |
其归属的 L2 BMB 地址 | |
|
unformatted |
未格式化的 block 数量 | |
|
total |
MAP 中 block 总数 | |
|
first useful block |
MAP 中第 1 个可用的 block | |
|
MAP(*n) |
offset |
extent 的地址,即 extent 中第一个 block 的地址 |
|
length |
extent 中 block 的数量 | |
|
bits |
标识 extent 中各个 block 的状态,每个 block 的状态占用 4 个 bit 位:
0000
:
unformatted
,尚未格式化;
0001
:
full
,已满;
0010
:
<25%
,空闲空间
<25%
;
0011
:
25-50%
,空闲空间
25-50%
;
0100
:
50-75%
,空闲空间
50-75%
;
0101
:
>75
,空闲空间
>75%
;
0110
:
metadata
,元数据
block
,
segment header block
、
BMB
都是
metadata block
; | |
表1.2-7 L2 BMB部分关键信息
|
一级域 |
二级域 |
含义 |
|
parent dba |
其归属的 L3 BMB 地址或 segment header block 地址 | |
|
number |
MAP 中 L1 BMB 的数量 | |
|
nfree |
MAP 中尚有空闲空间的 L1 BMB 数量 | |
|
ffree |
MAP 中已满的 L1 BMB 数量 | |
|
MAP(*n) |
dba |
L1 BMB 的地址 |
|
free |
5 :空闲; 0 : FULL ; | |
部分材料来自:https://developer.aliyun.com/article/1137769
