Oracle体系结构

来源:互联网 发布:java中对象的生命周期 编辑:程序博客网 时间:2024/04/27 03:34

 在使用一个软件之前,我们应该对这个软件的基本原理有个初步的了解。比如你至少应该知道这个软件是干什么用的。特别是Oracle这种大型软件系统,千万别以为你能马上就掌握它,因此之前我们应该对他有个大致性的了解,否则会让你很郁闷的。那么在使用Oracle之前,我们先来了解一下Oracle的体系结构。(以Oracle9i为例)
 Oracle数据库大致可以分成两个主要部分:
 Oracle实例(Oracle Instance)
 Oracle9i 数据文件(Oracle9i Database Files)
 
 一、Oracle实例
 首先来看看什么是Oracle实例。从书面上解释是指数据库服务器的内存及相关处理程序。也就是说数据库文件的操作都是通过这个实例来完成的。因此它又被称为Oracle数据库引擎。它由系统全局区(SGA)和后台处理程序组成。
 1、系统全局区(SGA)
 当我们激活Oracle时,系统会先则内存中规划一个固定区域,用来存储每个用户所存取的数据,以及Oracle运行时必备的系统信息。我们就称此区域为系统全局区,简称为SGA。系统全局区包含了几个重要的区域。分别是:
 块缓冲区高速缓存(Data Buffer Cache)
       块缓冲区高速缓存是SGA的主要成员。他的主要作用是将需要读取或者存取的数据块进行一个缓冲,从而减少太过频       繁的对磁盘进行读和写的操作。所有同时上线的用户都可以共享这个区域。
 重做日志缓冲区(Redo Log Buffer)
       该区域是将所有记录数据操作的信息都存储在该缓冲中,在适当的时机由LGWR进程将他们写入到磁盘的日志文件        中。
 共享池(shared Pool)
       共享池是SGA中最关键的内存片断。共享池分为两个部分:SQL语句缓冲和数据字段缓冲。比如当一个用户提交了个       SQL语句后,Oracle首先会对这个SQL语句进行分析,并得出结果,然后将结果保存在共享池的SQL缓冲器中。当下次       再执行该语句时,Oracle就能跳出这个分析过程,直接得到结果。这样可以减少系统运行的时间。数据字典缓冲区是       专门为数据字典准备的一块缓冲池,供Oracle内部使用。
 其他区域
 例如:Large Pool等
 2、后台处理程序
 除了SGA外,Oracle也会自动激活几个特定的后台处理程序。其中包括:
 数据写进程(DBWR):负责将块缓冲区的数据写入到磁盘中的数据文件里。
 日志写进程(LGWR):将重做日志缓冲区的信息写入到重做日志文件中。
 系统监控(SMON):如果数据库遇到不正常关闭的情况,比如突然断电等。那么再次启动数据库时由SMON进程进行必要        的数据修复操作。
 进程监控(PMON):负责在一个Oracle进程失败时清理资源
 检查点进程(CKPT):负责在每当缓冲区中的更改永久地纪录在数据库中时,更新控制文件和数据文件中的数据库状态信          息。
 归档进程(ARCH):在每次日志切换时把已满的日志组进行备份归档。
 除了以上的几个后台处理程序外,Oracle在运行时还会有些其他后台处理程序,限于所知有限也只写出这么多。

 二、数据文件
 任何一个数据库肯定是由数据文件组成的,那么数据文件保存着数据库里的所有信息。在Oracle中可以从两个角度来理解这个数据文件。一是物理结构,二是逻辑结构。
 1、物理结构
 物理结构也就是指在磁盘上这些数据文件的构成方式。
 数据文件
 重做日志文件
 控制文件
 参数文件
 归档文件
 口令文件
 其中我们只需要了解数据文件及重做日志文件的作用就行了。
 2、逻辑结构

 从逻辑角度来分析数据文件,能够使我们对数据库的组成形式有个更形象的理解。在Oracle中,数据的最小存储单位是块。多个块构成区。在Oracle中配制存储空间时,并不是以块为单位,而是以区为单位。根据不同的数据我们将区划分成不同的区域,于是这些区域就称之为段。这些段是包含在表空间中的。也就是说Oracle的数据文件从逻辑结构来看,最大单位就是表空间。所有的数据都是存在表空间中的。Oracle安装好后,默认就会有很多的表空间,比如System,Temp,USER等等。他们存储着不同的数据,而这些数据一般是由Oracle自身使用的。我们如果要创建数据库,应该新建一个表空间,将数据信息存放在我们自己创建的表空间里。而不是直接使用Oracle默认创建的表空间。