Oracle的基础问题segment extent block
l extent和segment的关系
每个extent 的Oracle block 的数目是由extent的大小/DB_BLOCK_SIZE 确定的,extent 大小是由创建或修改segment 的SQL 语句中storage子句中的initial, next, pctincrease等参数确定。
每个segment中的extent的数目是一个动态扩展的值, 最大值由创建或修改该segment的SQL语句的storage子句中的maxextents 值确定。
通常非分区的表的存储就是一个 segment。
segment包含多extent,可以由一些storage参数控制。
一个extent有多少block也要看你定义存储参数的时候extent是多大,也就是segment头有一个block用来保存相关的存储信息的,块越大就存的越多。
l block的大小如何定义
数据块特指data block,是数据文件的组成部分。
重做日志的叫redo block,不叫data block, 大小一般等于操作系统块的大小,可以通过查询语句select max(lebsz) from x$kccle;来获得redo block的大小。
如:
SQL> conn /as sysdba
Connected.
SQL> select max(lebsz) from x$kccle;
MAX(LEBSZ)
----------
512
控制文件的也不叫data block,叫control file block可以功过查询语句select distinct block_size from v$controlfile; 来获得其大小。
如:
SQL> select distinct block_size from v$controlfile;
BLOCK_SIZE
----------
16384