数据库存储架构

Oracle数据库的存储架构包括以下文件:

控制文件 (Control Files)

  • 记录数据库的物理结构,包括数据文件和重做日志文件的信息。
  • 示例:control01.ctlcontrol02.ctl
  • 实例:当数据库启动时,Oracle会读取控制文件,以确定数据库的物理文件结构和状态。

数据文件 (Data Files)

  • 存储数据库的实际数据。
  • 示例:users01.dbfsystem01.dbf
  • 实例:一个包含用户信息的表会将数据存储在users01.dbf文件中。

在线重做日志文件 (Online Redo Log Files)

  • 记录所有对数据库的更改,用于恢复数据。
  • 示例:redo01.logredo02.log
  • 实例:当用户对数据库进行插入操作时,变更记录会写入在线重做日志文件,以便在崩溃后进行恢复。

归档重做日志文件 (Archived Redo Log Files)

  • 保存已填满的重做日志文件,用于长期数据恢复。
  • 示例:arch_20230715_001.arc
  • 实例:为了确保数据恢复能力,Oracle会定期将在线重做日志文件归档到归档重做日志文件中。

备份文件 (Backup Files)

  • 数据库的备份文件,用于恢复。
  • 示例:full_backup.bak
  • 实例:定期备份数据库,以防止数据丢失。

初始化参数文件 (Initialization Parameter File)

  • 配置数据库启动时的参数。
  • 示例:init.ora
  • 实例:可以通过初始化参数文件配置内存分配、进程数量等参数。

密码文件 (Password File)

  • 存储数据库管理员密码。
  • 示例:orapwd
  • 实例:通过密码文件控制谁可以以管理员身份连接到数据库。

日志和跟踪文件 (Log and Trace Files)

  • 记录数据库操作日志和错误跟踪。
  • 示例:alert.logtrace.trc
  • 实例:alert.log记录了数据库启动、关闭及其他重要事件。

段、区和块

段 (Segments)

  • 存在于表空间中,是一组用于存储特定逻辑结构的区。
  • 示例:表段、索引段、撤销段、临时段。
  • 实例:一个包含客户数据的表段。

区 (Extents)

  • 段由多个区组成,每个区包含连续的数据块。
  • 示例:每个表的区数量会随着数据的增加而增加。
  • 实例:当表的数据增长时,数据库会分配新的区来存储更多的数据。

数据/撤销块 (Data/Undo Blocks)

  • 区由多个数据/撤销块组成,每个块映射到磁盘块。
  • 示例:数据块存储实际的数据行,撤销块存储数据修改前的值。
  • 实例:一个数据块包含一个或多个数据行。

段的类型

表和簇 (Table and Cluster)

  • 用于存储表和簇的数据。
  • 示例:用户数据表。
  • 实例:一个包含订单信息的表段。

索引 (Index)

  • 用于存储索引数据。
  • 示例:主键索引、唯一索引。
  • 实例:一个索引段加速了对客户数据表的查询操作。

撤销 (Undo)

  • 用于存储事务的撤销信息。
  • 示例:事务回滚段。
  • 实例:撤销段用于存储在事务期间修改的数据的原始值,以便在需要时撤销事务。

临时 (Temporary)

  • 用于存储临时数据。
  • 示例:临时表空间段。
  • 实例:临时段用于存储排序操作中间结果的数据。

数据在表中的存储

  • 表数据存储在表空间中的段内,段由区组成,区由数据块组成。
  • 数据块中包括块头、空闲空间和行数据。
  • 示例:一个表包含多个行,行存储在数据块中。

图示:

  • Table ATable B各自有自己的段。
  • 段包含多个区,区包含多个块,块包含实际的数据行。

数据块内容

  • 数据块由块头、空闲空间和行数据组成。
  • 块头包含管理信息,空闲空间用于插入新数据,行数据存储实际数据。
  • 示例:一个数据块的头部包含块的标识信息,中间是空闲空间,底部是行数据。

延迟段创建的优点

DEFERRED_SEGMENT_CREATION = TRUE 是默认设置

  • 延迟段创建是表、索引和分区的默认设置。
  • 实例:创建一个新表时,不会立即分配段。

段创建流程

  • 表创建时:进行数据字典操作,但不创建段。
  • DML操作时:才会创建段。
  • 实例:只有在对表进行插入操作时,段才会被创建。

优点

  • 节省磁盘空间。
  • 提高大型应用程序的安装时间。
  • 实例:通过延迟段创建,可以减少未使用段对磁盘空间的浪费。

非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。

提供丰富的学习资源和实践经验,让你快速掌握AI技能;提供最新的行业动态和应用案例,帮助你在AI领域脱颖而出。

本文由mdnice多平台发布


逼格高的汤圆
10 声望2 粉丝