oracle各后台进程介绍
后台进程用来执行保证数据库运行所需的实际维护任务。如:某个后台进程维护缓冲区缓存,根据需要将块写出到数据文件.另个进程负责在线重做日志文件写满时将它自己复制到一个归档目标.
可以通过查询v$bgprocess视图看服务器当前后台进程
SQL> select paddr,name,description from v$bgprocess where paddr!='00';
PADDR NAME DESCRIPTION
---------------- ----- ----------------------------------------------------------------
00000001EB1F5920 PMON process cleanup
00000001EC226B30 VKTM Virtual Keeper of TiMe process
00000001EB1F69A0 GEN0 generic0
00000001F0269448 DIAG diagnosibility process
00000001EC227BB0 DBRM DataBase Resource Manager
00000001EB2137A0 VKRM Virtual sKeduler for Resource Manager
00000001F02683C8 PSP0 process spawner 0
00000001EB1F7A20 DIA0 diagnosibility process 0
00000001F026A4C8 MMAN Memory Manager
00000001EC228C30 DBW0 db writer process 0
00000001EB1F8AA0 DBW1 db writer process 1
00000001EB1FFE20 ARC0 Archival Process 0
00000001F02728C8 ARC1 Archival Process 1
00000001EC231030 ARC2 Archival Process 2
00000001EB200EA0 ARC3 Archival Process 3
00000001F026B548 LGWR Redo etc.
00000001EC229CB0 CKPT checkpoint
00000001EB1F9B20 SMON System Monitor Process
00000001EB1FCCA0 SMCO Space Manager Process
00000001F026C5C8 RECO distributed recovery
PADDR NAME DESCRIPTION
---------------- ----- ----------------------------------------------------------------
00000001EB201F20 CJQ0 Job Queue Coordinator
00000001F0273948 QMNC AQ Coordinator
00000001EC22AD30 MMON Manageability Monitor Process
00000001EB1FABA0 MMNL Manageability Monitor Process 2
根据版本的不同,后台进程数、名称、类型等都可能不同.
中心后台进程:
PMON(进程监视器):负责在出现异常中止的连接后完成清理.PMON还会向oracle TNS监听器注册通信,向它传递相关的参数.
SMON(系统监视器):完成所有的系统级任务.包括以下内容:
清理临时空间,合并空闲空间,针对原来不可用的文件恢复活动的事务,执行RAC中失败节点的实例恢复,清理OBJ$,收缩回滚段,‘离线’回滚段.
RECO(分布式数据库恢复):基于2PC分布式协议,允许多个不同的修改实现原子提交,但是在真正提交前,出现网络失败等错误,事务成为一个可疑的分布式事务.此时
就需要RECO来负责联系事务协调器来发现协调的结果。在这之前事务会保持未提交状态.当恢复网络或者错误解决后,RECO可能会提交事务,也可能将事务回滚.
注:可疑分布式事务会导致写阻塞读的情况,即可疑分布式事务不能存在太长时间,DBA可自行手动提交或回滚.
CKPT(检查点进程):建立检查点主要是DBWn的任务.CKPT主要是更新数据文件的文件首部,从而辅助真正的建立检查点的进程.
DBWn(数据库块写入器):负责将脏块(修改过的块)写入磁盘的后台进程,它会写出缓冲区缓存的脏块,从而释放相应的空间.可以配置多个DBWn(上面有2个DBW0和DBW1),
最好的情况是DBWn使用异步I/O将块写入磁盘.采用异步I/O,DBWn会收集要写入的块,交给操作系统,然后立即返回,并收集下一批要写的块,操作系统完成写文件操作之后,它会异步地通知DBWn.
LGWR(日志写入器):它负责将SGA中重做日志缓冲区的内容刷新输出到磁盘.一般在下面几个情况时候,LGWR就会执行刷新操作:
1.每隔3秒会自动刷新一次
2.任何事务发出一个提交时
3.重做日志缓冲区1/3满,或者包含1MB的缓冲数据的时候.
ARCn(归档进程):当LGWR将在线重做日志写满时,归档进程就将其复制到另一个位置.ARCn一般将在线重做日志至少复制到两个位置.一般用于硬盘等介质损坏时数据库的恢复.
DIAG(诊断性进程):它会负责监视实例的整体状况,捕获处理实例失败时所需的信息并记录.
FBDA(闪回数据归档进程):此进程为oracle 11g r1版本新增进程.主要用于闪回数据,它主要维护随时间对表中每行所做的改变,而实现历史数据查询.它将读取事务生成的UNDO,并回滚事务做出的改变,然后将回滚的这些行记录保存在闪回数据归档中.
DBRM(数据库资源管理器进程):为数据库实例配置资源计划.
GEN0(通用任务执行进程):主要是分担另外某个进程的阻塞处理。
可选后台进程:
ASMB(自动存储管理后台):该进程出现在ASM的数据库实例中.它负责与管理存储的ASM实例通信,向ASM实例提供更新的统计信息,并向ASM实例提供一个"心跳".
RBAL(重新平衡进程):该进程也在使用了ASM的数据库实例中运行,向ASM磁盘组增加或去除磁盘时,它负责处理平衡请求,也就是重新分布负载请求.
RAC环境后台进程:
LMON(锁监视器):监视集群中的所有实例,检测实例是否有失败.在实例离开或重新加入集群时重新配置锁和其他资源。
LMD(锁管理器守护进程):它为全局缓存服务(保持块缓冲区在实例间一致)处理锁管理器服务请求.
LMSn(锁管理器服务器进程):主要维持SGA块缓冲区缓存在各个RAC实例间相互保持一致.
LOCK(锁进程):与LMD相似,但它处理所有全局资源的请求.
工具后台进程
CJQO和Jnnn(作业队列进程):oracle通过一种称为快照的数据库对象来提供复制特性,作业队列就是刷新快照时使用的内部机制.
QMNC和Qnnn(高级队列进程):QMNC会监视高级队列.并告诉从队列中删除等待消息的"出队进程":已经有一个消息变为可用.它们还要负责队列传播.
EMNC(事件监视器进程):它是AQ体系结构中的一部分,用于通知对某些消息感兴趣的队列.
DMnn和DWnn(数据泵主进程/工作进程):数据泵是oracle 10g r1中新增的特性,主要用来替代EXP/IMP。
其他后台进程
PSPO(进程生成器进程):它主要负责生成各个后台进程.
VKTM(虚拟时间管理器进程):为oracle实例实现一个一致的、细粒度的时钟.
SMCO(空间管理协调器进程):协调数据库的主动空间管理。
分享到: