`
JEmql
  • 浏览: 60794 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Oracle体系结构之-Oracle后台进程

阅读更多

前面我们说过,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实例=SGA区+后台进程 oracle服务器=oracle实例+oracle数据库 数据库实例启动实质上即为:分配SGA区,启动后台进程

    Oracle体系结构详解

    全面、深刻描述Oracle体系结构及后台进程

    Oracle 体系结构和后台进程详解

    Oracle 体系结构和后台进程详解 ,来自官方的文档,很好

    Oracle体系结构简介

    数据库 实例 内部结构 内部存储结构 后台进程 外部结构 一个简单数据库的组成

    Oracle进程结构及后台进程简介

    进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使用...ORACLE进程的体系结构设计使性能最大。ORACLE实例有两种类型:单进程实例和多进程实例。本文将为大家介绍Oracle的进程结构及后台进程。

    oracle体系结构.doc

    描述oracle体系结构的经典教程,你可以有如下收获 1、 理解ORACLE 实例的组成 2、 理解ORACLE 数据库的组成 3、 理解ORACLE内存结构的组成 4、 理解后台进程的作用与分工 5、 理解数据库的物理文件与对应的逻辑结构 ...

    培训讲义:Oracle 数据库体系结构

    Oracle 数据库体系结构  ORACLE数据库体系结构决定了oracle如何使用网络、磁盘和内存。包括实例(instance),文件(file)和进程(process不包括后台进程)三部分。 实例:每一个运行的ORACLE数据库与一个ORACLE...

    oracle 体系结构.doc

    在本章里你可以了解以下内容 1、 理解ORACLE 实例的组成 2、 理解ORACLE 数据库的组成 3、 理解ORACLE内存结构的...4、 理解后台进程的作用与分工 5、 理解数据库的物理文件与对应的逻辑结构 6、 理解ORACLE的整体构架

    ORACLE 体系结构

    ORACLE 体系结构 1、 ORACLE 实例——包括内存结构与后台进程 2、 ORACLE 数据库——物理操作系统文件的集合 3、 了解内存结构的组成 4、 了解后台进程的作用 5、 了解数据库的物理文件 6、 解释各种逻辑结构

    炼数成金 课程+教材 Oracle数据库职业直通车-Oracle入门学习教学视频 谭怀远老师.txt

    第1课 轻松带你走进Oracle数据库的世界 第2课 从最简单的SQL语句开始 第3课 Oracle数据库的安装和配置 第4课 Oracle数据库的参数文件,控制文件,数据文件和日志文件 ...第13课 Oracle的内存结构与后台进程

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    1.3.1 了解Oracle体系结构 8 1.3.2 理解并发控制 14 1.3.3 多版本 19 1.3.4 数据库独立性? 25 1.3.5 “怎么能让应用运行得更快?” 41 1.3.6 DBA与开发人员的关系 45 1.4 小结 46 第2章 体系结构概述 47 2.1...

    oracle体系结构

    ORACLE 体系结构(Architecture of ORACLE) 在本章里你可以了解以下内容 1、 理解ORACLE 实例的组成 2、 理解ORACLE 数据库的组成 3、 理解ORACLE内存结构的组成 4、 理解后台进程的作用与分工 5、 理解数据库的物理...

    Oracle体系结构:内存结构和进程结构-体系架构

    (一)内存结构和进程结构Oracle数据库的总体结构如下图:1:Oracle实例(Instance) 在一个服务器中,每一个运行的Oracle数据库都与一个数据库实例相联系,实例是我们访问数据库的手段。实例在操作系统中用ORACLE_...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    2 Oracle 服务器入门 目标 2-2 数据库管理工具 2-3 Oracle 通用安装程序 2-4 交互式安装 2-5 使用反应文件的非交互式安装 2-6 Oracle 数据库配置助手 2-8 最优灵活体系结构(OFA) 2-9 Oracle 软件和文件位置 2-10 ...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    第一讲:Oracle体系结构 第二讲:Oracle实例中内存结构 第三讲:Oracle实例中后台进程管理 第四讲:Oracle数据数据文件管理 第五讲:Oracle数据库在线日志文件管理 第六讲:Oracle数据库归档日志文件管理 第七讲:...

    Oracle 体系结构-SGA

    实例是由一块共享内存区域以及一些后台进程组成。 1.SGA SGA为共享内存区域,也叫系统全局区 SGA的特点: -是共享的,是所有使用当前实例的用户都可以读取的内存部分。 -一个SGA只能服务一个实例,多实例间不能互相...

    oracle 11g体系结构讲解胶片

    Oracle 11g的逻辑结构:表空间、...Oracle 11g的总体结构:内存结构、后台进程、Oracle例程。 Oracle 11g的应用架构:多磁盘结构、磁盘映像结构、客户/服务器系统、共享服务器系统、并行数据库系统、分布式数据库系统。

Global site tag (gtag.js) - Google Analytics