一.SMON(System MONitor) 系统监控进程:
    

在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置:

PMON started with pid=2

DBW0 started with pid=3

LGWR started with pid=4

CKPT started with pid=5

SMON started with pid=6

RECO started with pid=7

SMON负责系统监视已经一些系统清理及恢复工作,这些工作主要包含:

1.清理暂时空间以及暂时段

SMON负责在数据库启动时清理暂时表空间中的暂时段。或者一些异常操作过程遗留下来的暂时段,比如,当创建索引过程中,创建期间分配给索引的Segment被标志为TEMPORARY,假设Create Index (或rebuild Index等)会话因某些原因异常中断,SMON负责清理这些暂时段。

2.接合空暇空间

在DMT(字典管理表空间)中,SMON负责把那些在表空间中空暇的而且互相是邻近的Extent接合成一个较大的空暇扩展区,这须要表空间的pctincrease设置为非零值。

3.运行实例恢复(Instance recovery)

在实例恢复过程中,SMON的工作包含三个环节:应用Redo运行前滚、打开数据库提供訪问、回滚未提交数据

Tue Apr 22 21:31:10 2008

SMON: enabling cache recovery

Tue Apr 22 21:31:10 2008

ARC0: Completed archiving log 1 thread 1 sequence 238

Tue Apr 22 21:31:11 2008

Undo Segment 1 Onlined

Undo Segment 2 Onlined

Undo Segment 3 Onlined

Undo Segment 4 Onlined

Undo Segment 5 Onlined

Undo Segment 6 Onlined

Undo Segment 7 Onlined

Undo Segment 8 Onlined

Undo Segment 9 Onlined

Undo Segment 10 Onlined

Successfully onlined Undo Tablespace 1.

Tue Apr 22 21:31:11 2008

SMON: enabling tx recovery

Tue Apr 22 21:31:11 2008

Database Characterset is ZHS16GBK

replication_dependency_tracking turned off (no async multimaster replication found)

Completed: ALTER DATABASE OPEN

4.离线(Offline)回滚段

在自己主动回滚段管理(AUM)中负责Offline不再须要的回滚段。日志中会记录类似例如以下信息:

Fri May 2 15:43:21 2008

SMON offlining US=11

SMON offlining US=12

SMON offlining US=13

SMON offlining US=14

SMON offlining US=15

SMON offlining US=16

SMON offlining US=17

SMON offlining US=18

SMON offlining US=19

SMON offlining US=20

SMON offlining US=21

SMON offlining US=22

SMON offlining US=23

5.运行并行恢复

下面信息来自9i日志:

Fri May 11 21:30:45 2007

SMON: Parallel transaction recovery tried

Also Record some English Note About SMON:

The SMON background process performs all system monitoring functions on the Oracle database. The SMON process performs a "warm start" each time that Oracle is re-started, ensuring that any in-flight transaction at the time
of the last shutdown are recovered. For example, if Oracle crashed hard with a power failure, the SMON process is attached at startup time, and detects any uncompleted work, using the rollback segments to recover the transactions. In addition, SMON
performs periodic cleanup of temporary segments that are no longer needed
, and also perform tablespace operations, coalescing contiguous free extents into larger extents.

 6.维护SMON_SCN_TIME 系统表。

SMON_SCN_TIME 表记录了SCN 与时间的对应关系,由SMON 定期进行定新。并将一些较老的数据定期删除。

二. PMON (Process MONitor) 进程监控进程:
 
1.作用:     
主要用于回滚异常终止的或被用户强制终止的事务.
<1>.rolling back the transaction.
<2>.releasing locks.释放锁.
<3>.releasing other resources.
<4>.restarts dead dispatchers.重新启动死掉的调度器.(在共享server中用).

<5>.作为实例第一个启动的后台进程。PMON 还肩负监控其它Oracle 后台进程的职责,在必要时重新启动这些后台进程;
<6>.此外。PMON 还负责向TNS 监听器注冊实例。
 
三.DBWn  数据库写进程:
1.作用:将内存中的数据写入到磁盘。
2.DBWR写的条件:
            发生检查点。
            脏缓存到达限制。

            没有自由的缓存
            超时发生。
            RAC ping请求
            表空间离线
            表空间仅仅读
            表被删除或者截断
            開始备份表空间
以下为从网上找的与上面的相似:
         
1) 当进程在辅助LRU链表和主LRU链表上扫描以查找能够覆盖的buffer header[空暇缓冲区]时,假设已经扫描的buffer header的数量到达一定的限度(由隐藏參数:_db_block_max_scan_pct决定)时,触发DBWR进程。_db_block_max_scan_pct表示已经扫描的buffer header的个数占整个LRU链表上buffer header总数的百分比。这时,搜索可用buffer header的进程挂起,在v$session_wait中表现为等待“free
buffer wait”事件。同一时候添加v$sysstat中的“dirty buffers inspected”的值。

