【读书笔记】数据库逻辑结构_记录


Oracle的逻辑结构包括表空间、数据段、分区、数据块;

1.数据块(block)

数据块是数据库中最基本的存储单位。

数据块的大小是由初始化参数DB_BLOCK_SIZE指定的,这个值通常是8K,也可以定义成2KB、4KB、16KB、32KB、64KB。

数据块大小设置后不能更改,但是可以创建不同块大小的表空间。

数据块结构

【读书笔记】数据库逻辑结构_数据库_02

数据块头:记录数据块的身份信息,包括数据块地址、数据块类型、事务表

Row Directory:数据块内的记录相对于数据块头的偏移量,可以看成是内部指针。

Free Space:数据块的空闲空间;

Used Space:数据记录占用的空间。

2.分区(Extent)

连续的数据块组成了一个分区,意义在于简化空间管理的复杂性。

3.段(Segment)

段是由Extent组成的,但并不要求Extent必须连续。

4.表空间

表空间是醉高层的逻辑结构,每个表空间由若干个物理文件组成。

查看表空间的大小及其使用率:

SELECT Upper(F.TABLESPACE_NAME)         "表空间名",

       D.TOT_GROOTTE_MB                 "表空间大小(M)",

       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",

       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')

       || '%'                           "使用比",

       F.TOTAL_BYTES                    "空闲空间(M)",

       F.MAX_BYTES                      "最大块(M)"

FROM   (SELECT TABLESPACE_NAME,

               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,

               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES

        FROM   SYS.DBA_FREE_SPACE

        GROUP  BY TABLESPACE_NAME) F,

       (SELECT DD.TABLESPACE_NAME,

               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB

        FROM   SYS.DBA_DATA_FILES DD

        GROUP  BY DD.TABLESPACE_NAME) D

WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME

ORDER  BY 1;