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

相关内容