数据库的内存结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统全局区域(SGA)

大型池(Large Pool)

在SGA中大型池是可选的缓冲区。它可以根据需要有管理权进行配置。它可以提供一个大的区以供象数据库的备份与恢复等操作。

Oracle实例的内存结构组织包含在称为系统全局区域(System Global Area,SGA)的内存区域中。SGA在虚拟内存中进行分配,用于存放Oracle服务器进程。SGA内存结构组织包括共享池、数据库缓冲区高速缓存以及重做日志缓冲区,许多进程共享SGA。

1.共享池

共享池包括两个组件----库高速缓存和数据字典高速缓存。库高速缓存和数据字典高速缓存。库高速缓存储存当前最新使用的SQL语句及其执行计划。数据字典高速缓存则储存最新使用的数据字典信息,如表的定义、用户名和权限等。共享池的大小可以影响数据库的性能,在OLTP环境中更是如此。

2.数据库缓冲区高速缓存

当用户提交一个SQL查询时,为完成请求,服务器进程先查找数据库缓冲区高速缓存中的数据块。如果数据库缓冲区高速缓存中没有用户要求的数据块,那么服务器进程必须从物理设备中读取数据块,并在该缓冲区高速缓存中存放此数据的备份,这样,对相同数据块的后续请求就可以在内存中找到,而无需物理读取。

3.重做日志缓冲区

数据进行的所有更改都存储在重做日志缓冲区中,这些记录在以后会被拷贝到重做日志文件中。

程序全局区域(PGA)

程序全局区域(Program Global Area,PGA)是包含一个单个服务器进程数据的内存区域。在用于专门的服务器配置时,PGA由排序区域、会话信息、游标状态和堆栈空间组成。PGA在一个进程开始时进行分配,并在进程终止时释放。

数据库实例

为了访问数据库中的数据,Oracle使用一组为所有用户共享的后台进程。此外,还有一些存储结构(统称为系统全局区域)用来存储最近从数据库查询的数据。通过减少对数据库文件的I/O次数,这些存储区域可以改善数据库性能。

Oracle数据库实例通常称为数据库服务器,用来访问数据库文件集的存储结构及后台服务进程的集合。一个数据库可以被多个实例访问(对应于Oracle的并行服务器选项)。1.服务器启动和关闭

在用户能够操作Oracle数据库之前,必须先对数据库服务器执行一个启动操作。这个过程包括启动一个数据库实例、数据库实例挂上数据库和打开数据库。在服务器启动之后,数据库就可以被使用了。

相反,通过执行数据库服务器关闭操作,可以使一个数据库不可用。服务器关闭是服务器的反过程:首先要关闭数据库,然后从实例卸载数据库,最后关闭实例。在服务器关闭后,用户不能访问数据库,知道重新启动服务器才可以再次访问。

2.服务器连接

在一个Oracle实例启动并运行后,可以建立于服务器的连接来执行数据库工作。在后台,数据库实例工作机制负责完成用户请求。在同一时间,在保持数据库完整的同时,数据库实例自动地保护全部事务的工作。

Oracle数据库的进程结构

Oracle进程主要有两类:用户进程和服务器进程。

用户进程在用户方工作,它向服务器进程请求信息。SQL*Plus、Oracle Forms、Report Builder都是用户进程的例子,是用户与数据库通信实现数据交换和访问的常用工具。服务器进程则接受用户进程发出的请求,并根据请求与数据库通信,通过这些通信完成用户进程对数据库中数据的处理要求。

服务器端后台进程

每个Oracle数据库实例(即数据库服务器)包含一系列的服务器后台进程。后台进程是一个执行指定系统功能的服务进程。在一个Oracle数据库实例中最常见的服务器进程包括以下几种。

1.数据库写入进程

当修改一些数据库数据时,一个代表当前用户会话的工作的服务进程从数据文件中读取一个或多个数据块进入服务器的内存,然后Oracle在服务器的内存中做出用户所要求的更改。最终,数据库写入进程(Database Writer,DBWR)将负责把内存中已被修改的数据块写入到数据库的文件中。它是仅有的两种能够对构成Oracle

数据库的数据文件进行写入的进程之一。在某些操作系统下,Oracle允许有多个数据库写入进程。使用多个数据库写入进程主要是出于性能方面的考虑。

2.日志写入进程

日志写入进程(Log Writer,LGWR)是一个专门用于将重写项写入重做日志的进程。

重做日志是对数据库进行的所有事务的一个拷贝。这样做的目的是使Oracle能够从不同的错误中恢复,因为重做日志中保存着所有事务的一份拷贝,所以Oracle没有必要再内存数据修改后马上就将这种修改反映到数据文件中。这样做可以节省资源,提到系统的性能。日志写入进程是惟一一个能够写重做日志的进程,同时也是Oracle 数据库中惟一一个能够读重做日志的进程。

3.归档进程

归档进程(ARCH)是一个可选进程。重做事务日志以顺序的方式记录,填满一个日志后,就通过日志交换转向另一个可用的重做日志。当数据库工作在ARCHIVELOG模式时,数据库会在日志交换时生成重做日志的拷贝,这样做的目的是当数据库又交换至这个重做日志时,这个用于恢复目的的文件内容有一个副本。归档进程自动地在日志写入进程将事务日志文件填写重做项后备份这些事务日志文件。如果一个数据库出现严重的错误,Oracle将使用数据库备份和归档事务日志来恢复数据库和提交全部事务。

4.检查点进程

检查点进程(CKPT)是一个可选进程。在操作Oracle数据库时,常常会提出查找数据的请求。系统从数据库中找出这些数据并将其放进一块内存区中,这样就可以在内存中操作这些数据。有些用户常常修改这些数据,修改后的数据必须写回原来的数据文件里。当重做日志交换时,将出现检查点进程。在出现检查点进程时,Oracle 要把内存中已改动的数据块中的信息写回磁盘。除此之外,Oracle还要将交换重做日志的情况通知控制文件。这些任务都是由检查点进程来完成。

5.系统监控进程

系统监控进程(System Monitor,SMON)是在数据库系统启动时执行恢复工作的强制性进程,它负责执行许多内部操作,如定期合并表空间中文件数据的空闲区间等。

相关文档
最新文档