LGWR,DBWR,SMON,PMON,CKPT是必需的五个后台进程。ARCH是最重要的可选后台进程。
最重要的六个进程:
1.LGWR
重做日志写进程,LOG write 负责将重做日志缓冲区记录顺序写入重做日志文件。LGWR在下列情况下将重做日志缓冲区记录(内存)顺序写入重做日志文件(外存)中5种情况:
某个事务被提交时,重做日志缓冲区中变化记录超过1M,当重做日志缓冲区中所存记录已经超过缓冲区容量的三分之一时,在DBWR将数据库高速缓冲区中修改过的数据块写到数据文件之前;每3秒。
在ORACLE 11G中:LGWR写日志条件变为三个:COMMIT,达到缓冲区三分之一,DBWR写之前.
11G实验步骤是:在一个会话SQLPLUS中开启时间提示,做插入:insert into test values(9,999888); 另一个会话做:strings /u01/oradata/bys3/redo03.log| grep 999888
可以照这思路多做几次,能发现LGWR不是3秒超时就写日志的。 但是用DTRACE来跟踪LGWR进程,会发现LGWR确实是每3秒sleep,唤醒这样的。
2.DBWR
数据库写进程,DBWR/DBWn,负责将数据库高速缓冲区中数据写到数据文件上。
DBWR在下列情况下将数据库高速缓冲区中的数据写到数据文件:8种情况
当脏缓冲区的数量超过所设定的限额;所设定的时间间隔已到;当有进程需要数据库高速缓冲区却找不到空闲缓冲区时;校验点发生时;某个表被删除或截断时;某个被表空间被设置为只读状态时;对某表空间进行联机备份时;某个临时表空间被设置为只脱机状态或正常状态等。
3.SMON
系统监管进程,如系统崩溃、断电后重新开启时,SMON将自己执行恢复工作。步骤为:
执行前滚,ROLL FORWARD,将写入重做日志文件但未写入数据文件中的提交数据写到数据文件中(SCN)
前滚完成后立即打开数据库,此时可以登录并使用数据库,这时数据文件中可能有未提交数据,回滚没提交的事务(数据)。
SMON还进行回收或组合数据文件中相连的空闲区,释放临时段等磁盘空间维护工作。
4.PMON
进程监督进程,当某个进程崩溃时,如未正常退出SQLPLUS等,PMON负责如下清理工作:
回滚用户当前的事务,释放用户所加的所有表一级和行一 级的锁,释放用户所有其它资源。
同时负责:动态注册监听,清除用户进程、服务器进程
5.CKPT
检查点进程,checkpoint 检查点,检查点事件是当DBWR进程把在SGA中所有已经改变的数据库调整缓冲中的数据(包括提交和未提交数据)写到数据文件上时产生。 检查点可提高效率。因为所有到检查点为止的变化的数据都已经写入数据文件中,在实例恢复时检查点之前的重做日志记录就不再需要,实例的恢复速度就加快了。一般的检查点间隔在半小时以上。
6.ARCH/ARCn
归档日志进程,最重要的可选后台进程,因为如数据库数据文件丢失或损坏,一般数据库要进行完全恢复,ORACLE数据库将运行在归档模式。
#######################################################################################
其它进程
7.MMAN
内存管理进程,负责内存的动态管理,分配和收回。Oracle 10g提供了一个新的初始化参数:sga_target来启动ASMM,该参数定义了整个SGA的总容量。
同时,初始化参数statistics_level必须设置为typical或all才能启动ASMM,如果设置为basic,则关闭ASMM。
ASMM只能自动调整5个内存池的大小,它们是:
shared pool、buffer cache、large pool、java pool和stream pool。我们不再需要设置这五个初始化参数。
而其他的内存池,比如log buffer、keep buffer cache等仍然需要DBA手工进行调整。
8.CJQ0 job
任务协调进程,负责数据库中JOB的自动执行。
9.J001
job具体执行进程,接受CJQ0分发的job任务。
10.VKTM
这个进程用于提供一个数据库的时钟,每秒更新;或者作为参考时间计数器,这种方式每20毫秒更新一次,仅在高优先级时可用。通过VKTM进程,数据库可以降低和操作系统的交互.
11. DIAG
主要用来捕获实例中失败进程的诊断信息,并生成相应的TRACE文件。该进程自动启动不需要进行调整,如果该进程失效则自动重新启动。
12.DBRM
Oracle资源管理器(Oracle Database Resource Manager,以下简称DBRM)管理数据库资源,为不同的会话分配不同的数据库资源。DBRM管理的资源主要包括CPU时间。
13.RECO
分布式数据库恢复:基于2PC分布式协议,允许多个不同的修改实现原子提交,但是在真正提交前,出现网络失败等错误,事务成为一个可疑的分布式事务.此时就需要RECO来负责联系事务协调器来发现协调的结果。在这之前事务会保持未提交状态.当恢复网络或者错误解决后,RECO可能会提交事务,也可能将事务回滚
14.QMNC Q002
高级队列进程:QMNC会监视高级队列.并告诉从队列中删除等待消息的"出队进程":已经有一个消息变为可用.它们还要负责队列传播
15.SMCO
空间管理协调器进程:协调数据库的主动空间管理。
16.PSP0
进程生成器进程:它主要负责生成各个后台进程.
17.DIA0
另一个数据库诊断进程,负责检测Oracle数据库中的挂起(hang)和死锁的处理。
18.W000
命名为W000,W001,W002.....,由smcO动态产生执行上述相关任务。
19.MMON
manageability monitor,与oracle10g的新特性--诊断功能相关,负责管理一些后台任务,比收集最近修改过的 SQL 对象的统计信息
20.MMNL
与oracle10g的新特性--诊断功能相关,会根据调度从SGA将统计结果--如会话的历史信息,刷新输出至数据库表。
21.VKRM
Virtual Scheduler for Resource Manager Process
22.GEN0
Performs required tasks including SQL and DML
查询后台进程:
LINUX:
[oracle@bys001 ~]$ ps -ef|grep ora_
oracle 21393 1 0 09:27 ? 00:00:07 ora_pmon_bys1
oracle 21397 1 0 09:27 ? 00:02:59 ora_vktm_bys1
oracle 21403 1 0 09:27 ? 00:00:03 ora_gen0_bys1
oracle 21407 1 0 09:27 ? 00:00:03 ora_diag_bys1
oracle 21411 1 0 09:27 ? 00:00:03 ora_dbrm_bys1
oracle 21415 1 0 09:27 ? 00:00:06 ora_psp0_bys1
oracle 21419 1 0 09:27 ? 00:00:11 ora_dia0_bys1
oracle 21423 1 0 09:27 ? 00:00:03 ora_mman_bys1
oracle 21427 1 0 09:27 ? 00:00:06 ora_dbw0_bys1
oracle 21431 1 0 09:27 ? 00:00:06 ora_lgwr_bys1
oracle 21435 1 0 09:27 ? 00:00:12 ora_ckpt_bys1
oracle 21439 1 0 09:27 ? 00:00:04 ora_smon_bys1
oracle 21443 1 0 09:27 ? 00:00:01 ora_reco_bys1
oracle 21447 1 0 09:27 ? 00:00:09 ora_mmon_bys1
oracle 21451 1 0 09:27 ? 00:00:12 ora_mmnl_bys1
oracle 21455 1 0 09:27 ? 00:00:01 ora_d000_bys1
oracle 21459 1 0 09:27 ? 00:00:01 ora_s000_bys1
oracle 21478 1 0 09:27 ? 00:00:02 ora_arc0_bys1
oracle 21482 1 0 09:27 ? 00:00:02 ora_arc1_bys1
oracle 21486 1 0 09:27 ? 00:00:01 ora_arc2_bys1
oracle 21490 1 0 09:27 ? 00:00:01 ora_arc3_bys1
oracle 21494 1 0 09:27 ? 00:00:01 ora_qmnc_bys1
oracle 21522 1 0 09:27 ? 00:00:10 ora_cjq0_bys1
oracle 21526 1 0 09:27 ? 00:02:16 ora_vkrm_bys1
oracle 21546 1 0 09:27 ? 00:00:01 ora_q000_bys1
oracle 21550 1 0 09:27 ? 00:00:02 ora_q001_bys1
oracle 21596 1 0 09:32 ? 00:00:03 ora_smco_bys1
oracle 26119 1 0 16:12 ? 00:00:00 ora_w000_bys1
oracle 26306 1 0 16:29 ? 00:00:00 ora_j000_bys1
oracle 26310 1 0 16:29 ? 00:00:00 ora_j001_bys1
WINDOWS下需要在数据库中查询:
SQL> select program from v$session where program like 'ORACLE.EXE%';
PROGRAM
----------------------------------------------------------------
ORACLE.EXE (PMON)
ORACLE.EXE (VKTM)
ORACLE.EXE (GEN0)
ORACLE.EXE (DIAG)
ORACLE.EXE (DBRM)
ORACLE.EXE (PSP0)
ORACLE.EXE (DIA0)
ORACLE.EXE (MMAN)
ORACLE.EXE (DBW0)
ORACLE.EXE (LGWR)
ORACLE.EXE (CKPT)
ORACLE.EXE (SMON)
ORACLE.EXE (RECO)
ORACLE.EXE (MMON)
ORACLE.EXE (MMNL)
ORACLE.EXE (Q000)
ORACLE.EXE (ARC0)
ORACLE.EXE (ARC1)
ORACLE.EXE (ARC2)
ORACLE.EXE (ARC3)
ORACLE.EXE (QMNC)
ORACLE.EXE (Q002)
ORACLE.EXE (SMCO)
ORACLE.EXE (CJQ0)
ORACLE.EXE (J001)
ORACLE.EXE (J000)
ORACLE.EXE (VKRM)
ORACLE.EXE (W000)