(can query by x$kvit)

2) 当DBWR在主LRUW链表上查找已经更新完而正在等待被写入数据文件的buffer header时。假设找到的buffer header的数量超过一定限度(由隐藏參数:_db_writer_scan_depth_pct决定)时,DBWR就不再继续往下扫描了。而转到辅助LRUW链表上将其上的脏数据块写入数据文件。

_db_writer_scan_depth_pct表示已经扫描的脏数据块的个数占整个主LRUW链表上buffer header总数的百分比。

3) 假设主LRUW链表和辅助LRUW链表上的脏数据块的总数超过一定限度,也将触发DBWR进程。

该限度由隐藏參数:_db_large_dirty_queue决定。

4) 发生增量检查点(incremental checkpoint)或全然检查点(complete checkpoint)时触发DBWR。
5) 每隔三秒钟启动一次DBWR。

6) 将表空间设置为离线(offline)状态时触发DBWR。
7) 发出命令:alter tablespace … begin backup,从而将表空间设置为热备份状态时触发DBWR。

8) 将表空间设置为仅仅读状态时。触发DBWR。
9) 删除对象时(比方删除某个表)会触发DBWR。
 
3. 系统有多少个数据库写进程:
    32位系统。最多有10个进程,名称从dbw0----dbw9
    64位系统。最多有20个进程。名称从dbw0----dbw9 ,dbwa  -----dbwj.
4.查看dbwr进程数据量:
SQL> show parameter db_writer_processes


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_writer_processes                  integer     1
普通情况下dbwr进程数量设置为: dbwr进程数量大小 = cup数量 /8; 
 
 
四. 日志写进程LGWR
 
1.LGWR写的条件:
    提交的时候。
    达到日志缓存区的三分之中的一个的时候,
    日志的大小到1M
    每一个三秒
    在DBWn进程写之前。

以下为从网上找的与上面的相似:

1)超时(timeout)
当LGWR处于空暇状态时。它依赖于rdbms ipc message等待。处于休眠状态,直到3秒超时时间到。
假设LGWR发现有redo须要写出,那么LGWR将运行写出操作,log file parallel write等待事件将会出现。
 
2)阈值达到
仅仅要一个进程在log buffer中分配空间,已经使用的Log buffer的数量将被计算。假设使用的块的
数量大于或等于_log_io_size參数设置。那么将会触发LGWR写操作。
假设此时LGWR未处于活动状态,那么LGWR将被通知去运行后台写操作。
缺省的_log_io_size等于1/3 log buffer大小,上限值为1M,此參数在X$KSPPSV中显示的0值,意为缺省值。

也就是,LGWR将在Min(1M,1/3 log buffer size)时触发。注意此处的log buffer size是以log block来衡量的。
此值通常为512 bytes.
 
3)提交
当一个事物提交时。在redo stream中将记录一个提交标志。
在这些redo被写到磁盘上之前,这个事物是不可恢复的。

所以。在事务返回成功标志给用户前,必须等待LGWR写完毕。进程通知LGWR写,而且以log file sync事件開始休眠,超时时间为1秒。

Oracle的隐含參数_wait_for_sync參数能够设置为false避免redo file sync的等待,可是就将无法保证事务的恢复性.注意,在递归调用(recursive calls)中的提交(比方过程中的提交)不须要同步redo直到须要返回响应给用户。

因此递归调用仅须要同步返回给用户调用之前的最后一次Commit操作的RBA。

 
存在一个SGA变量用以记录redo线程须要同步的log block number。

假设多个提交在唤醒LGWR之前发生,此变量记录最高的log block number。在此之前的全部redo都将被写入磁盘。

这有时候被称为组提交(group commit).
4)在DBWR写之前
假设DBWR将要写出的数据的高RBA超过LGWR的on-Disk RBA,DBWR将post LGWR去运行写出。

在Oracle8i之前,此时DBWR将等待log file sync事件。

从Oracle8i開始。DBWR把这些Block放入一个defer队列,同一时候通知LGWR运行redo写出。DBWR能够继续运行无需等待的数据写出。
2.log buffer 日志缓冲区。通过lgwr 写到logfile文件里
 
五. CKPT (Checkpoint) 检查点进程:
    1.作用:
                它负责更新控制文件和数据文件头的检查点信息,CKPT 进程还会通知DBWn 进程去运行写操作。

检查点信息包含检查点位置、SCN
、Redo的恢复位置等。

        给DBWn发信号,DBWn改写数据。

        更新数据文件头
        更新控制文件
 
    2.CKPT发送CHECKPOINT信号的触发条件:
