oracle 后台进程
文章转载自:http://www.linuxidc.com/Linux/2012-12/75818.htm
后台进程用来执行保证数据库运行所需的实际维护任务。如:某个后台进程负责维护缓冲区缓存,根据需要将块写出到数据文件。
可以通过查询v$bgprocess视图看服务器当前后台进程的信息。
SQL代码如下:
SELECT paddr, name, description FROM v$bgprocess WHERE paddr <> '00';
查询结果如下:
根据版本的不同,后台进程数、名称、类型等都可能不同。下面是一些核心的后台进程:
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(通用任务执行进程):主要是分担另外某个进程的阻塞处理。