欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle 数据库笔记(2)—— 逻辑存储结构

程序员文章站 2022-05-07 19:03:12
Oracle 数据库中的数据文件被分组到一个或多个表空间中。在每个表空间中,逻辑数据库结构 ( 如表和索引 ) 都是片段,被进一步细分为 “ 盘区” ( extent ) 和 “ 块 ( block ) ”。这种存储的逻辑细分允许 Oracle 更有效地控制磁盘空间的利用率。图 1 显示了数据库中逻辑存储结构之间的关系。1 表空间Oracle 表空间 ( tablespace ) 由一个或多个数据文件组成,一个数据文件是且只能是一个表空间的一部分。 Oracle 12c最少会创建两个表空间 :...

Oracle 数据库中的数据文件被分组到一个或多个表空间中。在每个表空间中,逻辑数据库结构 ( 如表和索引 ) 都是片段,被进一步细分为 “ 盘区” ( extent ) 和 “ 块 ( block ) ”。这种存储的逻辑细分允许 Oracle 更有效地控制磁盘空间的利用率。图 1 显示了数据库中逻辑存储结构之间的关系。

Oracle 数据库笔记(2)—— 逻辑存储结构

1 表空间

Oracle 表空间 ( tablespace ) 由一个或多个数据文件组成,一个数据文件是且只能是一个表空间的一部分。 Oracle 12c最少会创建两个表空间 : SYSTEM 表空间和 SYSAUX 表空间。

SYSAUX 表空间是在 Oracle Database10g 中引入的,作为 SYSTEM 表空间的辅助表空间 . 以前一些使用独立表空间或系统表空间的数据库组件现在会在 SYSAUX 表空间中创建。 SYSAUX 表空间存放一些其他的 metadata 组件,如 OEM , Streams 等会默认存放在 SYSAUX 表空间里。通过分离这些组件和功能, SYSTEM 表空间的负荷得以减轻 ,因为可以避免反复创建一些相关对象及组件引起 SYSTEM 表空间的碎片问题。

即使表空间是临时的,表空间自身也是永久的,只有保存在表空间中的段是临时的。临时表空间可用于排序操作,也用于只存在于用户会话期间的表。专门使用一个表空间用于此类操作,有助于减少临时段和存储在另一个表空间中的永久段之间的 IO 争用。

表空间可以是字典管理的或本地管理的。

  1. 在字典管理的表空间中,盘区管理记录在数据字典表中。因此,即使所有的应用程序表都在 USERS 表空间中,也仍需要访问 SYSTEN 表空间,以管理应用程序表上的 DML。 因为所有用户和应用程序必须使用 SYSTEN 表空间才能进行盘区管理,这就为写入密集型应用程序造成了潜在的瓶颈。

  2. 在本地管理的表空间中, Oracle 在表空间的每个数据文件中维护一个位图,用于跟踪空间可用性。只在数据字典中管理分配额,这样可极大地减少数据字典表的争用。

2 块

数据库块是 Oracle 数据库中最小的存储单位。块的大小是数据库内给定表空间中特定数量的存储字节块,它通常是操作系统块的几倍大,这有助于提升磁盘 I/O 的效率。

Oracle 的初始参数 DB_BLOCKSIZE 可指定默认的块大小。默认块大小是 8KB。最多可为数据库中的其他表空间定义4个块大小,而 SYSTEM、SYSAUX 和任何临时表空间中的块大小必须为 DB_BLOCK_SIZE 的值。

除非确有必要使用不同大小,否则应为所有表空间使用 8KB 块大小。如果修改了块大小,应该进行全面测试,看能否提升性能 。

3 盘区

盘区是由一个或多个数据库块组成。当扩大数据库对象时,为该对象添加的空间将分配为一个盘区。

4 段

段是一组盘区,这组盘区组成了被 Oracle 视为一个单位的数据库对象,如表或索引 。因此,段一般是数据库终端用户要处理的最小存储单位。 Oracle 数据库中可看到4种类型的段 : 数据段 ( 非分区表和分区表的每个分区 ) 、 索引段 、 临时段和回滚段。

(1)数据段

数据库中的每张表都驻留在单独的数据段中,数据段由一个或多个盘区组成。如果某个表是分区表 ( partitioned table ) 或群集表 ( clustered table ) ,则 Oracle 为该表分配多个段。数据段包含存储 大对象数据的 LOB 段。

(2)索引段

每个索引都存储在自己的索引段中。与分区表一样,分区索引的每个分区存储在各自的段中。

(3)临时段

当用户的 SQL 语句需要磁盘空间来完成某操作 ( 例如不能在内存中完成的排序操作 ) 时, Oracle 会分配临时段。临时段只存在于 SQL 语句的执行期间 。

(4)回滚段

从 Oracle 10g开始,遗留的回滚段只存在于 SYSTEM 表空间中,并且 DBA 一般不需要维护 SYSTEM 回滚段。

自动撤消管理 ( Automatic Undo Management , AUM ) 处理一个撤消表空间中回滚段的自动分配和管理。在撤消表空间中,撤消段的构造类似于回滚段,不同之处在于如何管理这些段的细节由 Oracle 控制。

在 Oracle 12c中,默认启用 AUM ,此外还提供了 PL/SQL 过程,以帮助确定 UNDO 表空间的大小。

本文地址:https://blog.csdn.net/deniro_li/article/details/107281667