Oracle各后台进程简介

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(通用任务执行进程):主要是分担另外某个进程的阻塞处理。

相关推荐