默认安装情况下数据文件有:temp、swap、users、sysaux、system、undo。
dump这些文件信息,简要说明:
1.数据文件物理结构
数据文件物理上可以划分固定位置部分和可变位置部分。
固定位置,block 0-127的块,分别是数据文件头块(block 0)和数据文件空间管理块(block 1 到block 127)
可变位置,block 128以后的数据块
2.数据文件头块和空间管理头块部分字段说明
----------------------------------------------------------------
block: 0
data file head
head: id 0-0, type 1, instance id 0 lsn 0, checksum: 0, change num 0, isEncrypted 0, isCompressed 0
space id: 0 db id: 1581543562 db create time: 2024-05-04 09:46:31.763793, create lsn 1, truncate lsn 0
tail: change num: 0
block: 1
space head
head: id 0-1, type 2, instance id 0 lsn 1, checksum: 0, change num 0, isEncrypted 0, isCompressed 0
migration number: 0
tail: change num: 0
----------------------------------------------------------------
block: N ,块号N
head: id 0-0, 第一个0表示相对文件号(v$datafile.relative_fno),第二个0表示块号
type: N,块类型
0: unknown, 未格式块
1:data file head,数据文件头块
2: space head, 空间管理头块?
4: head data,表示用来存放数据的head 类型表
6: xact,???
7: undo segment,undo段头块
8: undo data,undo数据块
9: datafile map, 数据文件空间管理块
32: assm: 表示自动段空间管理 位图块
33: segment:表示段头
change num 0,块的变更序号,随着每次块的变化而增加 ???,块头的change num与块尾tail 的change num保持一致
isEncrypted 0,是否加密,0表示未加密
isCompressed 0,是否压缩,0表示未压缩
space id: 0,表空间号(v$tablespace.id)
db id: 1581543562 , 数据库ID
3.数据文件空间分配管理map块部分字段说明
----------------------------------------------------------------
block: 2
datafile map
head: id 0-2, type 9, instance id 0 lsn 4606, checksum: 0, change num 194, isEncrypted 0, isCompressed 0
data first: 128 free begin: 160 free count: 64917
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111111 00000111 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ......
----------------------------------------------------------------
大部分字段类似块头,部分字段如下说明:
data first: 128,第一个数据块块号,128号块
free begin: 160 ,可用数据块开始位置
free count: 64917,剩余可用数据块数量
11111111......,使用0或者1来表示数据块的使用情况,一个数字表示一个空间位图块,一个位图块可以管理8个数据块???
例如:
创建一个表空间包括2个数据文件:
create tablespace YYT01 datafile '/yashan/yasdb_data/db-1-1/dbfiles/yyt01' size 2g;
alter tablespace yyt01 add datafile '/yashan/yasdb_data/db-1-1/dbfiles/yyt02' size 100m;
创建表LEO,插入99999条记录后,dump数据文件,可以看到 每个文件的block 2的分配情况,其中相对文件号0的数据文件,分配112个位图块,每个位图块管理8个数据块,也就是112*8=896 blocks;相对文件号1的数据文件,分配0个位图块。
--相对文件号0
block: 2
datafile map
head: id 0-2, type 9, instance id 0 lsn 4894, checksum: 0, change num 22, isEncrypted 0, isCompressed 0
data first: 128 free begin: 112 free count: 65104
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 00000000 00000000
00000000 00000000 00000000 00000000 ......
--相对文件号1
block: 2
datafile map
head: id 1-2, type 9, instance id 0 lsn 4644, checksum: 0, change num 0, isEncrypted 0, isCompressed 0
data first: 128 free begin: 0 free count: 65216
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 ......
查看dba_segments视图,blocks数量为896.
SQL> col owner for a10
SQL> col segment_name for a10
SQL> select owner,segment_name,blocks from dba_segments where segment_name='LEO';
OWNER SEGMENT_NA BLOCKS
---------- ---------- ---------------------
SYS LEO 896
1 row fetched.
从这里也可以看到,数据空间分配全部在相对文件号0上面,而不是表空间所有数据文件。




