
2.2 Oracle数据库体系结构
为了满足生产数据库的需求,Oracle设计了如图2-1所示的体系结构,该体系结构包括实例(Instance)、数据库文件、用户进程(User process)、服务器进程(Server process)以及其他文件,如参数文件(Parameter file)、密码文件(Password file)和归档日志文件(Archived log file)等。

图2-1 Oracle数据库体系结构
其中,数据库实例包括SGA(系统全局区)和一系列后台管理、监视进程,数据库包括三种文件:数据文件(Data files)、控制文件(Control files)和重做日志文件(Redo log files)。数据库实例和数据库是Oracle数据库体系结构的核心部分,DBA很重要的工作就是维护实例和数据库本身的正常运行。
本节将依次介绍数据库服务器(包括实例和数据库)和实例、数据库的物理结构、密码文件和参数文件以及归档日志文件。
2.2.1 Oracle服务器和实例
Oracle服务器和实例是非常重要的两个概念,这里的服务器不仅仅是物理概念,还包括系统进程,而实例则是DBA经常维护的对象。下面依次介绍实例和服务器。
1.Oracle实例(instance)
Oracle实例就是由一些内存区和后台进程组成。实例的组成如图2-2所示,从实例的组成图可以看出实例由SGA和一些后台进程组成,这些内存区包括数据库高速缓存、重做日志缓存、共享池、流池以及其他可选内存区(如Java 池),这些池也称为数据库的内存结构,我们在2.4节会详细介绍。后台进程包括系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、日志写进程(LGWR)、检验点进程(CKPT)、其他进程(SMON)(如归档进程、RECo进程等),这些数据库系统进程忠于职守、相互协作完成数据管理任务。

图2-2 Oracle实例(Instance)组成图
要访问数据库必须先启动实例,实例启动时,先分配内存区,然后再启动后台进程,后台进程执行库数据的输入、输出以及监控其他Oracle进程。在数据库启动过程中有5个进程是必须启动的,分别是系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、日志写进程(LGWR)和检验点进程(CKPT),否则实例无法创建。数据库启动过程中,我们可以在告警日志(alertSID.ora)中看到详细的过程,在后面章节会详细介绍。
注意
在实践中,为了方便通过数据库工具实现数据库在计算机重启时自动启动,如果用户安装了其他占用大量内存的应用软件,可能会造成数据库启动失败,此时往往是因为内存不足,操作系统无法为Oracle分配SGA,必需的5个进程也无法启动。
2.Oracle服务器(server)
Oracle服务器由数据库实例和数据库文件组成,它就是我们经常说的数据库管理系统(DBMS)。数据库服务器的组成如图2-3所示。

图2-3 Oracle服务器的组成
数据库服务器除了维护实例和数据库文件外,还在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区,在2.4.5节详解)。
2.2.2 Oracle数据库物理结构(文件组成)
我们都知道,数据库是运行在操作系统之上的,数据库的最终目的就是存储和获取相关的数据,这些数据实际上存储在操作系统文件中,这些操作系统文件组成Oracle数据库的物理结构。
Oracle数据库的物理结构就是指数据库中的一系列操作系统文件,Oracle数据库由下列三类文件组成。
● 数据文件(datafiles):数据文件包含数据库中的实际数据,是数据库操作中数据的最终存储位置。
● 控制文件(controlfile):包含维护数据库和验证数据库完整性的信息,它是二进制文件。
● 重做日志文件(redo file):重做日志文件包含数据库发生变化的记录,在发生故障时用于数据恢复。
2.2.3 Oracle数据库参数文件和密码文件
虽然参数文件和密码文件不是Oracle的数据库文件,但却是Oracle数据库不可少的两个文件。
在参数文件(parameter file)中定义了数据库实例的特性。在参数文件中包含为SGA中内存结构分配空间的参数,如分配数据库高速缓冲区的大小等,参数文件是正文文件,可以使用操作系统文本编辑器查看,如在Windows操作系统中使用记事本工具。
密码文件(password file)授予用户启动和关闭数据库实例,在刚安装数据库时,Oracle的默认用户名和密码就存储在密码文件中,Oracle可以借此判断用户的操作权限。
另外Oracle数据库还有归档日志文件。归档日志文件是日志文件的脱机备份,在发生故障后,进行数据恢复时可能使用该文件。