·Flashback Data Archiver Process (FBDA)
·Space Management Coordinator Process (SMCO)
Archiver Processes (ARCn)(归档器进程)
在发生redo log 切换时ARCn进程负责将online redo log文件复制到 归档位置。这些进程同样可以收集事务redo数据然后把它们传输到standby database(DG)位置。只有在数据库为ARCHIVELOG mode(归档模式),且自动归档开启时,这些进程会存在。
Job Queue Processes (CJQ0 and Jnnn)(job队列进程)
Oracle数据库使用job queue 进程来运行用户的jobs。一个job,是一个用户自定义的有计划的任务(运行一次或多次)。举个例子,你可以使用job queue(job队列)来预设一个长时间运行的更新,在后台运行。给一个开始的日期和时间间隔,job queue进程会在下个时间间隔过后尝试运行这个job
Oracle数据库动态管理job queue进程,因此,当有需要的时候,可以启用更多的job queue 进程。当进程空闲后,数据库会释放它们所使用的资源。
动态job queue进程可以在一个给定的间隔并发运行大量的job,事件发生的顺序如下:
1、 job coordinator process(CJQ0 job协调进程)会根据OracleScheduler的需要自动启动或者关闭。这个协调进程周期性的select JOB$表中需要运行的jobs。
2、 协调进程动态产生jobqueue slave processes(Jnnn)来运行jobs
3、 Job queue 进程运行由CJQ0进程选择的jobs中的一个。每个job queue进程在一个时间只能运行一个job,直到完成。
4、 在进程完成一个job的执行后,它轮询其他job。如果没有job需要运行,那么它进入睡眠状态,会周期性的醒来去轮询。如果进程没找到任何新的job,那么它会在预设的时间间隔后终止。
初始化参数JOB_QUEUE_PROCESSES设置是实例中可以并发运行job queue进程的最大数量。
注意:如果JOB_QUEUE_PROCESSES设为0,那么job协调进程就不会启动了。
Flashback Data Archiver Process (FBDA)(闪回数据归档进程)
FBDA进程将 被追踪表 的历史行数归档到 FlashbackData Archives.当一个事务在被追踪表DML,且事务提交时,这个进程会把这些被操作过的行的前镜像存储到Flashback Data Archive。它还保存了当前行的元数据。
FBDA自动管理flash back dataarchive的空间,结构,保存时间。另外,process会保存一个痕迹,来说明这个被归档的行的事务 发生的时间离现在多长时间了。
Space Management Coordinator Process (SMCO)(空间管理协调进程)
SMCO进程协调 和任务相关的多种空间管理的执行,比如预先空间划分,以及空间回收。SMCO动态产生小弟进程(Wnnn)来执行任务。
Slave Processes(奴隶进程,或小弟进程)
小弟进程,是为其他进程工作的小弟进程。这小节描述了Oracle数据库使用的一些小弟进程。
I/O Slave Processes(I/O奴隶进程)
I/O奴隶进程(Innn),在不支持异步I/O的系统和硬件上模拟一步I/O。异步I/O,没有对传输没有时间要求,使其他进程在传输完成之前就可以开始
举个例子,假设一个应用 在一个不支持异步I/O的操作系统上 写入了1000个块,每次写都是顺序发生,等待上一个写完成后才继续写。在异步I/O的磁盘,应用可以把块批量写入,然后在等待完成通知的同时去干其他工作。
为了模拟异步I/O,一个进程管理着几个努力进程。Invoker process(调用进程)给每个奴隶进程分配工作,这些奴隶进程会等待每个写完成,并在完成后报告调用进程。
在真正的异步I/O,操作系统会等待I/O结束,然后报告给进程。而模拟异步I/O,奴隶进程会等待并报告给调用者。
数据库支持下列不同类型的I/O奴隶进程:
·Recovery Manaer(RMAN)使用的I/O奴隶进程
当使用RMAN备份或者恢复数据,你可以在disk,tape两种类型的硬件上使用I/O奴隶进程。
·Database writer slaves(数据库写入其奴隶进程)
如果服务器只有一个CPU,则使用多个DBWn并不现实。此时数据库可以把I/O分布给多个奴隶进程。DBWR是扫描buffercache LRU列表找寻需要写入磁盘的块的唯一进程,那么I/O奴隶进程为这些块执行I/O操作。
Parallel Query Slaves(并行查询奴隶)
在parallel execution(并行执行),server 进程作为 parallel execution coordinator(并行执行协调器) 有责任去解析查询,分配和控制 奴隶进程,以及把结果 推送给用户。给出了一个SQL 查询的查询计划,协调器会把执行计划中的每个(operators)操作分解为并行片,按照查询中指定的顺序运行它们,然后奴隶进程执行这些(operators)产生的结果再整合起来。
下图显示了对employees表的并行扫描。表动态分割(或动态分区)为加载单元,称之为(granules)。一个granule是表中的一些块,由一个奴隶进程读取处理,这个过程称之为 parallel execution server ,它用Pnnn作为名字格式

数据库在execution server 执行时会把granules映射给它们。当一个execution server完成从对应的granule中读取行。以及还有granules剩余,它将会从协调器中获取另外的一个granule。这个操作过程将持续到表被读完。Execution servers将结果推送回协调器,它将这些片组装成所需的full table scan。
单个操作的Parallel executin server 数量,就是一个操作的degree ofparallelism(并行度)。一个SQL语句中的多个操作,都拥有一样的并行度.