Oracle 后台进程详解
Oracle 后台进程详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Oracle 后台进程负责数据库内部管理[1]:
关键:
- PMON
- SMON
- DBWn
- LGWR
- CKPT
- ARCn
详细见:Oracle 后台进程详解。
2. PMON(Process Monitor)
2.1 职责
- 监控用户进程
- 异常断开后清理
- 释放锁
- 回滚未提交事务
- 注册服务到监听器
2.2 触发
- 进程异常终止
- 定期检查
3. SMON(System Monitor)
3.1 职责
- 实例恢复
- 清理临时段
- 合并空闲空间
- 维护 SMON_SCN_TIME
3.2 实例恢复
1. 前滚(Redo)
2. 打开数据库
3. 回滚未提交(Undo)
4. DBWn(Database Writer)
4.1 职责
- 写脏块到数据文件
- Buffer Cache → Disk
- 异步 I/O
4.2 触发
- 检查点
- Dirty List 满
- LRU 满
- 3 秒
- 表空间 OFFLINE
- DROP / TRUNCATE
4.3 多个
ALTER SYSTEM SET db_writer_processes = 4;
5. LGWR(Log Writer)
5.1 职责
- 写 Redo 到 Redo Log File
- Redo Log Buffer → Disk
- 顺序 I/O
5.2 触发
- 提交
- 1/3 满
- 1MB
- 3 秒
- DBWn 写之前
6. CKPT(Checkpoint)
6.1 职责
- 触发检查点
- 更新控制文件
- 更新数据文件头
- 通知 DBWn
6.2 类型
- 完全检查点
- 增量检查点
- 局部检查点
详细见:Oracle 检查点机制详解。
7. ARCn(Archiver)
7.1 职责
- 复制 Redo Log 到归档
- 归档模式
- Data Guard
7.2 多个
ALTER SYSTEM SET log_archive_max_processes = 4;
7.3 触发
- 日志切换
- LGWR 通知
8. MMON(Manageability Monitor)
8.1 职责
- AWR 快照
- 告警
- MMON_SLAVE
8.2 AWR
- 自动快照
- 默认 1 小时
- 保留 8 天
详细见:Oracle AWR 性能报告。
9. MMNL(Manageability Monitor Light)
- ASH 采样
- 活动会话历史
- 1 秒一次
详细见:Oracle ASH 详解。
10. RECO(Recoverer)
- 分布式事务恢复
- 悬挂事务
- 自动解决
11. LREG(Listener Registration)(12c+)
- 注册服务到监听器
- 替代 PMON 的注册职责
12. 其他进程
12.1 CJQn
- 作业队列
- DBMS_SCHEDULER
12.2 Dnnn
- Dispatcher
- 共享服务器
12.3 Snnn
- Shared Server
- 共享服务器
12.4 Wnnn
- Space Management
- 自动空间管理
13. RAC 进程
13.1 LMS
- Lock Manager Server
- Cache Fusion
- 块传输
13.2 LMD
- Lock Manager Daemon
- 全局锁
- 死锁检测
13.3 LMON
- Lock Monitor
- 集群管理
- 节点加入/离开
13.4 LCKn
- Lock Process
- 非 Cache Fusion 资源
详细见:Oracle RAC 架构详解。
14. ASM 进程
14.1 RBAL
- Rebalance Master
- 协调 Rebalance
14.2 ARBn
- Actual Rebalancer
- 执行 Rebalance
14.3 ASMB
- ASM Background
- ASM 与 DB 通信
详细见:Oracle ASM 详解。
15. 查看
15.1 后台进程
SELECT
name, description
FROM v$bgprocess
WHERE paddr <> '00';
15.2 进程
SELECT
spid, program, pid
FROM v$process
WHERE background IS NOT NULL;
15.3 OS 进程
ps -ef | grep ora_
16. 参数
16.1 DBWn
ALTER SYSTEM SET db_writer_processes = 4 SCOPE=SPFILE;
16.2 ARCn
ALTER SYSTEM SET log_archive_max_processes = 4;
16.3 并行
ALTER SYSTEM SET parallel_max_servers = 64;
17. 常见坑与排错
17.1 DBWn 慢
- I/O 瓶颈
- 增大 DBWn 数
- SSD
17.2 LGWR 慢
- log file sync 高
- Redo Log SSD
- 增大 Redo Log
17.3 ARCn 慢
- 归档滞后
- 增大 ARCn 数
- 增大归档目标
18. 监控
18.1 等待事件
SELECT event, total_waits, time_waited
FROM v$system_event
WHERE event LIKE 'log file%' OR event LIKE 'db file%';
18.2 进程活动
SELECT
program,
COUNT(*) AS cnt
FROM v$session
WHERE type = 'BACKGROUND'
GROUP BY program;
19. 最佳实践
- DBWn 数:CPU/8
- ARCn:4
- LGWR:1(重要)
- 监控等待:性能
- I/O 分布:避免瓶颈
- 参数调整:负载
- RAC 进程:集群
- ASM 进程:存储
- 测试:变更
- 文档化:配置
20. 参考资料
[1] Oracle Database Concepts 19c, “Background Processes” https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/background-processes.html