在 Oracle 数据库的运行机制中,后台进程是支撑数据库各项功能的 “隐形引擎”。这些进程在实例启动时自动创建,负责完成数据读写、故障恢复、资源管理等核心任务。本文基于 Oracle 19c 官方文档,对数据库常见后台进程进行系统梳理,帮助数据库管理员理解进程工作原理,为性能调优和故障诊断提供基础。
后台进程的基础特性
Oracle 后台进程是指在V$PROCESS
视图中存在且PNAME
列非空的进程,它们独立于用户会话运行,持续维护数据库的正常运转。其运行模式受THREADED_EXECUTION
参数影响:当该参数设为TRUE
时(Linux 和 UNIX 环境),DBWn
、PMON
、PSP
、VKTM
以操作系统进程形式运行,其他进程则作为操作系统线程存在。
后台进程的命名通常遵循 “缩写 + 编号” 规则(如ARC0
、LMS1
),编号部分可能包含数字或字母,用于区分同类型的多个进程(如ARC0-ARC9
、ARCa-ARCt
)。
核心后台进程分类与功能解析
根据功能定位,Oracle 后台进程可分为基础核心进程、存储管理进程、高可用进程、数据复制与同步进程等类别,每类进程承担特定职责。
一、基础核心进程:数据库运行的 “基石”
这类进程是所有数据库实例必需的基础组件,负责数据持久化、故障恢复等核心功能。
1. 数据读写相关进程
DBWn(Database Writer Process)
核心功能:将数据库缓冲区缓存中被修改的脏块写入数据文件。
工作机制:通过多块写入(Multiblock Writes)提升效率,块大小由DB_BLOCK_SIZE
定义。进程数量由DB_WRITER_PROCESSES
参数控制(1-100 个),命名规则为DBW0-DBW9
、DBWa-DBWz
(前 36 个)和BW36-BW99
(第 37 个及以后)。
关联场景:触发于检查点、缓冲区不足或超时等情况。LGWR(Log Writer Process)
核心功能:将 SGA 中 redo 日志缓冲区的 redo 条目顺序写入在线 redo 日志文件。
关键特性:若启用 redo 日志多路复用,LGWR 会同时写入多个日志文件;在多处理器系统中,会创建LGnn
(如LG00
)工作进程提升写入性能(同步备库场景除外)。
触发时机:事务提交、日志缓冲区使用量达 1/3、距上次写入超 3 秒等。CKPT(Checkpoint Process)
核心功能:在检查点发生时通知DBWn
写入脏块,并更新数据文件和控制文件的检查点信息。
附加职责:每 3 秒检查 PGA 内存使用量,若超过PGA_AGGREGATE_LIMIT
参数值则触发内存回收。
2. 故障恢复与系统维护进程
SMON(System Monitor Process)
核心功能:执行实例恢复(如崩溃后的数据一致性修复)和系统维护任务。
具体职责包括:- 回收临时表空间中孤立的临时段
- 管理 undo 表空间(在线、离线、收缩 undo 段)
- 维护支持闪回功能的 SCN - 时间映射表
- 在 RAC 环境中,可对其他故障实例执行恢复
PMON(Process Monitor Process)
核心功能:监控进程状态,清理异常终止的进程资源。
工作流程:定期扫描进程列表,发现异常终止进程后,协调CLMN
(清理主进程)和CLnn
(清理工作进程)完成会话资源释放、锁释放等清理操作。RECO(Recoverer Process)
核心功能:解决分布式数据库中因网络或系统故障导致的悬而未决事务。
工作机制:通过查询 pending 事务表,定期尝试连接远程数据库,自动完成本地事务的提交或回滚,并从 pending 表中移除已解决事务。
二、存储与 I/O 管理进程
这类进程主要用于管理数据库存储(尤其是 ASM 存储)、优化 I/O 性能,确保数据存储的可靠性和效率。
1. ASM 相关进程
ARB0(ASM Rebalance Process)
核心功能:在 ASM 磁盘组内重平衡数据区(Extent)。
性能控制:重平衡强度由ASM_POWER_LIMIT
参数决定(值越高,重平衡速度越快)。RBAL(ASM Rebalance Primary Process)
核心功能:协调 ASM 磁盘组的重平衡活动。
环境差异:在 ASM 实例中直接协调重平衡;在数据库实例中负责管理 ASM 磁盘组元数据。GMON(ASM Disk Group Monitor Process)
核心功能:监控已挂载的 ASM 磁盘组,维护磁盘成员关系和状态信息。
关联进程:当需要执行磁盘离线、删除等操作时,会生成Bnnn
(如B000
)工作进程处理,避免自身阻塞。
2. I/O 优化进程
Innn(Disk and Tape I/O Worker Process)
核心功能:为DBWR
、LGWR
或 RMAN 备份会话提供 I/O 服务。
适用场景:在不支持异步 I/O 的平台上,模拟异步 I/O 行为,通过参数配置启用。NFSn(Direct NFS Dispatcher IO Worker Process)
核心功能:为数据库进程执行 Direct NFS I/O 操作。
启用条件:需通过ENABLE_DNFS_DISPATCHER
参数启用,进程数量基于CPU_COUNT
自动调整,仅在使用 Direct NFS 库时生效。
三、高可用与数据保护进程
这类进程支撑 Data Guard、RAC 等高可用架构,负责数据同步、故障切换、集群管理等任务,保障系统连续性。
1. RAC 环境核心进程
LMON(Global Enqueue Service Monitor Process)
核心功能:监控 RAC 集群状态,管理全局资源。
关键职责:维护实例成员关系,检测实例状态变化,触发全局队列服务(GES)和全局缓存服务(GCS)的资源重配置。LMSn(Global Cache Service Process)
核心功能:在 RAC 实例间管理缓存资源和数据块传输。
性能特性:最多可创建 100 个进程(如LMS0-LMS9
、LMSA-LMSZ
),负责处理跨实例的缓存请求、数据块传输和 GCS 相关消息。ACMS(Atomic Control File to Memory Service Process)
核心功能:在 RAC 环境中协调控制文件与所有实例 SGA 的一致性更新。
设计目标:确保跨实例操作(如控制文件修改)在故障场景下仍能在所有实例上正确执行,仅处理小型非阻塞状态变更。
2. Data Guard 相关进程
DMON(Data Guard Broker Monitor Process)
核心功能:管理 Data Guard Broker 配置中的数据库监控与状态同步。
工作机制:在DG_BROKER_START=TRUE
时启动,维护配置文件(含所有数据库元数据),与其他数据库的DMON
进程通信,确保配置一致性。MRP0(Managed Standby Recovery Process)
核心功能:在物理备库上协调 redo 日志的应用。
工作流程:启动时提取 redo 数据,协调 redo 应用到备库数据文件,是物理备库数据同步的核心进程。TTnn(Redo Transport Worker Process)
核心功能:采用异步(ASYNC)传输模式,将 redo 日志从主库发送到远程备库。
扩展能力:支持多进程并行传输(命名如TT00-TT99
、TTA-TTZ
),提升大事务场景下的传输效率。
四、其他重要进程
除上述类别外,以下进程在特定场景中发挥关键作用,涵盖任务调度、性能监控、数据归档等功能。
CJQ0(Job Queue Coordinator Process)
核心功能:管理 Oracle 调度器任务,生成工作进程执行定时任务。
配置参数:JOB_QUEUE_PROCESSES
指定最大工作进程数(Jnnn
),CJQ0
根据任务量动态启动所需进程。FBDA(Flashback Data Archiver Process)
核心功能:为跟踪表(Tracked Table)归档历史数据到闪回数据归档区。
工作机制:当修改跟踪表的事务提交时,存储行的前镜像(Pre-image),并自动管理归档空间(如分区、保留策略)。MMON(Manageability Monitor Process)
核心功能:执行数据库可管理性任务,如生成 AWR 快照、运行 ADDMA(自动诊断监控器)分析。
扩展能力:通过MZnn
(专用工作进程)和Mnnn
(共享工作进程)并行处理任务,提升效率。ARCn(Archiver Process)
核心功能:在归档模式下,将满的在线 redo 日志复制到归档存储。
配置要点:LOG_ARCHIVE_MAX_PROCESSES
指定初始进程数,数据库会根据归档需求自动增加进程(最多 36 个),确保 redo 日志不被阻塞重用。
进程协作示例:从事务提交到数据持久化
一个简单的事务提交操作会触发多个后台进程协同工作:
- 用户提交事务后,LGWR 将 redo 日志缓冲区的条目写入在线 redo 日志;
- 事务修改的数据块被标记为 “脏块”,由 DBWn 在检查点或缓冲区不足时写入数据文件;
- CKPT 在检查点完成后,更新数据文件和控制文件的检查点 SCN;
- 若启用归档模式,ARCn 会将已写满的 redo 日志复制到归档日志文件;
- 若在 RAC 环境,LMSn 会同步数据块到其他实例的缓存,确保集群数据一致性。
总结
Oracle 后台进程是数据库功能的 “执行者”,其设计遵循 “分工明确、协同高效” 的原则 —— 基础进程保障核心运行,存储进程优化数据管理,高可用进程提升系统可靠性。理解这些进程的功能和协作机制,是排查 “进程异常导致的性能下降”“故障恢复失败” 等问题的关键。
在实际运维中,可通过V$PROCESS
和V$BGPROCESS
视图监控进程状态,结合告警日志分析异常进程。例如:ARCn
进程频繁重启可能暗示归档存储空间不足;DBWn
等待事件过高可能需要调整DB_WRITER_PROCESSES
参数。
如需更详细的进程参数配置,可参考 Oracle 官方文档:Background Processes。