oracle主要进程详解
oracle 29845 1 0 Oct13 ? 00:00:44 ora_pmon_zxin
oracle 29847 1 0 Oct13 ? 00:00:06 ora_psp0_zxin
oracle 29849 1 0 Oct13 ? 00:00:09 ora_mman_zxin
oracle 29851 1 0 Oct13 ? 00:00:18 ora_dbw0_zxin
oracle 29853 1 0 Oct13 ? 00:00:23 ora_lgwr_zxin
oracle 29855 1 0 Oct13 ? 00:01:22 ora_ckpt_zxin
oracle 29857 1 0 Oct13 ? 00:00:09 ora_smon_zxin
oracle 29859 1 0 Oct13 ? 00:00:00 ora_reco_zxin
oracle 29861 1 0 Oct13 ? 00:01:01 ora_cjq0_zxin
oracle 29863 1 0 Oct13 ? 00:00:30 ora_mmon_zxin
oracle 29865 1 0 Oct13 ? 00:02:49 ora_mmnl_zxin
oracle 29903 1 0 Oct13 ? 00:00:02 ora_qmnc_zxin
oracle 31437 1 0 Oct13 ? 00:00:00 ora_q000_zxin
oracle 31439 1 0 Oct13 ? 00:00:01 ora_q001_zxin
这些都是oracle后台进程,不同的进程有不同的任务,对应不同的日志。
命名规则:
ora_进程名称_SID
进程作用:
1)PMON:进程监视器(Process Monitor)
监控其他进程(其他后台进程或者用户连接进程),在必要的时候恢复或撤销其他进程,释放资源。比如我们kill 掉oracle日志写进程,PMON会及时监控到,并shutdown数据库。
另一个作用是向Oracle TNS 监听器注册实例。实例启动时,PMON 进程会询问公认的端口地址(除非直接指定),来查看是否启动并运行了一个监听器
2)SMON:系统监视器(System Monitor)
清理临时空间以及临时段:在数据库起来的时清理临时表空间中的临时段,者一些异常操作过程遗留下来的临时段(查询查到一半被用户cancel掉等)
接合空闲空间,将tablespace中相邻的extent合并
执行实例恢复(Instance recovery):用于非法关闭数据库之后的instance recovery(应用Redo执行前滚、打开数据库提供访问、回滚未提交数据)
离线(Offline)回滚段,如在修改database的undo tablespace的时候
3)RECO:分布式数据库恢复(Distributed Database Recovery)
RECO后台进程仅当在允许分布式事务的系统中出现,该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的
其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,
如果远程服务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。
4)CKPT:检查点进程(Checkpoint Process)
负责oracle后台的check point,所谓check point是指将SGA中的脏数据flush到data file中。不过CKPT进程只是更新数据文件的文件首部,以辅助真正建立检查点的进程(DBWn)
5)DBWn:数据库块写入器(Database Block Writer)
数据库块写入器(DBWn)是负责将脏块写入磁盘的后台进程。
6)LGWR:日志写入器(Log Writer)
LGWR 进程负责将SGA 中重做日志缓冲区的内容刷新输出到磁盘。如果满足以下某个条件,就会做这个工作:
每3 秒会刷新输出一次
任何事务发出一个提交时
重做日志缓冲区1/3 满,或者已经包含1 MB 的缓冲数据
7)ARCn:归档进程(Archive Process)
ARCn 通常将在线重做日志文件复制到其他的位置,前提是数据库开启归档模式。
8)cjq0 Job Queue Processes
用于对job的协调,管理
(1)当配置job_queue_processes时,会有Jnnn和CJQ0进程;
(2)Jnnn进程最多可有1000个;
(3)Jnnn进程在job之间是共享的,但同时每个Jnnn只能执行一个job,并且它使用的内存是在UGA中;
(4)物化试图的刷新一般要用到job;
(5)streams一般用到AQ;
(6)CJQ0,做为jnnn的coordinator,它来控制jnnn的启动和关闭;
(7)Jnnn进程只会在有job需要处理时才会启动;
9) MMON,MMNL,Mnnn:Manageability Monitors
(1)用于AWR(autmatic workload repository);
(2)MMNL负责将SGA中的统计信息写入到表中;
(3)MMON监控数据库性能,进行自动调优;
(4)Mnnn属于MMON的帮手,帮助进行调优工作。
10)QMNC and Qnnn Processes:Job Queue
(1)用于AQ功能;
(2)Qnnn处理每个message queue,QMNC做为Qnnn的coordinator;
(3)如果配置了aq_tm_processes,就会启动QMNC和Qnnn进程,不论有没有queue要处理,Qnnn都会全部启动;
11)Pnnn 并行进程,启动了并存处理的时候会有(并行查询,并行dml,并行ddl,并行回滚)
主要后台进程的启动顺序:
PMON started with pid=2, OS id=18279
PSP0 started with pid=3, OS id=18281
MMAN started with pid=4, OS id=18283
DBW0 started with pid=5, OS id=18285
DBW1 started with pid=6, OS id=18287
后台进程的日志路径:$ORACLE_BASE/admin/zxin/bdump