MMON和MMNL
MMON(Manageability Monitor Process)以及MMNL(Manageability Monitor Lite Process)均为后台进程,它们执行与AWR相关的任务。AWR为历史性能数据的资料库,其中包含了系统、会话、单条SQL语句、段,以及服务的累积统计信息。可用于问题检测和自动调优。
MMON从SGA处收集各种内存统计信息,并对其进行过滤,然后以每60分钟的间隔,在AWR中创建这些统计信息的快照。60分钟的间隔为默认值,可以进行修改。同时,还会执行ADDM分析,并为超出阈值的指标发出告警信息。
MMNL则负责收集会话统计信息(包括用户ID、状态、machine,以及正在执行的SQL语句),并将它们存储在ASH缓冲区中。具体来说,MMNL每秒钟在SGA中对V$SESSION和V$SESSION_WAIT两个视图进行采样,然后将数据记录在V$ACTIVE_SESSION_HISTORY视图当中。非活动状态的会话不在采样范围之内。此外,ASH被设计为内存中的滚动缓冲区,因此,较早的信息将会在需要时被覆盖。当ASH缓冲区已满,或者MMON生成快照时,MMNL会将ASH缓冲区中的内容刷新到AWR的DBA_HIST_ACTIVE_SESS_HISTORY视图中。但是由于内存及操作代价较高,因此在刷新操作时,每10个条目只刷新1条。此外,MMNL也会计算各种指标。
MMON和MMNL都可以作为线程或者操作系统进程而运行。除了数据库实例之外,它们也可以在ASM实例上运行。
RECO进程
RECO进程(Recoverer process)是后台进程,用于解决分布式数据库中由于出现网络或系统故障而导致分布式事务挂起的问题。
RECO进程可以作为线程或操作系统进程运行。
LGWR进程
LGWR为后台进程,用于将重做日志条目顺序写入重做日志。重做日志条目在SGA的重做日志缓冲区中生成。如果数据库实现了重做日志的多路复用,则LGWR会将相同的重做日志条目写入重做日志文件组中的所有成员。
LGWR对于那些需要极快的速度进行处理的操作,或者是必须并行的操作,则会将其委托给LGnn(Log Writer Worker helper processes)进程,从而从并发操作中受益。主要是将重做日志条目从日志缓冲区写入重做日志,并为正在等待的前台进程发送写完成消息。
TT00-zz进程(Redo Transport Worker Process),负载将重做日志条目从当前的联机重做日志和standby重做日志传输到配置为异步(ASYNC)模式的远程standby目标。
LGWR可以作为线程或者操作系统进程而运行。除了数据库实例之外,它也可以在ASM实例上运行。在Oracle RAC中,每个实例都有其自己的重做日志文件集合。
归档进程
ARCn为后台进程,只有当数据库处于ARCHIVELOG模式,并启用自动归档时,该进程才会出现。此时,ARCn会自动归档联机重做日志文件。LGWR在重做日志归档之前,不能重用和覆盖联机重做日志组。
数据库将会根据需要启动多个归档进程,从而确保联机重做日志组的归档操作不会出现延迟。可以使用的归档进程为ARC0-ARC9,以及ARCa-ARCt(合计31个可以使用的目标归档位置)。
LOG_ARCHIVE_MAX_PROCESSES 初始化参数用于设置数据库最初调用的ARCn进程数量。如果您预计归档工作量较大,例如在批量数据加载期间等,则可以增加该参数的设置。您也可以设置多个归档日志存储目标位置,建议每一个目标位置至少对应一个归档进程。
ARCn可以作为线程或者操作系统进程而运行。
CJQ0
CJQ0(Job Queue Coordinator Process,作业队列协调器进程)为后台进程,它从数据字典中选择需要运行的作业,然后生成Jnnn(Job Queue Worker Processes)进程来完成这些作业。Oracle Scheduler会根据需要自动启动和停止CJQ0。JOB_QUEUE_PROCESSES 初始化参数用于设置为执行作业而创建的最大进程数量。CJQ0进程会基于要运行的作业数量和可用资源来启动相应数量的进程。
Jnnn进程负责完成CJQ0分配的作业。在选定作业进行处理时,Jnnn进程将会执行如下操作:
收集运行作业所需的全部元数据,例如程序参数和权限信息等。
以作业所有者的身份启动数据库会话,启动事务,然后开始执行。
作业完成后,提交并结束事务。
关闭会话。
作业完成后,Jnnn还将执行如下操作:
重新调度作业(如果需要的话)。
更新作业表中的状态,以反映作业是否已经完成,或计划再次执行。
在作业日志表中插入一条记录。
更新运行计数,并在必要时更新失败和重试计数。
清理。
查找新的作业(如果没有,则进入休眠状态)。
CJQ0和Jnnn均可以作为线程或者操作系统进程而运行。
RVWR
RVWR(Recovery Writer Process)进程是后台进程,用于闪回整个数据库或者某个PDB。也就是说,如果您拥有必要的闪回日志,那么就可以回滚数据库的当前状态到过去某个时间的状态。启用数据库闪回,或者创建了保证还原点时,RVWR就会将闪回数据写入快速恢复区中的闪回数据库日志当中。
RVWR可以作为线程或者操作系统进程而运行。
FBDA进程
FBDA(Flashback Data Archiver Process,闪回数据归档进程)也是后台进程,用于在表的整个生命周期中,对表上发生的事务性更改进行跟踪和存储。这样,您就可以对表进行闪回,以恢复其之前的状态。
在被开启跟踪(闪回归档)的表上提交事务时,FBDA将会检查是否正在生成新的undo信息,并过滤出与该对象相关的内容,然后将undo信息复制到闪回数据归档表空间中。FBDA维护当前行上的元数据,并跟踪已归档的数据量。
FBDA还负责自动管理闪回数据归档的空间、数据组织情况(分区表空间),以及归档数据的保留时间。还会跟踪归档数据的处理进度。
FBDA可以作为线程或者操作系统进程而运行。
注:闪回数据归档为11g引入的特性。它与闪回数据库、闪回查询、回收站等一起,构建起了整个Oracle数据库的闪回体系。
SMCO进程
SMCO(Space Management Coordinator Process,空间管理协调器进程)为后台进程,用于协调各种空间管理任务的执行,包括主动空间分配及回收等。SMCO将会动态生成Wnnn(Space Management Worker Processes)进程来完成这些任务。请注意,IMCO进程( In-Memory Coordinator Process)是负责启动填充和再次填充IM列存储的后台进程。
Wnnn进程代表SMCO和IMCO执行具体的工作。
Wnnn是SMCO动态生成的工作进程,用于在后台完成空间管理任务。这些任务包括,根据空间使用增长分析,将空间预分配到本地管理的表空间和SecureFile段中,以及从删除的段中回收空间等等。同时也包括对fast ingest和延迟插入的处理。在开始工作后,Wnnn将会成为自治性的代理。一旦任务完成,则会从队列中自动选择下一个任务。当进程出现长时间空闲之后,即会自动终止。
Wnnn也会完成启用了In-Memory选项的对象的数据填充和重新填充操作。IMCO会在后台完成列式数据的填充和再填充操作。IMCO的后台和前台进程,都会使用Wnnn来完成数据填充。通过使用Wnnn,会根据In-Memory对象的填充优先级(LOW/MEDIUM/HIGH/CRITICAL)来填充数据。Wnnn进程执行的In-Memory对象数据填充操作,也会从前台进程启动,以便响应查询和DML操作。
SMCO和Wnnn都可以作为线程或者操作系统进程而运行。
Dnnn和Snnn
在共享服务器连接模式下,客户端连接到dispatcher进程(Dnnn),该进程为整个连接创建了一个虚拟通路。当客户端将数据发送到服务器时,dispatcher会将数据接收到虚拟通路当中,并将请求放置在公共队列中,以供空闲的共享服务器进程(Snnn)进行处理。然后Snnn从虚拟通路中读取数据并完成请求所需的数据库工作。当Snnn需要将数据发送回客户端时,Snnn会将数据写回虚拟通路,而Dnnn则负责将数据发送给客户端。Snnn完成客户端请求后,则将虚拟通路释放回Dnnn,然后就可以继续处理其他客户端的请求了。
Snnn和Dnnn都可以作为线程或者操作系统进程而运行。除了数据库实例之外,Dnnn还可以在共享服务器上运行。