当前位置: 首页 > news >正文

Oracle 19C 后台主要进程的功能解析

在 Oracle 数据库的运行机制中,后台进程是支撑数据库各项功能的 “隐形引擎”。这些进程在实例启动时自动创建,负责完成数据读写、故障恢复、资源管理等核心任务。本文基于 Oracle 19c 官方文档,对数据库常见后台进程进行系统梳理,帮助数据库管理员理解进程工作原理,为性能调优和故障诊断提供基础。

后台进程的基础特性

Oracle 后台进程是指在V$PROCESS视图中存在且PNAME列非空的进程,它们独立于用户会话运行,持续维护数据库的正常运转。其运行模式受THREADED_EXECUTION参数影响:当该参数设为TRUE时(Linux 和 UNIX 环境),DBWnPMONPSPVKTM以操作系统进程形式运行,其他进程则作为操作系统线程存在。

后台进程的命名通常遵循 “缩写 + 编号” 规则(如ARC0LMS1),编号部分可能包含数字或字母,用于区分同类型的多个进程(如ARC0-ARC9ARCa-ARCt)。

核心后台进程分类与功能解析

根据功能定位,Oracle 后台进程可分为基础核心进程存储管理进程高可用进程数据复制与同步进程等类别,每类进程承担特定职责。

一、基础核心进程:数据库运行的 “基石”

这类进程是所有数据库实例必需的基础组件,负责数据持久化、故障恢复等核心功能。

1. 数据读写相关进程
  • DBWn(Database Writer Process)
    核心功能:将数据库缓冲区缓存中被修改的脏块写入数据文件。
    工作机制:通过多块写入(Multiblock Writes)提升效率,块大小由DB_BLOCK_SIZE定义。进程数量由DB_WRITER_PROCESSES参数控制(1-100 个),命名规则为DBW0-DBW9DBWa-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)
    核心功能:为DBWRLGWR或 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-LMS9LMSA-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-TT99TTA-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 日志不被阻塞重用。

进程协作示例:从事务提交到数据持久化

一个简单的事务提交操作会触发多个后台进程协同工作:

  1. 用户提交事务后,LGWR 将 redo 日志缓冲区的条目写入在线 redo 日志;
  2. 事务修改的数据块被标记为 “脏块”,由 DBWn 在检查点或缓冲区不足时写入数据文件;
  3. CKPT 在检查点完成后,更新数据文件和控制文件的检查点 SCN;
  4. 若启用归档模式,ARCn 会将已写满的 redo 日志复制到归档日志文件;
  5. 若在 RAC 环境,LMSn 会同步数据块到其他实例的缓存,确保集群数据一致性。

总结

Oracle 后台进程是数据库功能的 “执行者”,其设计遵循 “分工明确、协同高效” 的原则 —— 基础进程保障核心运行,存储进程优化数据管理,高可用进程提升系统可靠性。理解这些进程的功能和协作机制,是排查 “进程异常导致的性能下降”“故障恢复失败” 等问题的关键。

在实际运维中,可通过V$PROCESSV$BGPROCESS视图监控进程状态,结合告警日志分析异常进程。例如:ARCn进程频繁重启可能暗示归档存储空间不足;DBWn等待事件过高可能需要调整DB_WRITER_PROCESSES参数。

如需更详细的进程参数配置,可参考 Oracle 官方文档:Background Processes。

http://www.lryc.cn/news/592016.html

相关文章:

  • CertiK创始人顾荣辉出席上海Conflux大会,聚焦Web3全球化中的安全与合规路径
  • 赛思SLIC芯片、语音芯片原厂 赛思SLIC语音芯片ASX630:国产强“芯”赋能FTTR全光网络​
  • Docker Swarm 集群使用记录
  • 基于LiteNetLib的Server/Client Demo
  • 算法训练营day24 回溯算法③ 93.复原IP地址 、78.子集、 90.子集II
  • 零基础入门:用C++从零实现TCP Socket网络小工具
  • 人脸检测算法——SCRFD
  • Ubuntu系统下快速体验iperf3工具(网络性能测试)
  • 2G和3G网络关闭/退网状态(截止2025年7月)
  • Python技术题1
  • 【RK3576】【Android14】开发环境搭建
  • 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析
  • 用 React-Three-Fiber 实现雪花下落与堆积效果:从零开始的 3D 雪景模拟
  • 前端迟迟收不到响应,登录拦截器踩坑!
  • 小结:Spring MVC 的 XML 的经典配置方式
  • ASP.NET Core Web API 内存缓存(IMemoryCache)入门指南
  • untiy之导入插件(文件方式,适用于git克隆失败)
  • Instagram千号矩阵:亚矩阵云手机破解设备指纹检测的终极方案
  • 【.net core】支持通过属性名称索引的泛型包装类
  • 五国联动!德法意西荷 ASIN 同步上架成泛欧计划硬性门槛
  • 构建智能客服Agent:从需求分析到生产部署
  • 持续同调文章阅读(四)
  • 推荐 1 款 4.5k stars 的AI 大模型驱动的开源知识库搭建系统
  • A33-vstar笔记及资料分享:搭建交叉编译环境
  • Linux云计算基础篇(9)-文本处理工具和变量
  • 无符号乘法运算的硬件逻辑实现 ————取自《湖科大教书匠》
  • 【PTA数据结构 | C语言版】多叉堆的上下调整
  • Python MP3 归一化器和长度分割器实用工具开发指南
  • SQL映射文件
  • Android 应用保活思路