(2)PMON(Process Monitor)
PMON 用于监视服务器进程的执行,并且在服务器失败时清除改服务进程;
负责对失败的用户进程或服务进程进行恢复,并释放进程所占用的资源。
用户可能关闭客户端程序,但是却没有从数据库中退出,或者由于网络的突然中断而造成一个数据库连接的异常终止。这时,Oracle将PMON进程来启动清除中断或失败的用户进程,包括清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA区、PGA区等资源。
此外,它还会定期的检查调度程序和服务程序进程的状态。
SMON相似,PMON也会定期的被唤醒。
(3)DBWR(Database Writer)
用于将数据高速缓存的脏数据写入到数据文件中,当执行DML操作时,服务进程会修改缓存区,并且将这些缓存区标识为”脏缓冲区”,将来将谢谢脏缓冲区数据会由后台进程DBWR写入到数据文件,默认情况下只有一个DBW0进程,通过设置初始化参数db_writer_process可以定义最多10个DBWR进程。
触发DBWR进程的事件:
1.服务器进程不能找到空闲缓冲区:当用户进程在LRU列表中搜索了一定数量的缓存块后,仍然没有找到可用的空闲缓存块,DBWR进程将启动,把脏缓存块写入数据文件。
2.Checkpoint发生时,DBWR进程把所有的脏缓存块从LRU列表中移入到写入列表,并写入到数据文件。
3.数据库缓存块中的写入列表的长度达到一定值的时候,DBWR将写入列表中的脏缓存块写入数据文件。
4.每过3秒钟,DBWR把脏缓存块从LRU列表移到写入列表,一旦写入列表长度达到一定值,DBWR便将数据写入数据文件。
5.当表空间offline时,DBWR把所有属于该表空间的脏缓存块从LRU列表移到写入列表,并且开始写入数据文件。
6.当表空间开始热备时(alter tablespace … begin backup),DBWR把所有属于该表空间的脏缓存块从LRU列表移到写入列表,并且开始写入数据文件。
(4)LGWR(Log Writer)
LGWR用于将重做日志缓冲区所记载的全部内容写入到重做日志:
1,每三秒钟超时(timeout):
当LGWR处于空闲状态时,它依赖于rdbmsrpcmessage等待事件,处于休眠状态,直到三秒时间到,如果这个时候LGWR发现有Redo信息需要写出的话,那么LGWR将执行写的操作,logfilellel write等待事件将会出现。
2.阀值的达到:
Redo log buffer 1/3 满;
Redo log buffer 拥有 1MB 的数据;
参数_log_io_size的设置很重要,一般为log_buffer的1/3大小
3.用户提交(commit):
当一个transaction提交的时候,在Redostream中将记录一个提交标志。在这些Redo被写到磁盘上之前,这个transaction是不能恢复的。所以,在transaction返回成功标志之前,必须等待LGWR写的完成。进程通知LGWR写,并且以logfilesync事件开始休眠。超时为1秒
4.在DBWn写之前:
如果DBWR将要写出的数据的高RBA超过LGWR的on-diskRBA,则DBWR将通知LGWR执行写的操作,在Oracle8i之前,此时DBWR将等待Logfilesync事件。从Oracle8i开始,DBWR把这些block(将要写出的block,这种block的高RBA超过了LGWR的on-diskRBA)放入defer队列中,同时通知LGWR执行Redo写出。
注:log buffer space等待事件说明log buffer空间不够用了。
(5)CKPT(Checkpoint Process)
CKPT用于发出检查点(Checkpoint),并且检查点会同步数据库的数据文件、控制文件和重做日志。当发出检查点时,后台进程CKPT会将检查点时刻的SCN(System Change Number)写入到控制文件和数据文件头部,同时会促使后台进程DBWR将所有脏缓冲区数据写入到数据文件中:
触发条件:
◆日志切换;
◆关闭例程(shutdown abort除外)
◆手工检查点操作(ALTER SYSTEM CHECKPOINT);
◆由初始化参数FAST_START_MTTR_TARGET强制发出检查点;
(6)ARCH(Archive Process)
ARCH用于将重做日志的事务变化赋值到归档日志中,只有ARCHIVELOG模式下才会被启动。默认情况下只会启动两个归档过程(ARC0,ARC1),通过设置初始化参数log_archive_max_process可以最多定义10个归档进程.在ARCHIVELOG模式下,当进行日志切换时会自动生成归档日志;
(7)RECO (恢复进程)用于解决分布式数据库中的故障问题,只有在平台支持 Distributed Option (分布式选项)且初始化参数文件中的 DISTRIBUTED_TRANSACTIONS 参数 值大于零时才创建这个进程。
(8)CJQn Oracle 的作业队列管理依赖于后台进程的执行,它们进行数据刷新及其他定 期的作业。调度进程CJQ0,选择将要执行的作业并扩展作业队列进程(J000-J999)以执 行这些作业,其最大数量由初始化参数JOB_QUEUE_PROCESSES 决定
(9)LMSn 当使用Oracle 真正的应用集群(Oracle Real Application Clusters)选项 时,多个LMS 后台进程(命令为 LCK0-LCK9)用于解决内部实例的锁定问题
(10) Dnnn (调度程序进程)是共享服务器结构的一部分,有助于减少处理多个连接所 需要的资源。对于数据库服务器支持的每一种协议必须至少创建一个调度程序进程,调度程序进程在数据库启动时,基于初始化参数 DISPATCHERS 创建,也可以在数据库打开时创 建或取消。
(11)Server:Snnn 创建服务器进程来管理需要专用服务器的数据库连接。服务器进程可以数据文件进行I/O 操作。它的最大数量由初始化参数 SHARED_SERVERS 确定
(12)Pnnn(并行查询服务器进程) 当数据库内部启用并行查询选项,一个查询的资源要求可以分布在多个处理器中。当实例启动时,就启动指定数量的并行查询服务器进程,其数量由参数:PARALLEL_MIN_SERVERS 参数决定。这样的进程出现在操作系统级,其命名为 P000、P0001 等。其最大数量由 PARALLEL_MAX_SERVERS 决定。
(13)MMON(Manageability Monitor) process was introduced in 10g and is associated with the Automatic Workload Repository new features used for automatic problem detection and self-tuning. MMON writes out the required statistics for AWR on a scheduled basis.
(14) MMAN(Memory Manager)自动内存管理;