1)log_checkpoint_timeout时间达到
2)当前redo日志已经写够log_checkpoint_internavl*操作系统块大小
3)redo log switch
4)alter system checkpoint
5)alter tablespace XXX begin backup/end backup的時候
6)alter tablespace ,datafile offline,shutdown immediate,direct read的時候;
六.归档日志进程 Archiver (ARCn):
1.作用:
在Oracle可选的后台进程中。最重要的就是归档日志进程。假设Oracle数据库发生数据文件丢失或者损坏,须要进行全然恢复时。都应该执行在归档模式下。

在Oracle中,重做日志文件被分为非常多组。

当一组重做日志文件被写满后。就開始写下一组,称为日志切换。日志切换以循环方式进行,当最后一组写满后,又開始写第一组。

假设Oracle执行在非归档模式下。就会发生重做日志文件覆盖的问题。

在归档模式下,ARCn进行将把切换后的重做日志文件拷贝到归档日志文件。Oracle保证在一组重做日志的归档完毕之前不会覆盖此组重做日志文件。
 
 
2.显示归档进程有多少个
SQL> show parameter log_archive_max_processes
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
log_archive_max_processes            integer     4
 
3.改动归档进程个数:
 
SQL> alter system set log_archive_max_processes=5;
 
系统已更改。




6. RECO进程
       负责在分布式数据库环境中自己主动恢复那些失败的分布式事务,保证分布式事务的一致性,在分布式事务中,要么同一时候commit,要么同一时候rollback;
 
7. ARCH进程
       该进程将已填满的在线日志文件复制到指定的存储设备。

当数据库执行在归档模式下,归档进程负责在日志切换后将已经写满的重做日志文件复制到归档目标.


8. LCKn进程
       是在具有并行server选件环境下使用,可多至10个进程(LCK0,LCK1……,LCK9)。用于实例间的封锁。
 
9. MMAN 进程
       内存管理,假设设定了 SGA自己主动管理,MMAN用来协调SGA内各组件的大小设置和大小调整。

 
10. MMON 进程
       管理性监视器(Manageability Monitor),MMON主要用于AWR。ADDM。MMON会从SGA将统计结果写到系统表中。
        MMON: The Manageability Monitor (MMON) process was introduced in 10g and is associated with the Automatic Workload Repository new features used for automatic problem detection and self-tuning. MMON writes out the required statistics for AWR on
a scheduled basis.

七.虚拟时钟进程:(oracle 11g 新添加)

VKTM  –   其全名为V irtual  Keeper of TiMe  –   虚拟时钟进程,这个进程是在Oracle  Database 
11g 中引入的进程,用 于 ᨀ 供 一 个 数 据 库 内 部 的 虚 拟 时 钟 ,以计算各种时间间隔量度等,VKTM
的引入减少和操作系统之间的交互。从而ᨀ高了性能。 
    VKTM 有两种执行模式: 
•   基础模式,秒级间隔更新; 
•   或者作为參考时间计数器。这样的方式每20毫秒更新一次。仅在高优先级时可用。 
对于不同的版本号,VKTM 的设定模式可能不同,详细能够从告警日志文件里查知。


八. v$PROCESS 视图:
通过数据库中的v$process视图,能够找到相应于操作系统的每一个进程信息:

SQL> select addr, pid ,spid ,username, program from v$process;

ADDR            PID SPID         USERNAME        PROGRAM
-------- ---------- ------------ --------------- -------------------------
2C61627C          1                              PSEUDO
2C616830          2 5074         oracle          oracle@master (PMON)
2C616DE4          3 5078         oracle          oracle@master (PSP0)
2C617398          4 5080         oracle          oracle@master (MMAN)
2C61794C          5 5082         oracle          oracle@master (DBW0)
2C617F00          6 5084         oracle          oracle@master (LGWR)
2C6184B4          7 5086         oracle          oracle@master (CKPT)
2C618A68          8 5088         oracle          oracle@master (SMON)
2C61901C          9 5090         oracle          oracle@master (RECO)
2C6195D0         10 5092         oracle          oracle@master (CJQ0)
2C619B84         11 5094         oracle          oracle@master (MMON)

ADDR            PID SPID         USERNAME        PROGRAM
-------- ---------- ------------ --------------- -------------------------
2C61A138         12 5096         oracle          oracle@master (MMNL)
2C61A6EC         13 5098         oracle          oracle@master (D000)
2C61ACA0         14 5100         oracle          oracle@master (D001)
2C61B254         15 5102         oracle          oracle@master (S000)
2C61B808         16 5104         oracle          oracle@master (TNS V1-V3)


在v$process的查询输出中,SPID列代表的就是操作系统上的进程号,通过SPID能够将
进程从操作系统到数据库关联起来:
九.查找后台进程:
 
SQL> select * from v$bgprocess where paddr<>'00';
 
 
 
 
 

