Oracle体系结构
一.概述
体系结构主要用来分析数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。
在Oracle数据库管理系统中有3个重要概念需要理解:实例(Instance)、数据库(Database)、数据库服务器(Database Server)
实例:一组Oracle后台进程以及在服务器中分配的共享内存区域。
数据库:由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理文件集合。
数据库服务器:管理数据库的各种软件工具和实例及数据库3个部分。
相互之间的关系:实例用于管理和控制数据库,而数据库为实例提供数据。
一个数据库可以被多个实例装载和打开,而一个实例在其生存期内只能装载和打开一个数据库。
存储结构:数据库的主要功能就是存储数据,数据库存储数据的方式就称为存储结构。
逻辑存储结构:用于描述Oracle内部组织和管理数据的方式。
物理存储结构:用于展示Oracle在操作系统中的物理文件组成情况。
注:启动Oracle数据库服务器实际上是在服务器的内存中创建一个Oracle实例,然后用这个实例来访问和控制磁盘中的数据文件。
当用户连接到数据库时,实际上连接的是数据库的实例,然后由实例负责与数据库进行通信,最后将处理结果返回给用户。
二.逻辑存储结构
是Oracle数据库存储结构的核心内容,对Oracle数据库的所有操作都会涉及其逻辑存储结构。
Oracle的逻辑存储结构是一种层次结构,主要由表空间、段、数据区和数据块等概念组成,具体如下图:
数据块:由上图可见,数据块是Oracle逻辑存储结构中的最小逻辑单位,也是执行数据库输入/输出操作的最小存储单位。
Oracle数据存放在“数据块”中,而不是“操作系统块”中,通常“Oracle数据块”是“操作系统块”的整数倍。
数据区:是由一组连续的Oracle数据块所构成的Oracle存储结构,一个或多个数据块组成一个数据区,一个或多个数据区再组成一个段。
当一个段中的所有空间被使用完后,Oracle系统将自动为该段分配一个新的数据区。
可见,数据区是Oracle存储分配的最小单位,在Oracle数据库中,分配存储空间就是以数据区为单位的。
使用数据区的目的是用来保存特定数据类型的数据,也是表中数据增长的基本单位。
段:是由一个或多个数据区构成,它不是存储空间的分配单位,而是一个独立的逻辑存储结构,用于存储表、索引或簇等占用空间的数据对象。
段内包含的数据区可以不连续,并且可以跨越多个文件,使用段的目的是用来保存特定对象,Oracle数据库通常有以下4种类型的段:
(1).数据段:数据段中保存的是表中的数据记录。
当表中的数据量增大时,数据段的大小自然也随着变大,其增大过程是通过向其添加新的数据区来实现的。
(2).索引段:索引段中包含了用于提高系统性能的索引。
一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。
(3).回滚段:回滚段(也称作撤销段)中保存了回滚条目,Oracle将修改前的旧值保存在回滚条目中。
利用这些信息,可以撤销未提交的操作,以便为数据库提供一致性和回滚未提交的事务。
(4).临时段:当执行创建索引、查询等操作时,Oracle可能会使用一些临时存储空间,用于暂时性地保存解析过的查询语句以及在排序过程中产生的临时数据。
比如在执行CREATE INDEX、SELECT ORDER BY、SELECT DISTINCT、SELECT GROUP BY等SQL语句时,就会为其分配临时段。
表空间:Oracle使用表空间将相关的逻辑结构组合在一起,表空间是数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象。
表空间与数据文件相对应,Oracle数据的存储空间在逻辑上表现为表空间,而在物理上表现为数据文件。
举例来说,表空间相当于操作系统中的文件夹,而数据文件就相当于文件夹中的文件,所以一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间。
Oracle默认创建的主要表空间:
(1).SYSTEM表空间(系统表空间):它用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。
表空间中数据文件个数不是固定不变的,但不赞成将用户创建的表、索引等存放在系统表空间中。
(2).SYSAUX表空间:它是Oracle 11g新增加的表空间,是随着数据库的创建而创建的,它充当SYSTEM的辅助表空间,降低了SYSTEM表空间的负荷。
它主要存储除数据字典以外的其他数据对象,一般不存储用户的数据,由Oracle系统内部自动维护。
(3).UODO表空间(撤销表空间):它用于存储撤销信息的表空间。
(4).USERS表空间(用户表空间):它是Oracle建议用户使用的表空间,可以在这个表空间上创建各种数据对象。
除了Oracle系统默认创建的表空间外,用户可根据应用系统的实际情况及其所要存放的对象类型创建多个自定义的表空间,以区分用户数据和系统数据。
三.物理存储结构
相对逻辑存储结构来说,物理存储结构比较具体和直观,它用来描述Oracle数据在磁盘上的物理组成情况。
Oracle数据库的物理存储结构由多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、密码文件和警告日志文件等。
数据文件:用于保存用户应用程序数据和Oracle系统内部数据的文件。
控制文件:是一个二进制文件,它记录了数据库的物理结构,主要包含数据库名、数据文件与日志文件的名字和位置、数据库建立日期等信息。
日志文件:主要功能是记录对数据所做的修改。
服务器参数文件:是一个二进制文件,用来记录Oracle数据库的基本参数信息,如数据库名、控制文件所在路径、日志缓冲大小等。
密码文件:Oracle系统用于验证sysdba权限的二进制文件。
警告文件:是一个存储在Oracle系统目录下的文本文件,用来记录Oracle系统的运行信息和错误信息。
跟踪文件:包括后台进程跟踪文件和用户进程跟踪文件。
四.服务器结构
Oracle服务器主要由实例、数据库、程序全局区和前台进程组成。
五.数据字典
数据字典是Oracle存放关于数据库内部信息的地方,用来描述数据库内部的运行和管理情况。
当用户操作数据库遇到困难时,就可以通过查询数据字典来提供帮助信息。
数据字典的名称由前缀和后缀组成,使用下划线连接,其代表的含义如下:
dba_:包含数据库实例的所有对象信息。
v$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图。
user_:记录用户的对象信息。
gv_:分布式环境下所有实例的动态视图,包含系统管理和系统优化使用的视图。
all_:记录用户的对象信息机被授权访问的对象信息。