oracle数据块、区间和段

面试题:

4. 解释data block , extent 和 segment的区别(这里建议用英文术语) 
解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment.


数据库逻辑上最小的单元就是data block, block 可以设置为2K, 4K, 8K....64k。
extent由block组成,segment则由extent组成,tablespace由segment组成,
datafile是数据库的物理表现形式,一个tablespace可以对应多个datafile,一个datafile只能属于一个tablespace。


§2.5 数据块、区间和段 
§2.5.1 
数据块(datablock 
l Oracle
的数据块也叫Oracle块; 
l Oracle
系统在创建表空间时将数据文件格式化成若干个Oracle块; 
l
每个Oracle块是Oracle系统处理的最小单位; 
l
块的大小在安装系统时确定,可以选择自定义安装来设置大小; 
l
块的大小一旦确定下来就不能改动; 
l
块的大小可以从2k64k不等; 
l
块的大小可以用下面命令查到:

select name,value from v$parameter wherename like 'db_block_size';

§2.5.2 区间(extent 
l
分配给对象(如表)的任何连续块叫区间; 
l
区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块); 
l
区间的大小由 next 决定; 

l
一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象; 
l
一个对象所用去多少区间可用下命令查到:

select segment_name,tablespace_name,count(*) from dba_extents 
having count(*)>1 group by segment_name,tablespace_name;

§2.5.3 (segment) 
l
段是指占用数据文件空间的通称,或数据库对象使用的空间的集合; 
l
段可以有表段、索引段、回滚段、临时段和高速缓存段等; 
l
段使用同表空间中的若干Oracle块(可以位于不同数据文件中)。

例: 
CREATE TABLE  abc ( empno number(4),ename varchar2(20),sal number(9,2)) 
TABLESPACE user_data storage(initial 500k next 256k pctincrease 0);

1)段被分配=初始区间=500k; 
2)当开始的500k用完后就再分配256k;此时段=500k+256k; 
3)如果所分配的区间又用完后,就再分配256k, …

你可能感兴趣的:(Oracle,data,block,extend,segment)