天天看点

oracle后台进程

DBWR

DBWR执行将数据块缓冲区写入数据文件的工作。

下列情况DBWR会将脏块写入磁盘

服务器进程将一缓冲区移入dirty链,当dirty链达到临界长度时,服务器进程会通知DBWR写入操作。临界长度是数据块隐藏参数_DB_BLOCK_WRITE_BATCH值的一半

服务器进程在LRU表中查找可用的数据块缓冲,如果查找了_DB_BLOCK_MAX_SCAN_CNT定义数量的缓冲区后,仍没有查到未用缓冲区,则停止查找,并通知DBWR写入操作

如果DBWR3秒未活动,则出现超时。 DBWR对LRU表查找指定数目的缓冲区,将找到的脏缓冲区写入磁盘。每当超时,DBWR就查找新的缓冲区组。查找的数目为_DB_BLOCK_WRITE_BATCH值得两倍

出现检查点,LGWR指定一修改缓冲区表写入磁盘,DBWR负责写入

LGWR

LGWR负责将日志缓冲区写入到日志文件

触发LGWR写操作的条件

当用户进程提交事务时,写入一个提交记录

每3秒将日志缓冲区输出

当缓冲区1/3满时

当DBWR将修改缓冲区写入磁盘时,则将日志缓冲区输出

当log buffer达到1M时

CKPT

CKPT进程在检查点出现时,对全部数据文件的文件头进行修改,并在控制文件中记录该检查点。

SMON

SMON负责实例启动时执行实例恢复,并清理不在使用的临时段。9i开始,事务回滚操作也是由SMON负责。SMON本身不做恢复操作,主要起整体协调作用。

PMON

PMON在用户进程出现故障时执行进程恢复,负责清理存储区和释放该进程所使用的资源

RECO

RECO启用分布式选项才会存在该进程。RECO能够自动解决分布式事务中的故障

MMAN

MMAN实现共享内存自动管理的功能,自动调整共享内存 各个组件的大小

ARCH

ARCH将已填满的在线日志文件复制到指定的存储设备

LCKn

LCKn在具有并行服务器选件的环境下使用,可多至10个进程,用于实例间的封锁

CJQ0和JXXX

它是一个任务队列的调度进程,负责从job$表中找到需要执行的任务,并分配job进程执行,如果job进程不足,会自动产生新的job进程(JOB_QUEUE_PROCESSES参数范围内).cjq0进程如果被杀掉,会重启。所以JXXX进程也可以杀掉。当一些job进程占用大量系统资源,导致数据库性能问题时,可以考虑杀掉job进程,不过在杀掉前,要做好分析,如果job进程正在做一个数据量很大的大型修改事务,那么杀掉job会导致大量的回滚操作,使系统性能问题加剧。

QMNC和QXXX

QMNC是队列监控同步进程。QXXX是队列服务进程

PMON,SMON,DBWR,LGWR,RECO,CKPT,MMAN,PSP0为oracle数据库必不可少的核心进程,无论哪个出现故障,都会导致数据库实例崩溃