Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 数据库概述
  • MySQL

  • Redis

  • Oracle

    • Oracle概述
    • Oracle版本与部署选型
    • Oracle安装配置与客户端工具
    • Oracle体系结构与实例数据库
    • Oracle内存结构SGA与PGA
    • Oracle进程与后台任务
      • 1. 学习目标与定位
      • 2. 核心概念总览
      • 3. 底层原理详解
      • 4. 关键机制拆解
        • 4.1. 服务进程与会话执行
        • 4.2. DBWn、LGWR 与提交路径
        • 4.3. CKPT、SMON、PMON 与恢复清理
        • 4.4. ARCn、MMON、LREG 与可观测性
      • 5. 功能模块细节补充
        • 5.1. Server Process
        • 5.2. DBWn
        • 5.3. LGWR
        • 5.4. CKPT
        • 5.5. SMON
        • 5.6. PMON
        • 5.7. MMON
        • 5.8. ARCn
        • 5.9. LREG
      • 6. 开发人员重点提醒
      • 7. 运维人员重点提醒
      • 8. 典型问题与排查
      • 9. 实践建议与检查清单
      • 10. 阶段小结
    • Oracle存储结构与表空间
    • Oracle数据类型与字符集
    • Oracle Schema对象与数据建模
    • SQL基础与Oracle语法特性
    • PLSQL基础与包过程函数
    • Oracle事务与一致性读
    • Oracle锁闩锁与并发控制
    • Undo Redo与归档日志
    • Oracle索引结构与设计
    • 执行计划与DBMS_XPLAN
    • 优化器统计信息与SQL调优
    • AWR ASH与性能诊断
    • Oracle等待事件与故障排查
    • RMAN备份恢复与闪回技术
    • Data Guard与灾备架构
    • RAC集群与服务高可用
    • ASM存储与文件管理
    • Multitenant CDB与PDB
    • 分区表与VLDB实践
    • 数据泵SQLLoader与数据迁移
    • Oracle安全审计与权限治理
    • Oracle开发连接池与JDBC实践
    • JSON向量与多模型能力
    • Oracle运维规范与面试设计题
目录

Oracle进程与后台任务

Oracle 通过前台进程处理用户请求,通过后台进程完成写盘、日志、检查点、恢复、监控和清理。进程模型是理解性能尖刺、恢复耗时和实例状态的关键。

# 1. 学习目标与定位

维度 内容
难度层级 核心到排障
核心目标 从底层运行链路理解本篇主题,能把概念、SQL、指标、故障和工程取舍连起来
适合人群 开发人员理解会话背后的服务进程和提交链路;运维人员理解后台进程状态、等待和故障影响。

# 2. 核心概念总览

Oracle进程与后台任务
├─ Server Process
├─ DBWn
├─ LGWR
├─ CKPT
├─ SMON
├─ PMON
├─ MMON
├─ ARCn
└─ LREG

这张图只用来定位本章范围。正文不会把每个词机械拆成固定问答,而是按 Oracle 的真实运行机制解释它们之间如何协作、在哪里影响开发、在哪里影响运维。

# 3. 底层原理详解

用户连接进入数据库后,通常由服务进程执行 SQL。服务进程负责解析、执行、读写 Buffer Cache、产生 Undo/Redo,并在需要时等待后台进程完成关键动作。

后台进程让 Oracle 能把很多重操作异步化。DBWn 写脏块,LGWR 写 Redo,CKPT 推进检查点,ARCn 归档日志,SMON 做实例恢复和空间清理,PMON 清理异常会话,MMON 采集性能统计,LREG 注册服务。

前台会话慢,经常是后台进程压力的外在表现。提交等待可能是 LGWR 或存储问题,缓存等待可能是 DBWn 写盘跟不上,归档等待可能是 ARCn 或归档目的地异常。

# 4. 关键机制拆解

# 4.1. 服务进程与会话执行

Server Process 是用户会话执行 SQL 的直接载体。它会访问共享池、执行计划、Buffer Cache、Undo 段和锁结构。专用服务器模式下,一个连接通常对应一个服务进程;共享服务器模式下则由调度器和共享服务进程协作。

