Oracle数据库体系结构
完整的Oracle数据库系统通常由实例和数据库两部分组成。数据库是一系列物理文件的集合;实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间装载和打开一个数据库。数据库的主要功能是保存数据,实际上可以将数据库看作是存储数据的容器。数据库的存储结构也就是数据库存储数据的方式,Oracle数据库的存储结构分为逻辑存储结构和物理存储结构。
-
逻辑存储结构
在逻辑上,Oracle将保存的数据划分为一个个小单元来进行存储和维护,高级的存储单元由一个或多个低一级的存储单元组成。Oracle的逻辑存储单元从小到达一次为:数据块(Data Blocks、盘区( Extent)、段(Segments)和表空间(TableSpaces)。Oracl数据库由多个表空间组成,而表空间又由许多段组成,段由多个盘区组成,盘区又由多个数据块组成。
数据块是Oracle用来管理存储空间的最小单元,也是执行数据库输入输出操作的最小单位。在Oracle中,执行的IO操作以Oracle数据块为单位。Oracle块的大小是操作系统块大小的整数倍。Oracle 支持在同一个数据库中使用多种大小的块,与标准块大小不同的块称为非标准块。
盘区是一系列物理上连续存放的数据块所构成的Oracle存储结构,由一个或者多个数据库组成一个盘区。盘区是Oracle存储分配的最小单位。
段是由一系列盘区组成的,它不在是存储空间的分配单位,而是一个独立的逻辑存储结构。一个段只属于一个特定的数据库对象,每当创建一个具有独立段的数据库对象时,Oracle将为它创建一个段。根据段中存放的数据库对象类型,可以将段分为数据段、索引段、临时段、回退段和LOB段。
表空间是Oracle中可以使用的最大逻辑存储结构,在数据库建立的所有内容都被存储在表空间中。使用表空间将相关的逻辑结构组合在一起,表空间在物理上与数据文件相对应,每个表空间由一个或者多个数据文件组成。
-
物理存储结构
物理存储结构主要包括3类物理文件:数据文件、控制文件和重做日志文件,除此之外,Oracle数据库还提供了一些参数文件。
数据文件是操作系统文件,Oracle通过表空间创建数据文件,从硬盘中获取存储数据所需要的物理存储空间,一个数据文件只能属于以唯一的一个表空间。随着不断在表空间中创建和更新数据对象。表空间对应的数据文件的物理存储空间将被消耗殆尽,这时就需要为表空间分配更多的物理存储空间。
数据库控制文件包含了关于数据库物理结构的重要信息,通过在加载数据库时读取控制文件,Oracle才能找到自己所需要的操作系统文件。每个数据库必须至少拥有一个控制文件,一个控制文件只能属于一个数据库。在数据库的控制文件中包含有关该数据库物理结构的信息,控制文件中的主要信息包括数据库的名字、检查点信息、数据库创建的时间戳、所有的数据文件、重做日志文件、归档日志文件信息和备份信息等。
Oracle还提供了其他一些类型的文件,如参数文件,归档日志,文件跟踪和密码文件等。
-
实例的内存结构
内存结构是Oracle数据库体系结构中最为重要的部分之一,内存也是影响数据库性能的着因素实力的内存结构,从总体上看可以分为两部分SGA区和PGA区。
系统全局区由一组内存结构组成。系统全局区主要包含以下内存结构,数据缓冲区,共享池,重做日志文件,Java池和大型池等。
程序全局区是保存特定服务进程的数据和控制信息的内存结构,这个内存结构是非共享的,只有服务进程本身才能够访问它自己的PGA区。
-
实例的进程结构
在Oracle系统工作过程中,主要涉及如下进程,用户进程,服务器进程和后台进程。当用户执行一个Oracle应用程序或者启动一个Oracle工具时,Oracle将创建一个用户进程来执行相应的用户任务。服务器进程就是代表用户会话完成工作的进程,应用向数据库发送了的SQL语句就是由这些进程接收并执行的。Oracle具有一组后台进程,保证数据库运行所需的实际维护任务顺利完成。
-
数据字典
数据字典是Oracle数据库的核心组件,由一系列用对于用户而言是只读的基础表和视图组成,它保存了关于数据库本身以及其中存储的所有对象的基本信息,可以认为数据字典记录的数据库实例自身的重要信息。为了方便用户查看数据字典中的信息,这些信息通过表和视图的形式组织起来,数据字典和师徒都保存在system表空间中。数据库用户由于权限不同所能访问的数据库字典视图的数量和类型也不同。