dba_data_files不一致 dba_data_files详解_dba_data_files不一致

database --> tablespaces --> segments --> extents --> blocks (--> os blocks)


tablespace 表空间
一个表空间可以包含一个或多个数据文件,最大1023个,每个数据文件只能属于一个表空间
表空间和数据文件之间的关系是 逻辑结构 和 物理结构 的关系
查看数据文件的视图 dba_data_files
查看临时文件的视图 dba_temp_files
数据文件有一个编号(FILE_ID)这个FILE_ID是绝对编号(操作数据文件的时候即可以使用文件名FILE_NAME也可以使用编号FILE_ID,极个别地方只能使用文件名)
查看表空间的视图 dba_tablespaces
使用数据文件和使用临时文件的差别是产生日志量是不一样的,使用临时文件产生的日志非常少(LOGGING,NOLOGGING)
表空间根据表空间里段的内容或者类型不一样可以分为三类: permanent, temporary, undo
创建表空间 create tablespace test datafile 'C:\ORADATA\TEST\TEST01.DBF' size 10M;
改变数据文件大小 alter database datafile 5 resize 20M;
创建表空间时默认数据文件是不自动扩展的
修改为自动扩展
alter database datafile 5 autoextend on next 1m maxsize 1024m (指定unlimited为不限制);


segment 段
数据库中要求存储的任何对象都被归类为段,段是用来描述对象物理使用的
段创建在指定的表空间上
表定义属于元数据是放在system表空间里的,数据是放在指定的表空间的,如果表空间offline了就会出现表不可查询但是可删除的现象
create table t(id int) tablespace test;
查看对应表空间的段 select * from dba_segments where tablespace_name = 'TEST';
段是由extent组成的
段都有段头,段头记录了段有几个extent组成
HEADER_FILE 段头所在文件号,HEADER_BLOCK 段头所在数据块 


extent 区
Oracle扩展空间是以extent为单位的,读取是以block为单位
查看segment对应的extent select * from dba_extents where segment_name = 'T';
每条数据代表一个extent
BLOCK_ID:从第几个块开始 BLOCKS: 由几个块组成
extent是由连续的block组成(逻辑上连续)


block 块
数据库块是数据库内I/O的最小单位
数据库读写数据时总是无法只读取一条记录,而是必须整个数据块
前8个块是Oracle元数据,用户是从第9个块开始使用 (10g)