oracle内存结构概述,1.1 Oracle的内存结构

第1章 Oracle数据库架构概述

本书主要是探讨Oracle数据库的高级应用与管理,在开始本书的主题前,先来复习Oracle数据库的基本架构。

Oracle的基本架构由两块结构组合而成:内存结构(Instance)和实体结构(Database)。内存结构指的是在计算机上的一块内存空间,用于用户进行实体结构上的数据存取或数据交换,由于这块空间位于内存中,因此会随着数据库的打开而创建;当数据库关闭时,内存结构也就随之消失;而实体结构在Oracle里指的是数据实际存放的地方,不论数据库处于打开还是关闭的状态,它永远都会存在于操作系统上。简单来说,内存结构是暂时的,而实体结构则是***存在的。实体结构和内存结构的定义,如图1-1所示。

32f4d3fadabbd6b96f0df3c15316d412.png

图1-1  Oracle组成架构图

内存结构:由一些内存空间及进程(Process)组成,会随着数据库的打开与关闭而创建和消失。

实体结构:包含存在于存储介质上的一些文件,不会因为数据库的打开、关闭而创建和消失。

以下将针对Oracle的基本架构组织做简洁而快速的浏览,以协助读者在最短的时间内复习相关的Oracle数据库各项组织组件的功能与运行原理。

1.1  Oracle的内存结构

Oracle的内存结构由Oracle实例与其他进程共同组成。何谓Oracle实例?简单来说,Oracle实例指的是Oracle在操作系统所属的内存中创建的专用于Oracle数据库的内存空间,这一块内存空间是用来联系Oracle实体结构,并提供一个数据交换平台供用户使用的,然而,只建立实例并不代表用户或应用程序的用户就可以顺利地使用Oracle数据库,还必须加上其他的程序和内存空间,如程序全局区(Program Global Area,PGA)、用户全局区(User Global Area,UGA)、用户进程(User Process)与服务器进程(Server Process)等架构,才能让用户连接到Oracle,以顺利地进行作业。Oracle内存结构的概念如图1-2所示。

c39eef26fa9a017554467e780ae61b17.png

图1-2  Oracle内存结构示意图

Oracle内存结构由以下几个主要组件所组成:

系统全局区(System Global Area,SGA):主要功能是作为各种数据交换的暂存内存空间,而系统全局区中又划分为数据库高速缓冲区(Database Buffer Cache)、重做日志缓冲区(Redo Log Buffer)、共享池(Shared Pool)、Java池(Java Pool)、大型池(Large Pool)与流池(Stream Pool)等主要的内存块,而每个内存块都有不同的功能和运行方式。关于共享内存的高级管理的详细信息,请参阅第2.1节。

后台进程(Background Process):Oracle内存结构与实体结构之间的沟通桥梁。当实例打开时,有5个基本的后台进程会持续运行,可以根据需要使用它们,就如同Unix上的Daemand、NT上的Service,后台进程不会因为用户登录而增加,或是因其注销而减少。后台进程还可分为强制性后台进程和可选后台进程两大类。

强制性后台进程(Mandatory Background Processes):当Oracle打开时,必需的后台进程是缺一不可的。也就是说,当这些标准配备的后台进程突然中断,数据库也就等同崩溃。这些标准配备的后台进程依序如下:

DBWn(Database Writer):主要的工作是将数据库高速缓冲区中被改过的数据写回到数据文件(Data File)中。Oracle数据库为了执行效率,并不会直接存取硬盘,而会先到SGA中的数据库高速缓冲区中寻找,如果没有找到,才会去存取硬盘。而DBWn的工作就是负责保持Oracle内存和硬盘上的数据的一致性,它负责不定时地将内存中的脏缓冲区(Dirty Buffer)写到数据库里。一个Oracle实例最多可以有10个DBWn(DBW0~DBW9)。DBWn将Buffer取出并写到硬盘有两个主要的机制:先期写入协议(Write-ahead Protocol)机制与LRU(Least Recently Used)机制。

LGWR(Log Writer):主要的工作是将重做日志缓冲区中的记录写到重做日志文件(Redo Log File)里。Log Writer进程将来自SGA的重做日志缓冲区中的Redo Entry写到硬盘上。当事务(Transaction)被提交(Commit)时,LGWR会遵循先期写入协议,负责将重做日志缓冲区存储的数据更改记录写入联机重做日志文件内。

SMON(System Monitor):SMON执行两个主要的功能,***个是实例恢复,在数据库不正常中断后再度打开时,SMON会自动执行实例恢复,也就是会将联机重做日志中的数据写回到数据文件中。第二个是收集空间,除了执行实例恢复之外,SMON还有一个例行性的工作,就是将表空间内相邻的空间进行合并,但表空间必须是数据字典管理模式。

提示

Oracle数据库的恢复可分为两大类,实例恢复与介质恢复,实例恢复由SMON自动执行,当实例恢复无法成功地完成恢复作业时,就必须进行介质恢复,而介质恢复就是代表有人介入的手动恢复。

PMON(Process Monitor):PMON会监视数据库的用户进程。若用户的进程非正常中断,PMON会负责清理任何遗留下来的资源(例如,内存),并释放失效进程所保留的锁,然后从进程列表中删除已终止的进程。也就是说,当今天有一笔事务的前端程序突然脱机,这笔事务并不会结束,因为没有人下达提交指令;Oracle Server是根据服务器进程做动作的,而服务器进程是根据用户进程做动作的,如果用户进程中断了,那么服务器进程并不会知道而会一直停留等待,这时,PMON就负责检查有没有服务器进程所对应的用户进程停止了,如果有的话,就恢复那一笔事务。

CKPT(Checkpoint):主要负责更新数据库的***状态,动作的对象是数据文件和控制文件(Control File),实际上,它的动作很简单,只要求将数据库高速缓冲区中的东西写回到数据文件中,而真正做动作的是DBWn,当完成之后,CKPT就会在控制文件中做记录。每当经过一段固定的时间,DBWR就会把已修改过的数据库高速缓冲区中的脏缓冲区写回到数据库,这个时间点叫做检查点(Checkpoint),CKPT的功能就是告知DBWR进行这个动作;当检查点完成后,CKPT会更新控制文件和数据文件的文件头。这样在需要实例恢复时,就不需要检查点之前的数据,从而可以缩短启动时间。

提示

可能有人会问,DBWR不是有LRU机制吗?为何还要设置检查点呢?因为LRU是将最不常使用的数据写到硬盘中,而把较常使用的数据保存在数据库高速缓冲区中以减少I/O,但这会有一个盲点,就是在脱机时,这些数据只能从重做日志缓冲区中找回来,无形中会造成维护上的问题。所以CKPT的功能就是告知DBWR进行检查点的设置,但当DBWR要写回到数据文件时,会先去确认如果DBWR发现某些重做记录尚未写入联机重做日志文件(Online Redo Log File),就通知LGWR前来处理,之后DBWR才会真正去处理,这样,就可以确保数据被妥善存储。

可选后台进程(Optional Background Processes):当需要打开特殊功能时才会启动的进程,也就是说,当这些可选的后台进程突然中断时,数据库并不会因此而崩溃。这些可选后台进程的后台进程包含ARCn等。

软件代码区域(Software Code Area):是存放Oracle软件可执行程序的地方,同时软件代码区域也是属于Oracle实例的一部分。

程序全局区(Program Global Area,PGA):PGA是一块私有的内存块,包含服务器进程正在执行的工作信息。每一个服务器进程都有一个自己的PGA,而PGA中又划分为私有SQL区域、游标和SQL区域与会话内存。关于PGA的详细高级管理,请参阅第3.1节。

用户全局区(User Global Area,UGA):UGA主要用于存储用户特定的会话状态,UGA可能在SGA中分配,也可能在PGA中分配,具体取决于Oracle的网络会话方式,是使用多线程服务器模式(Multi-Thread Server)还是专用服务器模式(Dedicated Server)。关于UGA的详细高级管理,请参阅第3.2节。

其他进程(Other Process):是用户与Oracle内存结构之间的沟通桥梁。Oracle实例只负责两件事:系统全局区与后台进程,除此之外,都称为其他进程,例如,用户进程和服务器进程。这些其他进程并不属于Oracle实例,但却是用户或应用程序要进入Oracle数据库最重要的两个进程;用户进程将命令传给服务器进程,而服务器进程则是传给实例。关于PGA的高级管理,请参阅第3章。

【责任编辑:book TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值