1.segment 段的不同类型:
分区表 tablepartition
表 table
索引 index
簇 cluster
索引分区indexpartition
索引表 index-organized table
临时段 temporary segment
还原段 undosegment
大对象段lobsegment
嵌套表 nested table
自举段bootstrapsegment
存储子句的优先级
ORACLE数据库默认的存储参数》表空间定义的存储参数》段定义的存储参数
2.表和段的对应关系
表是段,但段不一定是表,段还有index段、undo段、分区之类的
具体如下:表是逻辑对象;段是物理存储对象
它们之间的关系:
① 段的存在,并不是依赖于表的。建立一些其它逻辑对象也会会创建段,如索引、物化视图
② 一张普通表(堆组织表)对应一个段
③ 表的建立,并不意味着段的创建,如临时表(Global Temporary Table)
④ 一张表也可以创建多个段,如分区表(Partition Table)
⑤ 多个表也可以共存于一个段,如簇表(Cluster Table)
3.区段 extent
区段是表空间中由某一个段所使用的一块空间,是一组连续的ORACLE数据块。
引入区段可以减少磁盘分配次数,提高系统效率。
当一个段被创建created时,被扩展extended时,被改变时altered,ORACLE会分配一个区段。
当一个段被删除dropped时,被改变时,被截断时truncated,ORACLE会回收一个区段。
##############################################################################
4.数据库块database block
ORACLE最小的存储单元数据库块,也称为ORACLE数据块。
在表空间创建时设置DB_BLOCK_SIZE为默认数据块大小。不建议使用非标准块。
数据库可使用一个标准块,也可以使用最多4种非标准块,非标准块大小为2的次方2-32KB之间
数据块包括:
数据块头 存有数据块的地址,表目录,行目录,事务槽transaction slot,头部从上往下增长。
空闲区位于数据块中部,删除修改操作会导致空闲区碎片化。
数据区装 的是数据行,位于数据块的底部,从下往上增长。
建议使用ORACLE的自动的段空间管理,本地管理的表空间都可以使用。
查看哪些表是系统自动管理。
SQL> select tablespace_name,block_size,status,contents,segment_space_management from dba_tablespaces;
TABLESPACE_NAME BLOCK_SIZE STATUS CONTENTS SEGMEN
------------------------------ ------------------- --------- ------
SYSTEM 8192 ONLINE PERMANENT MANUAL
SYSAUX 8192 ONLINE PERMANENT AUTO