一、数据写入进程(DBWn)
数据写入进程是Oracle的一个后台进程,所谓后台进程是相对于前台进程(服务器进程)来讲的。DBWn的"n"意味着一个实例是可以有多个数据库写入器的。
作用
简而言之,DBWn的作用就是将变脏了的缓冲区从数据库缓冲区缓存中写入到磁盘中的数据文件中去。
会话的更新,插入,删除包括查询等都是先作用到缓冲区上,随后,DBWn会将其中的脏缓冲区转储到磁盘上去。
以下四种情况DBWn会执行写入
- 没有任何可用缓冲区(不得不写啊)
- 脏缓冲区过多
- 3秒超时(最晚3秒会执行一次写入)
- 遇到检查点,即checkPoint(检查点),检查点是个Oracle事件,遇到检查点,DBWn会执行写入。比如实例有序关闭的时候会有检查点,DBWn会将所有脏缓冲区写入到磁盘上去的,这很容易理解,要保持数据文件的一致性。
二、日志写入进程(LGWR)
日志写入进程(LGWR)就是把日志缓冲区内的内容写入到磁盘的重做日志文件中去,相比数据库写入器(DBWn),日志写入器就勤快多了。
以下五种情况LGWR会执行写入
- log buffer里写满1M了。
- 每三秒将日志缓冲区输出。
- 当日志缓冲区的1/3已满时将日志缓冲区输出。
- 当用户进程提交一事务时写入一个提交记录。
- 当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
三、SMON(System Monitor)
它的主要职责有如下:
- 实例恢复
- 每3秒整理区碎片
- 清理临时段
四、PMON(Process Monitor)
进程监视进程,主要监视服务器进程。
当碰到了进程异常,将做如下处理
- 释放该进程的buffer cache资源
- 进程相关的锁资源
- 其他资源,比如进程号等信息,v$process可以看到的一些信息
- 检查调度器和服务器进程,来实现调度器分配请求队列和响应队列
- PMON还有一个任务,它可以实现服务注册
五、CKPT(Checkpoint Process)
检查点是一个维护数据库一致性的重要的后台进程
检查点是一个数据库事件,它将已修改的数据从脏缓存里刷新到磁盘,并更新控制文件和数据文件的一致性信息
手动设置检查点的语法
alter system checkpoint;
六、MMON(Manageability Monitor)
数据库的自我监视和自我调整的支持进程。实例在运行中,会收集大量有关实例活动和性能的统计数据,这些数据会收集到SGA中,MMON定期从SGA中捕获这些统计数据,并将其写入到数据字典中,便于后续对这些快照进行分析。(默认情况,MMON每隔一个小时收集一次快照)
七、ARCn(Archiver)
归档进程,这个进程是可选的,如果数据库配置为归档模式,这个进程就是必须的。
八、RAC相关后台进程
- 锁监视器(Lock monitor,LMON)进程
- 锁管理器守护(Lock manager daemon,LMD)进程
- 锁管理器服务器(Lock manager server,LMSn)进程
- 可诊断性守护(Diagnosability daemon,DIAG)进程
- 锁(Lock,LCK0)进程
- CRS相关的进程
九、ASM相关进程
ASM实例除了传统的DBWR,LGWR,CKPT,SMON,PMON等进程还包含如下后台进程:
- 自动存储管理后台(Automatic Storage Management Background,ASMB)进程: ASMB与ASM 实例的前台进程连接,周期性的检查两个instance的健康状况。每个数据库实例同时只能与一个ASM实例连接,因此数据库只会有一个ASMB后台进程。
- 重新平衡(Rebalance,RBAL)进程:负责协调磁盘组的重新平衡活动(负责磁盘组均衡)
- CJQ0 和Jnnn 进程:作业队列
- QMNC 和Qnnn:高级队列
- EMNn:事件监视器进程(Event Monitor Process)
- MMAN:内存管理器(Memory Manager)
- ARB0-ARBn:在同一时刻可以存在许多此类进程,它们分别名为ARB0、ARB1,以此类推,执行实际的重新平衡分配单元移动进程。
- GMON:用于ASM磁盘组监控
- O0nn 01-10:这组进程建立到ASM实例的连接,某些长时间操作比如创建数据文件,RDBMS会通过这些进程向ASM发送信息。