【ora10,4】oracle后台进程介绍:的更多相关文章

  1. Oracle 后台进程介绍

    一 进程分类: 1.服务器进程(server process): 依据客户请求完毕工作.如接收和处理应用发送的SQL语句 2.后台进程(background process): 随数据库而启动,用于完 ...

  2. Oracle 后台进程(二)DBWR进程

    一.DBWR进程介绍 DBWR进程执行将数据块缓冲区写入数据文件的工作,是负责缓冲存储管理的一个Oracle后台进程.在修改DB Cache中的某个缓冲区时,会将它标志为“DIRTY”,DBWR的主要 ...

  3. oracle后台进程详解

    oracle后台进程伴随实例的启动而启动,他们主要是维护数据库的稳定,相当于一个企业中的管理者及内部服务人员.他们并不会直接给用户提供服务.   一:database write--数据写入  DBW ...

  4. 【体系结构】Oracle参数介绍

    [体系结构]Oracle参数介绍 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩ ...

  5. Oracle asm介绍和安装linux+oracle10g+asm过程

    Oracle asm介绍和安装linux5.2+oracle10g+asm过程   1)ASM(自动存储管理)的来由:   ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来 ...

  6. Oracle Dataguard 介绍

    Oracle DataGuard介绍 一. DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件里记录此次更改.在DataGuard中 ...

  7. Oracle 后台进程 详细说明

    一. 进程概述 先来看一下Oracle 11g 的架构图. 看起来比较模糊,我已经上传到了csdn 的下载. 是个pdf 文件, 2m 多. 那个看起来比较清楚. 也对每个进程做了解释. 下载地址:O ...

  8. [Oracle] Lob介绍

    [Oracle] Lob介绍   像Oracle这种关系型数据库,比较擅长处理结构化的数据,那么对于非结构化的数据,Oracle是怎么处理和存储的呢?Lob (Large Object)是Oracle ...

  9. oracle regexp_like介绍和例子

    oracle regexp_like介绍和例子 学习了:http://www.cnblogs.com/einyboy/archive/2012/08/01/2617606.html ORACLE中的支 ...

随机推荐

  1. 如何向expect脚本里面传递参数

    如何向expect脚本里面传递参数   比如下面脚本用来做ssh无密码登陆,自动输入确认yes和密码信息,用户名,密码,hostname通过参数来传递   ssh.exp   Python代码   # ...

  2. Java图片上查找图片算法

    之前用按键精灵写过一些游戏辅助,里面有个函数叫FindPic,就是在屏幕范围查找给定的一张图片,返回查找到的坐标位置. 现在,Java来实现这个函数类似的功能. 算法描述: 屏幕截图,得到图A,(查找 ...

  3. PSP需求分析文档

    PSP软件需求分析文档 刘杰 1.       引言 1.1  背景 开发项目经常延期不能按时提交,甚至不能给出明确的延迟时间 1.2  术语 PSP,数据库 2.       任务概述 2.1  目 ...

  4. Hue - Error loading MySQLdb module: libmysqlclient.so.20: cannot open shared object file: No such file or

    解决下面两点异常 >> 1. Hue页面 点击DB 查询时弹出: Error loading MySQLdb module: libmysqlclient.so.20: cannot op ...

  5. 学习一波redis

    作为一名合格的java程序员,做web开发的,除了java,mysql,免不了用到内存数据库redis. 身为一名菜鸟,是时候来一波redis从入门到放弃了,哦不,从入门到精通.. 一.安装部署red ...

  6. rem布局进入页面样式错乱解决

    开发项目时候第一次遇到rem布局进入页面瞬间样式错乱问题: //该段js为rem布局应用 如10px = 0.1rem; (function(doc, win) { var docEl = doc.d ...

  7. 第三节:执行一些EF的增删改查

    针对两表操作 一丶增加 #region 05-增加操作 /// <summary> /// 05-增加操作 /// </summary> /// <param name= ...

  8. 题解 洛谷P3203/BZOJ2002【[HNOI2010]弹飞绵羊】

    裸的LCT,关键是要怎么连边,怎么将这种弹飞关系转化成连边就行了. 那么我们可以这样连边: 一个节点i的爸爸就是i+ki. 没有i+ki那么就被弹飞了,即\(i\)的爸爸是虚拟节点n+1. 那么怎么求 ...

  9. [POJ1155]TELE(树形背包dp)

    看到这道题的第一眼我把题目看成了TLE 哦那不是重点 这道题是树形背包dp的经典例题 题目描述(大概的): 给你一棵树,每条边有一个cost,每个叶节点有一个earn 要求在earn的和大于等于cos ...

  10. vue-cli项目结构分析

    总体框架 一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可. 文件结构细分 1.build——[webpack配置] bui ...