包括以下几种
进程 |
缩写 |
描述 |
Database Writer |
DBWRn |
将脏数据写回磁盘 |
Log Writer |
LGWR |
把日志数据写到联机日志文件 |
Checkpoint |
CKPT |
负责检查点操作 |
Process Monitor |
PMON |
负责维护用户进程 |
System Monitor |
SMON |
负责实例恢复 |
Archiver |
ARCn |
归档操作,生成归档日志 |
Manageability Monitor |
MMON |
和AWR相关 |
Manageability Monitor Light |
MMNL |
和AWR相关 |
Memory Manager |
MMAN |
和自动SGA管理相关 |
Job Queue Coordination Process |
CJQO |
定时任务进程 |
Recover Writer |
RVWR |
和Flashback Database功能相关 |
Change Tracking Writer |
CTWR |
跟踪数据块变化,支持快速增量备份 |
DBWRn:
DBWRn使用的是LRU(Least Recently Used)算法来从SGA写数据到数据文件。
DBWRn写磁盘时机包括:
检查点,
Server Process在寻找空闲数据块时,超过阈值仍然没有找到就会触发DBWRn。
每3秒。
数据库中最多允许20个DBWR进程,初始化使用DB_WRITER_PROCESSES来定义n,如果没有定义,Oracle会按照每8个CPU一个进程进行分配。
使用异步IO有可能解决同样的问题,不必增加DBWRn。
LGWR:
LGWR写操作有如下原因:
原因1:commit(commit的时候不会直接写DB,而是写到日志文件,一弹写日志文件成功,就会返回commit complete)
原因2:redo log达到1MB
原因3:redo log buffer使用量超过总量1/3
原因4:每3秒钟
原因5:DBWn写磁盘
两种机制:
提前写(Write-Ahead),即DBWRn写数据文件前先确定和数据块相关的redo记录,然后通知LGWR写入磁盘。
快速提交(Fast Commit),即只要redo记录写到日志中,事务就算提交成功。
此外,对于一个繁忙的OLTP,LGWR会把许多commit批量写入日志,而非针对每个commit,这种机制叫做Group Commit。
CKPT:
检查点保证数据一致性状态。在检查点时刻数据文件的内容和SGA内容完全一致。此时SGA中所有脏数据会写入数据文件。
检查点时,DBWRn写数据文件,LGWR写日志,CKPT写控制文件。
检查点类型:
检查点分类 |
说明 |
Instance Recovery Checkpoint |
设置了FAST_START_MTTR_TARGET等参数后触发 |
Media Recovery Checkpoint |
ALTER BEGIN BACKUP时触发的检查点 |
Thread Checkpoint |
日志线程检查点,如果有多个日志线程,控制文件会记录多个线程检查点信息 |
Internal Checkpoint |
设置LOG_CHECKPOINT_INTERVAL等参数后导致的检查点 |
Tablespace Checkpoint |
使用ALTER TABLESPACE OFFLINE时触发的表空间级别检查点 |
Close Database Checkpoint |
关闭数据库时的检查点 |
Incremental Checkpoint |
增量检查点(减小实例崩溃恢复时间) |
Local Database Checkpoint |
ALTER SYSTEM CHECKPOINT触发的本实例检查 |
Global Database Checkpoint |
ALTER SYSTEM CHECKPOINT GLOBAL触发整个数据库检查点(RAC环境) |
PMON:
负责在发现用户进程异常终止后的清理工作,以确保释放占用的资源。例如内存、锁等。PMON会定期唤醒,其它进程也会在需要时主动唤醒PMON。
RAC环境中PMON进程还会向监听器注册负载信息,这对LB非常重要。
SMON:
负责实例恢复(数据库异常关闭,SGA还没有来得及写到磁盘就就关闭了,在此启动时需要实例恢复)。
分为三个阶段:
前滚:读取日志,找到最后一次检查点时间后的日志、重做。
打开数据库。
回滚:SMON回滚未提交事务。(Server Process)也可以进行部分回滚。
SMON其他功能包括:
DMT中,SMON进行空闲Extents合并,每3秒一次。
清理临时段,释放空间。
SMON会定期被唤醒或被其他进程主动唤醒。
ARCn:
负责归档。日志切换时ARCn会被唤醒,每个联机日志能够被覆盖的前提就多了一个,就是完成检查点,还要完成归档操作。
n最多是10个,初始化参数LOG_ARCHIVE_MAX_PROCESSES定义启动时的ARCn的个数。
MMON:
10G以后的版本引入,收集AWR需要的统计数据,这些数据是ADDM和其他自动管理的基础。MMON也生成Server-Generated报警信息。
MMNL:
和MMON一同完成数据收集。
MMAN:
负责自动内存管理。MMON、MMNL、MMAN配合工作。
CJQO:
定时任务。ORACLE 10G有两种定时任务引擎,SCHEDULE和JOB。
CJQO负责生成(Job Queue Slave Process进程)(J000~J999),由具体的Jxxx进程执行用户任务。
RVWR:
要使用FLASHBACK DATABASE功能就要使用FLASHBACK LOG,这些日志是数据块的前镜像,这些日志是由RVWR写成的。
CTWR:
ORACLE 10G跟踪改变的数据块地址,由CTWR进程写入Change-Tracking File。
RBAL、ARBn、ASMB:
这三个是ASM相关的进程。
RBAL(Rebalance Master):协调Disk Rebalance活动。
ARBn(ASM Rebalance):负责真正的Disk Rebalance工作。
ASMB(ASM Background):负责和ASM实例进行通信。