前面我们说过,Oracle的实例由内存结构和一组后台的进程组成。Oracle的后台进程比较重要的包括以下几个:
·SMON
·PMON
·DBWR
·LGWR
·ARCH
·CKPT
下面我们将逐一介绍各个进程的作用。
一、SMON
SMON(System Monitor)-系统监控进程,在实例启动时执行实例恢复,并负责清理不再使用的临时段。
SMON进程要完成所有“系统级”任务。PMON感兴趣的是单个的进程,而SMON与之不同,它以系统级为出发点,这是一种数据库“垃圾收集器”。SMON所做的工作包括:
·清理临时空间
·合并空闲空间
·针对原来不可用的文件恢复活动的事务
·执行RAC中失败节点的实例恢复
·清理OBJ$
·收缩回滚段
·“离线”回滚段
二、PMON
PMON (进程监控程序)后台进程清除失败用户的进程,释放用户当时正在使用的资源。PMON负责释放锁并使其可以被其他用户使用。同SMON一样,PMON周期性地唤醒检测它是否需要被使用。
PMON负责在出现异常中止的连接之后完成清理-释放资源,回滚未提交的事务工作
PMON还负责监视其他的Oracle后台进程,并在必要时重启这些后台进程。
PMON还会为实例做另外一件事,这就是向Oracle TNS监听器注册这个实例。
三、DBWR
DBWR (数据库写入程序)后台进程负责管理数据块缓存区及字典缓存区的内容。它以批方式把修改块从SGA写到数据文件中。
尽管每一个数据库实例只有一个SMON和一个PMON进程在运行,但是根据平台和操作系统的不同,用户可以同时拥有多个DBWR进程。
DBWn会写出缓冲区缓存中的脏块,通常是为了在缓存中腾出更多的空间(释放缓存区来读入其他数据),或者是为了推进检查点(将在线重做日志文件中的位置前移,如果出现失败,Oracle会从这个位置开始独取来恢复实例。)
可以看到,DBWn的性能可能很重要。如果它写出块的速度不够快,不能很快地释放缓冲区,就会看到Free Buffer Waits和Write Complete Waits的等待数和等待时间开始增长。可以配置多个DBWn;实际上可以配置多达20个的DBWn。
最好的情况下,DBWn使用异步I/O将块写至磁盘。采用异步I/O,DBWn会收集一批要写的块,并把它们交给操作系统。DBWn并不等待操作系统真正将块写出;而是立即返回,并收集下一批要写的块。当操作系统完成写操作时,它会异步地通知DBWn写操作已经完成。这样,与所有的操作都串行进行相比,DWBn可以更快地工作。
根据定义,块写入器进程会把块写出到所有磁盘,即分散到各个磁盘上;也就是说,DBWn会做大量的分散写。执行一个更新时,你会修改多处存储的索引块,还可能修改随机地分布到磁盘上的数据块。另一方面,LGWR则是向重做日志完成大量的顺序写。这是一个很重要的区别。
分散写比顺序写慢多了。通过在SGA中缓存脏块,并由LGWR进程完成大规模顺序写,这样可以提升性能。DBWn在后台完成它的任务(很慢),而LGWR在用户等待时完成自己的任务(这个任务比较快),这样我们就能够得到更好的整体性能。
四、LGWR
LGWR(日志写入程序)后台进程负责把联机重做日志缓冲区的内容写入联机重做日志文件。
LGWR分批将日志条目写入联机重做日志文件。重做日志缓冲区条目总是包含着数据库的最新状态,这是因为DBWR进程可以一直等待到把数据块缓冲区中的修改数据块写入到数据文件中。
LGWR是数据库正常操作时唯一向联机重做日志文件写入内容并从重做日志缓冲区直接读取内容的进程。与DBWR对数据文件执行的完全随机访问相反,联机重做日志文件以序列形式写入。如果联机重做日志文件是镜像文件, LGWR同时向镜像日志文件中写内容。
对于Oracle 8,可以创建多个LGWR I/O从进程以改善向联机重做日志文件的写入性能,其个数由数据库的init.ora文件的LGWR _IO_SL AVES参数决定。在Oracle 8 i中,这个参数已不能用, LGWR I/O从进程由DBWR _ IO _SLAVES设置值派生而来。
如果满足以下某个条件,LGWR进程就会把重做日志缓冲区的内容刷新输出到磁盘上:
·每3秒钟会刷新输出一次
·任何事务发出一个提交时
·重做日志缓冲区1/3满,或者已经包含1MB的缓冲数据
由于这些原因,分配超大的重做日志缓冲区并不实际,Oracle根本不可能完全使用这个缓冲区。
五、ARCH
LGWR后台进程以循环方式向联机重做日志文件写入;当填满第一个日志文件后,就开始向第二个日志文件写入;第二个日志文件填满后,再向第三个日志文件写入。一旦最后一个重做日志文件填满, LGWR就开始重写第一个重做日志文件的内容。
当Oracle以ARCHIVELOG (归档日志)模式运行时,数据库在开始重写重做日志文件之前先对其进行备份。这些归档的重做日志文件通常写入一个磁盘设备中。也可以直接写入磁带设备中,但是这往往要增加操作员的劳动强度。
这种归档功能由ARCH (归档进程)后台进程完成,利用该性能的数据库在处理大数据事务时将遇到重做日志磁盘冲突问题,这是因为当LGWR准备写入一个重做日志文件时, ARCH正准备读取另一个。如果归档日志目标磁盘写满,数据库还将遇到数据库锁定问题。此时,ARCH冻结,禁止LGW R写入;从而禁止在数据库中出现进一步的事务处理;这种情况一起延续到归档重做日志文件的空间清空为止。
在线重做日志(LGWR)用于在出现电源故障(实例中止)时“修正”数据文件,而归档重做日志则不同,它是在出现硬盘故障时用于“修正”数据文件。
ARCH通常将在线重做日志文件复制到至少两个位置(冗余正是不丢失数据的关键所在!)。这些位置可能是本地机器上的磁盘,或者更确切地讲,至少有一个在另一台机器上,以应付灾难性失败。
六、CKPT
CKPT (检查点进程)用来减少执行实例恢复所需的时间。检查点使DBWR把上一个检查点以后的全部已修改数据块写入数据文件,并更新数据文件头部和控制文件以记录该检查点。
当一个联机重做日志文件被填满时,检查点进程会自动出现。可以用数据库实例的init.ora文件中的LOG_CHECKPOINT_INTERVAL参数来设置一个频繁出现的检查点。
注意:
检查点进程并不像它的名字所暗示的那样,真的建立检查点--建立检查点是主要是DBWn的任务。CKPT只是更新数据文件的文件首部,以辅助真正建立检查点的进程(DBWn)。
注:本文所有内容均摘自CSDN网友方友松的技术Blog(作者的Blog地址为:http://blog.csdn.net/truexf/)
以及Tom kyte的《Oracle9i&10g编程艺术》人民邮电出版社
分享到:
相关推荐
Oracle体系结构详解 Oracle体系结构是指Oracle数据库的架构设计和组件之间的关系。 Oracle数据库实例、物理存储结构、逻辑存储结构、内存结构、数据库实例与进程、数据字典等都是Oracle体系结构的重要组件。 物理...
Oracle数据库体系结构是一个复杂而精细的系统,它由多个关键组件构成,包括实例、内存结构和后台进程,以及数据库的物理和逻辑结构。Oracle实例是数据库运行时的核心,由System Global Area (SGA)和后台进程两大部分...
#### 一、Oracle体系结构简介 **Oracle Server**: Oracle服务器包含两个主要部分:数据库(Database)和实例(Instance)。 - **Database**: 包括数据文件(Datafiles)、控制文件(Controlfile)和重做日志文件(Redolog ...
另外,Oracle体系结构还包括其他后台进程,如日志写入器进程(LGWR)、检查点进程(CKPT)、数据库写入器进程(DBWn)等,它们共同工作确保数据的一致性和完整性。 Oracle体系结构的知识点非常广泛,包括了对数据库...
Oracle体系结构是Oracle数据库管理系统的核心组件之一,它是Oracle数据库的基础架构。Oracle体系结构主要由三部分组成:数据库(Database)、实例(Instance)和oracle网络架构。 数据库(Database) 数据库是...
【Oracle 体系结构详解】 Oracle数据库的体系结构是其高效管理和优化数据操作的关键。这个复杂的架构设计主要目的是为了有效地管理数据库系统中的稀缺资源,特别是内存,以提高性能并确保数据的完整性和可用性。 1...
Oracle 12c数据库体系结构图文详解手册是 Oracle 12c数据库管理系统的核心组件之一,该手册详细介绍了 Oracle 12c数据库的体系结构、实例、数据库、内存结构、后台进程、控制文件、重做日志文件、数据文件等概念。...
以下是对Oracle体系结构主要组成部分的详细说明: 1. **数据库**:数据库是Oracle的核心,它是一个逻辑数据集合,包含了物理存储的数据以及元数据。Oracle是关系型数据库管理系统(RDBMS),意味着它以表格形式组织...
### Oracle体系结构详解 Oracle体系结构是理解Oracle数据库工作原理的关键。本文将深入解析Oracle的基本组成、实例(Instance)结构以及内存结构等核心概念。 #### 一、Oracle基本组成 Oracle的基本组成部分包括...
### Oracle体系结构8.09知识点详解 #### 一、Oracle体系结构概述 Oracle数据库的体系结构主要包括几个关键部分:数据库实例(Instance)和数据库文件(Database Files)。其中,数据库实例由内存结构(Memory ...
本文将深入探讨Oracle体系结构的各个关键组成部分。 首先,我们关注物理结构,这是Oracle数据库在磁盘上的实际存储形式。主要包含以下几个部分: 1. **数据文件**:数据文件是Oracle数据库中最基本的存储单元,...
Oracle数据库的体系结构是其高效稳定运行的基础,涵盖了物理结构、逻辑结构、内存结构、数据库实例与进程以及数据字典等多个重要组成部分。本章主要围绕这些方面展开详细讲解。 首先,Oracle的物理结构主要包括数据...
### Oracle 体系结构详解 #### 一、Oracle 基本体系结构概览 Oracle 数据库的体系结构设计得非常复杂且精妙,它能够高效地处理大量的并发请求,并确保数据的安全性和一致性。Oracle 的基本体系结构主要包括内存...
本文将详细介绍 Oracle 12c 的后台进程和内存结构图,帮助读者深入了解 Oracle 的内部工作机理。 一、Oracle 12c 后台进程 后台进程是 Oracle 数据库的核心组件,它们负责管理数据库的各个方面,包括事务处理、...
Oracle 体系结构和后台进程详解 ,来自官方的文档,很好
本文将详细解析Oracle数据库的体系结构,帮助读者深入理解其内部工作原理。 Oracle数据库的核心架构可以分为以下几个主要部分: 1. **数据文件**(Data Files):数据文件是Oracle数据库存储实际数据的地方,包含...
标题:“Oracle11g体系结构图” 描述:“Oracle11g体系结构图,oracle结构清清楚楚” **一、Oracle11g体系结构概览** Oracle11g是Oracle公司推出的一款高性能、高可用性和高安全性的关系型数据库管理系统。其体系...
Oracle数据库是一种广泛使用的关系型数据库管理系统,其体系结构设计复杂且高效。Oracle 体系结构主要由Oracle实例和Oracle数据库两大部分组成。 Oracle实例是访问Oracle数据库的入口,它包括了系统全局区(SGA)和...