应用连接池参数会直接影响服务进程数量。连接池过大不等于吞吐更高,可能制造更多上下文切换、PGA 消耗和锁争用。

# 4.2. DBWn、LGWR 与提交路径

DBWn 负责把脏块写回数据文件,但提交不要求数据块立即写盘;提交的关键是 LGWR 把 Redo 写入联机日志。这个设计让 Oracle 可以高效提交,同时依靠 Redo 在崩溃后恢复数据块。

因此提交慢要重点观察 log file sync 和 log file parallel write。若 LGWR 被慢盘、同步备库或日志切换拖住,所有提交会话都会感知到延迟。

# 4.3. CKPT、SMON、PMON 与恢复清理

CKPT 推进检查点并更新控制文件和数据文件头,使恢复起点向前移动。SMON 在实例恢复、临时段清理等场景发挥作用;PMON 清理异常中断会话持有的资源。

实例异常后恢复耗时与检查点推进、Redo 量、脏块数量有关。运维人员要从 alert log 和恢复进度判断数据库是在正常恢复还是卡在文件或日志问题上。

# 4.4. ARCn、MMON、LREG 与可观测性

ARCn 在归档模式下把切换出去的联机日志归档到目标位置。MMON 负责 AWR 快照等监控任务,LREG 负责向监听注册服务。

归档慢会阻塞日志复用,服务未注册会导致客户端无法连接,AWR 采集异常会削弱排障证据。后台进程看似隐形,实际是生产稳定性的骨架。

# 5. 功能模块细节补充

本节围绕概念图中的模块逐个补充底层细节,重点讲它们在 Oracle 运行链路中的位置和相互关系,而不是按固定角色模板拆分。

# 5.1. Server Process

Server Process 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.2. DBWn

DBWn 负责把 Buffer Cache 中的脏块写回数据文件。提交不等于 DBWn 立即写盘,Oracle 依赖 Redo 保证提交后的恢复;如果 DBWn 写盘跟不上,会表现为 free buffer waits、检查点压力和缓存可用块不足。

# 5.3. LGWR

LGWR 是提交路径上的关键后台进程。事务提交时,前台会话通常要等待 LGWR 把相关 Redo 写入联机日志;因此日志盘延迟、同步备库、日志组切换和提交频率都会直接影响业务写入延迟。

# 5.4. CKPT

CKPT 推进检查点并更新控制文件和数据文件头,让实例恢复时需要重放的 Redo 范围缩短。检查点过慢会放大恢复时间,检查点过频又可能增加写 IO 压力。

# 5.5. SMON

SMON 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.6. PMON

PMON 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.7. MMON

MMON 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.8. ARCn

ARCn 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.9. LREG

LREG 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 6. 开发人员重点提醒

  • 连接池最大连接数要结合数据库进程数、PGA 和业务并发设置。
  • 提交频率要平衡事务大小和日志压力,避免循环单行提交或超大事务。
  • 批处理应避开高峰,并提供限速和断点续跑。

# 7. 运维人员重点提醒

  • 监控后台进程存活、等待事件、归档状态、日志切换和服务注册。
  • 出现提交抖动时优先看 LGWR、日志盘和同步备库。
  • 异常会话清理慢时检查 PMON、锁资源和系统负载。

# 8. 典型问题与排查

  • log file sync 高:检查 LGWR 写盘、提交频率、同步 Data Guard。
  • 归档卡住:检查 ARCn、归档目的地、空间和权限。
  • 服务未注册:检查 LREG、listener、local_listener 和 service_names。

# 9. 实践建议与检查清单

  • 后台进程状态正常
  • 日志写等待有基线
  • 归档目标可用
  • 服务注册可查
  • 连接池容量与进程限制匹配

# 10. 阶段小结

本篇的学习重点不是记住术语,而是能把底层机制、业务语义和生产证据连起来。读完本篇后,应该能解释关键组件如何协作、常见问题为什么发生、开发侧如何避免制造风险、运维侧如何用指标和日志把问题定位到具体链路。

上次更新: 2026/06/25, 15:30:11
Oracle内存结构SGA与PGA
Oracle存储结构与表空间

← Oracle内存结构SGA与PGA Oracle存储结构与表空间→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式