一、主要后台进程总览
功能划分总结
- 内存管理:MMAN, MMON, MMNL
- 进程和资源管理:PMON, SMON
- 数据写入与恢复:DBWn, LGWR, CKPT, ARCn, RECO, RVWR
- I/O 管理:ASMB, RBAL
- 队列与作业管理:CJQ0, Jnnn, QMNC
- 通信与网络管理:Dnnn
二、内存管理
2.1MMAN (Memory Manager)
功能:负责自动内存管理,动态调整 SGA(System Global Area)中各组件的内存分配,以优化性能。
特点:在启用自动内存管理(AMM)时,MMAN 执行相关任务。
2.2MMON (Manageability Monitor)
功能:负责收集数据库性能统计信息,自动执行与数据库管理相关的任务,如 AWR 报告的生成。
关联进程:MMNL(Manageability Monitor Light)是 MMON 的子进程,负责写入快照数据到 AWR 中。
2.3MMNL
功能:MMNL 进程是 MMON(Manageability Monitor)进程的一个子进程,它负责处理与 Oracle 数据库的自动化管理相关的轻量级任务。具体来说,MMNL 主要涉及到 AWR(Automatic Workload Repository)数据的处理。
三、进程和资源管理
3.1PMON (Process Monitor)
功能:负责清理失败的用户进程,释放资源如锁、事务、未提交的更改等,并且会重新启动失败的共享服务器或分配器进程。
特点:在用户进程异常终止时,PMON 会介入清理。
3.2SMON (System Monitor)
功能:负责数据库实例启动时的系统级恢复,包括清理临时段、回滚未提交的事务,以及合并自由空间。
特点:当数据库实例崩溃后,由 SMON 进程来完成数据库的一致性恢复。
四、数据写入与恢复
4.1 DBWn (Database Writer)
功能:负责将数据库缓冲区缓存(DB Buffer Cache)中的脏块(dirty blocks)写入数据文件。脏块是指已经被修改但尚未写入磁盘的数据块。
进程数:通常为 DBW0 至 DBW9,可以通过参数 DB_WRITER_PROCESSES 配置多个数据库写进程。
4.2LGWR (Log Writer)
功能:负责将重做日志缓冲区(Redo Log Buffer)中的数据写入在线重做日志文件(Online Redo Log Files)。这是保证事务持久性(Durability)的关键进程。
触发条件:事务提交、重做日志缓冲区超过阈值、每隔 3 秒、检查点或数据库关闭。
4.3CKPT (Checkpoint)
功能:负责触发数据库检查点,将检查点信息(包括数据文件的更新位置)写入控制文件和数据文件头。检查点有助于减少数据库恢复时间。
关联进程:DBWn 和 LGWR 也会在检查点过程中工作。
4.4 ARCn (Archiver)
功能:负责将已满的重做日志文件从在线重做日志文件组复制到归档日志文件中,这是在启用归档模式(ARCHIVELOG 模式)时使用的进程。
进程数:通常为 ARC0 至 ARC9,可以通过参数 LOG_ARCHIVE_MAX_PROCESSES 配置多个归档进程。
4.5RECO (Recoverer)
功能:负责分布式事务的恢复,尝试提交或回滚在分布式环境中失败的事务。
特点:主要用于管理跨数据库实例的分布式事务。
4.6RVWR (Recovery Writer)
功能:负责将闪回日志(Flashback Logs)写入闪回恢复区。用于闪回数据库功能,可以快速恢复到过去的某个时间点。
特点:只有在启用闪回数据库(Flashback Database)功能时,RVWR 才会活动。
五、I/O管理
5.1ASMB (ASM Background)
主要功能:
管理 ASM 实例:ASMB 进程负责处理 ASM 实例和数据库实例之间的通信。它使得数据库实例能够与 ASM 实例进行交互。
监控 ASM:ASMB 进程监控 ASM 的健康状态,并确保数据库和 ASM 实例之间的连接稳定。
协调操作:处理数据库实例请求的 ASM 操作,如文件读写请求、元数据更新等。
关联性:每个数据库实例通常有一个 ASMB 进程,这个进程在使用 ASM 作为存储的情况下运行。
5.2RBAL (Rebalance)
主要功能:
数据重平衡:RBAL 进程负责在 ASM 中进行数据的重平衡操作。当 ASM 磁盘组中的数据分布不均或当增加/移除磁盘时,RBAL 进程会重新分配数据以保持均匀的负载。
恢复和维护:在 ASM 磁盘组中,如果某个磁盘发生故障或被替换,RBAL 进程会处理数据的恢复和重新分配,以确保数据的完整性和可用性。
动态调整:RBAL 进程可以在系统运行时动态地进行数据重平衡,确保磁盘组的性能和负载均衡。
六、队列与作业管理
6.1CJQ0 (Job Queue Coordinator)
功能:负责调度和管理数据库的作业队列,调度需要运行的作业,并在适当的时间启动它们。
关联进程:多个 Jnnn 进程用来实际执行作业
6.2QMNC (Queue Monitor)
功能:负责管理 Oracle 高级队列(Advanced Queuing,AQ)的队列操作,如消息的排队和传递。
进程数:多个 Qnnn 进程可以同时运行,取决于系统负载。
6.3Jnnn
功能:Jnnn 是作业从属进程(Job Slave Process)的命名方式,它们是用于执行数据库计划任务的后台进程。这些进程由 CJQ0(Job Queue Coordinator)进程启动并管理,负责执行数据库调度器(DBMS_SCHEDULER)或作业队列(DBMS_JOB)中定义的作业。
七、通信与网络管理
7.1Dnnn (Dispatcher)
功能:在共享服务器配置下,负责管理和调度客户端的请求至可用的服务器进程。
进程数:取决于配置的共享服务器模式(SHARED_SERVERS 参数)和负载。