Oracle数据库体系结构是其功能强大、稳定高效的核心。它由多种逻辑和物理结构构成,为数据库操作提供底层支持。本知识点将从Oracle的逻辑存储结构和物理存储结构两个方面进行详细解读。
逻辑存储结构包含以下几个层次:
1. 数据块(DataBlocks):数据块是Oracle逻辑存储结构中最小的逻辑单位,也是执行数据库操作的最小存储单位。Oracle数据存放在“Oracle数据块”中,而这些数据块的大小通常是操作系统块大小的整数倍。Oracle支持在同一个数据库中使用多种大小的块,与标准块大小不同的块为非标准块。数据块的结构通常包含块头、表目录、头部信息区、行目录、空余空间、行数据存储区等。头部信息区用于存放整个块的引导信息,若该部分信息破坏,则Oracle无法读取这部分数据。数据块是存放数据记录的真正地方,空余空间用于存放未被使用的空间,而行目录则记录了行数据存储区中数据行的目录信息。
2. 数据区(Extent):一组连续的Oracle数据块构成数据区,它是Oracle存储分配的最小单元。数据区由多个数据块组成,用来保存特定对象的数据。当段中所有空间被使用完后,Oracle系统自动为该段分配一个新的数据区。
3. 段(Segment):段是包含一个或多个数据区的逻辑存储结构。段的目的是用来保存特定的对象数据,比如表、索引、回滚数据等。段内包含的数据区可以不连续,并且可以跨越多个文件。段数据段的增大过程是通过向其添加新的数据区来实现的。创建表时,系统自动创建一个以该表的名字命名的数据段。
物理存储结构主要由以下元素组成:
1. 数据文件:数据文件是在创建表空间的同时由Oracle创建的,用于保存应用程序数据和Oracle系统内部数据。数据文件首先从数据文件中读取数据,并将数据存储在内存的高速数据缓冲区。如果请求的数据不在内存的高速缓冲区中时,则需要从相应的数据文件中读取数据并存储在缓冲区中。
2. 控制文件:控制文件记录了数据库的物理结构,其中包括数据库名、数据文件与日志文件的名称和位置、数据库建立日期等重要信息。Oracle实例在启动时必须访问控制文件,只有控制文件正常,实例才能加载并打开数据库。出于安全考虑,Oracle数据库系统会自动创建两个或三个控制文件,每个控制文件记录相同的信息。
3. 日志文件:日志文件记录了对数据库所作的修改,用于保障不丢失已有操作成果。Oracle系统在运行过程中产生的日志信息首先被临时存放在系统全局区的“重做日志缓冲区”中。当发出Commit命令或日志缓冲区信息满1/3时,LGWR进程将重做日志信息从缓冲区读取出来,并写入到日志文件组中。归档进程会在日志文件组中的日志文件被写满而即将被覆盖前,先将即将被覆盖的日志文件中的信息读出,写入到归档日志文件中。归档模式下,归档日志文件用于在系统恢复时提供重做日志信息。
此外,Oracle数据库还包含其他文件类型,如撤销数据文件、用户数据文件和二进制文件。撤销数据文件隶属于撤销表空间,用于临时存放修改前的旧数据;用户数据文件存放用户应用系统的数据;而二进制文件则包含服务器参数文件,记录Oracle数据库的基本参数信息,如数据库名、控制文件所在路径、日志缓冲大小等。
为便于管理和优化,Oracle数据库体系结构还包括表空间。表空间是数据库的最大逻辑划分区域,用来存放数据表、索引、回滚段等数据对象。每个表空间由一个或多个数据文件组成,每个数据文件只属于一个表空间。典型表空间包括SYSTEM表空间、SYSAUX表空间、UNDOTBS1表空间、USERS表空间等。SYSTEM表空间存放Oracle系统内部表和数据字典的数据;SYSAUX表空间主要存储除数据字典以外的其他数据对象;UNDOTBS1表空间用于临时存放修改前的旧数据;USERS表空间则是Oracle建议用户使用的表空间。
在实际工作中,数据库管理员(DBA)需要充分理解和熟悉这些存储结构,以确保数据库的高效运作和数据的安全性。通过使用企业管理器(OEM)和SQL*Plus等工具,DBA可以查看、修改数据库参数,监控数据库状态,并执行日常维护任务。