|
|
|
|
移动端

3.7.2 Oracle的物理数据库结构

《数据库系统:设计、实现与原理(基础篇)(原书第6版)》第3章数据库的结构与Web,本章我们首先考察一些目前已投入使用的不同系统的结构,然后讨论有关Web服务和面向服务的结构(SOA)的进展。本节为大家介绍Oracle的物理数据库结构。

作者:宁洪/贾丽丽/张元昭 译来源:机械工业出版社|2017-09-28 14:41

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


3.7.2 Oracle的物理数据库结构

Oracle中主要的物理数据库结构是数据文件、重做日志文件和控制文件。

数据文件

每个Oracle数据库都有一个或多个物理数据文件。逻辑数据库结构(如表和索引)中的数据是以数据文件这样的物理形式存储的。如图3-22所示,一或多个数据文件形成一个表空间。最简单的Oracle数据库可能只有一个表空间和一个数据文件。更复杂的数据库可能会包含四个表空间,每个表空间中有两个数据文件,因此总共有八个数据文件。

重做日志文件

每个Oracle数据库都有一个由两个(或更多)重做日志文件所构成的集合,它记录了对数据进行的所有更改,其目的是便于以后的恢复。某个故障可能使得修改了的数据未能永久地写入数据文件,那么可从重做日志中获取这个修改,从而防止丢失工作。我们将在22.3节中详细讨论恢复机制。

控制文件

每个Oracle数据库都有一个控制文件,它包含了所有其他文件(这些文件都参与了数据库的组成)的一个列表,例如,数据文件和重做日志文件。为了更好地对数据进行保护,最好有多个控制文件(可以将多个副本写入多个设备中)。同样,最好也保存多个重做日志文件的副本。

Oracle实例

Oracle实例由Oracle进程和对数据库中的信息进行存取所需的共享内存组成。实例由Oracle的后台进程、用户进程,以及由这些进程所使用的共享内存组成,如图3-24所示。其中,Oracle使用共享内存对数据和索引进行高速缓存,并对共享程序代码进行存储。共享内存可以划分为不同的内存结构,其中最基本的是系统全局区(System Global Area,SGA)和程序全局区(Program Global Area,PGA)。

系统全局区。SGA是共享内存的一片区域,用来存储某个Oracle实例的数据和控制信息。在Oracle实例开始时分配SGA,关闭时回收SGA。SGA中的信息由下列内存结构组成,其中的每个结构都有固定的大小,并且都在实例启动时创建:

数据库高速缓冲区。它包含了数据库最近使用过的数据块。这些数据块可以是已修改但还没写入磁盘的数据(脏块),也可以是没被修改的数据,还可以是修改后已写入磁盘的数据(干净块)。存储最近使用过的数据块可使大多数活跃的数据缓冲在内存,从而减少I/O,提高系统的性能。22.3.2节中将讨论缓冲区管理策略。

重做日志缓冲区。它包含了重做日志文件中的项,可用于以后的恢复(参见22.3节)。后台进程LGWR负责把重做日志缓冲区的内容写到磁盘上活跃的联机重做日志文件中。

共享池。它包含了一些共享的内存结构,如库高速缓存(library cache)中的共享SQL区和数据字典中的内部信息。共享SQL区中包含SQL查询的分析树和执行规划。如果多个应用程序都用到了同一个SQL语句,那它们都能对共享SQL区进行存取,从而减少了所需的内存数量,也减少了查询处理所需的分析和执行时间。第23章将讨论查询处理。

大池。这是一片可选的内存区,用于大片内存分配(例如,缓冲恢复管理器(RMAN)的大量I/O内容)。

Java池。这片区域存储所有会话专有Java代码和Java虚拟机内的数据。

流池。这片区域用于存储缓冲的队列消息并为Oracle流提供内存。Oracle流使信息流(如数据库事件和数据库变化)能被管理并潜在地传播到其他数据库。

固定SGA。这是一个内部管理区,它包含各种各样的数据,如关于数据库状态和Oracle实例的信息,以及Oracle进程间通信的信息,比如锁信息等。

程序全局区。PGA是共享内存的一片区域,用来存储一个Oracle进程的数据和控制信息。PGA由Oracle Database在一个Oracle进程开启时创建。每个服务器进程和后台进程都有一个PGA。其大小和内容由Oracle服务器的安装选项决定。

客户进程。每个客户进程都代表一个客户与Oracle服务器的一个连接(例如,使用SQL*Plus或是Oracle Forms应用程序)。客户进程操纵着用户输入、与Oracle服务器进程的通信及显示客户所需的信息,如果需要,还可以将这些信息转换为更有效的形式。

Oracle进程。Oracle(服务器)进程根据客户需求执行相应功能。Oracle进程可以分成两类:服务器进程(处理相连的用户进程所发出的请求)和后台进程(执行异步I/O,并提供了更大的并行性,从而提高了系统的性能和可靠性)。在图3-24中给出了如下的后台进程:

数据库写回器(DBWR)。DBWR进程负责将已修改的(脏的)数据块从SGA高速缓存区写回到磁盘的数据文件中。一个Oracle实例至多有10个DBWR进程,从DBW0~DBW9依次命名,用来处理多个数据文件的I/O。Oracle采用了一种称为先写日志的技术(参见22.3.4节),这就意味着,每当需要释放缓冲区时,DBWR进程就会批量地执行写出,而不用等到事务的提交点。

日志写回器(LGWR)。LGWR进程负责将数据从日志缓冲区写回到重做日志文件中。

检查点(CKPT)。检查点是一个事件,在这个事件中,所有已修改的数据库缓冲区都会由DBWR写回到数据文件中(参见22.3.2节)。CKPT进程负责通知DBWR进程执行检查点,并更新数据库中的所有数据文件和控制文件,使它们与最近的检查点一致。CKPT进程是可选的,如果将其省略,则由LGWR进程来完成它的工作。

系统监视器(SMON)。当实例从一个出错点重新开始时,由SMON进程负责对系统事故进行恢复。因系统崩溃而终止的事务的恢复也包括在内。SMON还充当了数据库的磁盘碎片整理程序,它可以将数据文件中的空闲区间进行整合。

进程监视器(PMON)。PMON进程负责跟踪对数据库进行存取的用户进程,并在系统崩溃后对其进行恢复。它将清除所有的遗留资源(如内存),并释放由故障进程所加的锁。

归档器(ARCH)。当在线的重做日志文件被写满时,由ARCH进程负责将它们复制到归档器上。系统最多可设定10个ARCH进程,依次命名为ARC0 ~ ARC9。其余的归档器进程可以在有读写指令时由LWGR启动。

恢复器(RECO)。RECO进程负责清除出错的或是挂起的分布事务(参见25.4节)。

锁管理服务器(LMS)。如果采用了Oracle Real Application Cluster选项,则由LMS进程负责实例间的加锁操作。

闪回写和恢复写(FWRW)。当设置闪回或遇到保证还原点,FWRW进程将闪回数据写入闪回恢复区的闪回数据库日志。闪回工具使管理员和用户能回看和操纵一个Oracle实例以前的状态,而无需将数据库恢复到以前的时间点。

易处理性监控(MMON)。这个进程执行许多与Automatic Workload Repository(AWR)相关的任务。AWR负责存储一些历史性能数据,包括关于系统、会话、单个SQL语句、段和服务的累加的统计数据。MMON进程负责包括每小时收集一次统计信息并产生一个AWR快照在内的许多工作。

易处理性监控Lite(MMNL)。这个进程负责将SGA中Active Session History(ASH)缓冲区里的统计数据写入磁盘。当ASH 满时MMNL写入磁盘。

在前面的描述中大多使用了“进程”这个词,目前一些系统会在实现中用线程来取代进程。

进程之间相互作用的实例

下面的例子给出了一个Oracle配置,在一台机器上运行服务器进程,而在另一台机器上有一个连接到服务器上的用户进程。Oracle使用称为Oracle Net Services的通信机制来实现不同机器上的进程之间的通信。Oracle Net Services支持各种各样的网络协议,例如TCP/IP。该服务还可以实现各网络协议之间的转换,因此,允许使用一种协议的客户端与使用另一种协议的数据库服务器交互。

(1)客户端以用户进程运行一个应用程序。客户应用程序通过Oracle Net Services的驱动程序建立与服务器的连接。

(2)服务器检测应用程序所发出的连接请求,并创建一个(专用的)服务器进程代表用户进程。

(3)用户执行一条SQL语句,修改表中的某行数据并提交事务。

(4)服务器进程接收这条语句,并检查共享池看共享SQL区中是否包含这条SQL语句。如果找到了这样一个共享SQL区,服务器将检查用户对请求数据的访问权限,若通过则用前面找到的共享SQL区处理这一语句。如果没有找到,则分配一个新的SQL区来对这条语句进行分析和处理。

(5)服务器进程将从数据文件(表)或是SGA中获取所需的数据。

(6)服务器进程修改SGA中的数据。DBWR进程在合适时,会将已修改的数据块永久地写回到磁盘上。事务提交后,LGWR进程立刻将事务记录到在线的重做日志文件中。

(7)服务器进程通过网络将成功/失败消息发送到应用程序。

(8)在这段时期内,其他的后台进程均在运行,时刻注意可能需要干涉的任何情况。另外,Oracle服务器还管理着其他用户事务,并防止众事务因对同一数据进行操作引发的冲突。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

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

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

系统分析师技术指南

本书对前沿而又成熟的系统分析技术和方法进行了讨论,包括CMM与过程改进、J2EE与NET平台、中间件及相关技术、应用服务器、Web 服务、数据...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