数据库存储架构
Oracle数据库的存储架构包括以下文件:
控制文件 (Control Files)
- 记录数据库的物理结构,包括数据文件和重做日志文件的信息。
- 示例:
control01.ctl
,control02.ctl
。 - 实例:当数据库启动时,Oracle会读取控制文件,以确定数据库的物理文件结构和状态。
数据文件 (Data Files)
- 存储数据库的实际数据。
- 示例:
users01.dbf
,system01.dbf
。 - 实例:一个包含用户信息的表会将数据存储在
users01.dbf
文件中。
在线重做日志文件 (Online Redo Log Files)
- 记录所有对数据库的更改,用于恢复数据。
- 示例:
redo01.log
,redo02.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.log
,trace.trc
。 - 实例:
alert.log
记录了数据库启动、关闭及其他重要事件。
段、区和块
段 (Segments)
- 存在于表空间中,是一组用于存储特定逻辑结构的区。
- 示例:表段、索引段、撤销段、临时段。
- 实例:一个包含客户数据的表段。
区 (Extents)
- 段由多个区组成,每个区包含连续的数据块。
- 示例:每个表的区数量会随着数据的增加而增加。
- 实例:当表的数据增长时,数据库会分配新的区来存储更多的数据。
数据/撤销块 (Data/Undo Blocks)
- 区由多个数据/撤销块组成,每个块映射到磁盘块。
- 示例:数据块存储实际的数据行,撤销块存储数据修改前的值。
- 实例:一个数据块包含一个或多个数据行。
段的类型
表和簇 (Table and Cluster)
- 用于存储表和簇的数据。
- 示例:用户数据表。
- 实例:一个包含订单信息的表段。
索引 (Index)
- 用于存储索引数据。
- 示例:主键索引、唯一索引。
- 实例:一个索引段加速了对客户数据表的查询操作。
撤销 (Undo)
- 用于存储事务的撤销信息。
- 示例:事务回滚段。
- 实例:撤销段用于存储在事务期间修改的数据的原始值,以便在需要时撤销事务。
临时 (Temporary)
- 用于存储临时数据。
- 示例:临时表空间段。
- 实例:临时段用于存储排序操作中间结果的数据。
数据在表中的存储
- 表数据存储在表空间中的段内,段由区组成,区由数据块组成。
- 数据块中包括块头、空闲空间和行数据。
- 示例:一个表包含多个行,行存储在数据块中。
图示:
Table A
和Table B
各自有自己的段。- 段包含多个区,区包含多个块,块包含实际的数据行。
数据块内容
- 数据块由块头、空闲空间和行数据组成。
- 块头包含管理信息,空闲空间用于插入新数据,行数据存储实际数据。
- 示例:一个数据块的头部包含块的标识信息,中间是空闲空间,底部是行数据。
延迟段创建的优点
DEFERRED_SEGMENT_CREATION = TRUE 是默认设置
- 延迟段创建是表、索引和分区的默认设置。
- 实例:创建一个新表时,不会立即分配段。
段创建流程
- 表创建时:进行数据字典操作,但不创建段。
- DML操作时:才会创建段。
- 实例:只有在对表进行插入操作时,段才会被创建。
优点
- 节省磁盘空间。
- 提高大型应用程序的安装时间。
- 实例:通过延迟段创建,可以减少未使用段对磁盘空间的浪费。
非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。
提供丰富的学习资源和实践经验,让你快速掌握AI技能;提供最新的行业动态和应用案例,帮助你在AI领域脱颖而出。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。