oracle server包括instance和database两部分;instance包括memory和background process,其中memory在上一节中已经学习了(主要是SGA),本节学习process(进程)。这里的进程是个笼统的概念,因为windows基本上是单进程多线程的,所以在windows下是指线程;而在linux或者unix中,是多进程的,此处就是指进程,因此这里说的process是个笼统的概念,既可以指线程,也可以指进程。

1.oracle有三种不同类型的进程:user process、server process和background process。

 

2.user process:oracle客户端进程,任何一个程序,如果想要链接到oracle后台,那就是客户端进程,比如sql plus。

3.server process是主要负责和客户端链接的进程;

图1 background process

4.background process(重点):称为后台进程

      后台进程是oracle instance的核心;如图1中,有很多后台进程,名字很整齐,都是以ora开头,以wilson结尾。这些后台进程又分为两种mandatory(必须要有的)后台进程和optional(可选的)l后台进程。

      mandatory background process包括:DBWn 、PMON 、 CKPT、 LGWR以及SMON

      optional  background process包括:ARCn、LMDn、QMNn、LMON等

      下面介绍几个重点的后台进程。

 

5.database writer(DBWn),其中n表示0,1,2。。。等,大概20个左右

      DBWn是任务最繁重的一个后台进程,需要把database buffer cache中的数据写到data files中,如果负荷比较大,那么就可以配置多个DBWn(例如 DBW0,DBW1,DBW2)。

       在什么情况下开始写缓冲区呢?主要是以下几种:checkpoint occurs、dirty buffers reach threshold、there are no free buffers、timeout occurs等

 

6.log writer(LGWR)

     和上面DBWn的类似,LGWR是把redo log buffer中的数据写到redo log files中;而且要在DBWn写之前,先写日志文件,确保数据写错了还能回滚。LGWR进程的触发条件:at commit 、when one-third full、when there is 1 MB of redo、every three second、before DBWn writers等。

    注意:redo log buffer和redo log files都是一种循环的文件,也就是说写满了之后会从头开始写,会把之前的记录覆盖掉。为了避免覆盖到老的数据,可以把redo log files 写到archived redo log files中去。

 

7.system monitor(SMON):系统监控

    SMON职责:

  • instance recovery:rolls back uncommitted transactions等
  • coalesces(合并)free space
  • deallocates temporary segments

8.process monitor(PMON):进程监控器,顾名思义,就是用来监控进程的。

 

9.checkpoint(CKPT)

       它的工作是轻量级的,早期的时候它的工作是由LGWR完成的。

    职责:(以后再学习)

10.archiver(ARCn)是可选项

       虽然ARCn是可选项进程,但实际上几乎是必选项进程;ARCn负责将redo log files中的数据写到archived redo log files中。 oracle可以运行子啊两种模式下:non-archiver(非归档)和archiver(归档)模式。几乎所有的生产数据库都会运行在archiver(归档)模式下。

补充:oracle的逻辑结构(logical structure)   

        一个oracle server上只有一个database,一个database可以有多个 tablespace,一个tablespace可以有多个segment,一个segment 可以有多个extent,一个extent是一组连续的blocks组成,block是oracle的最小基本单位,这个块对应着操作系统或者文件系统的整数倍。

        datafile是oracle的物理结构,一个tablespace可以由多个datafile组成,一个segment也以横跨多个datafile;但是extent只能在一个datafile中。如下图2所示

 

图2 oracle的体系结构

第一章总结:本章就是一个概述

 

图3 第一章总结

 

 

 

 

posted on 2011-12-13 20:16  龟壳里的蜗牛  阅读(457)  评论(0编辑  收藏  举报