首页 > 数据库 > Oracle > Oracle体系结构-SMON详解
SMON是Oracle实例启动时自动创建的核心后台进程之一,其核心角色是 系统级“垃圾回收器”与“恢复协调器”。与PMON(关注单个进程异常)不同,SMON聚焦于全局性维护任务,确保数据库的一致性与空间效率。其设计目标包括:
FAST_START_MTTR_TARGET 控制恢复时长上限。SEGMENT_TYPE='TEMPORARY')由SMON自动回收。
DBA_EXTENTS 监控临时段数量变化。 PCTINCREASE 设置非零值,且SMON每5分钟自动唤醒检查。
ORA-01575 等待或高CPU消耗。TYPE#=10),防止表膨胀。
OPTIMAL 大小,SMON将其收缩至该值。 | 功能模块 | 触发条件 | 关键行为 |
|---|---|---|
| 实例恢复 | 数据库异常关闭后重启 | 前滚重做日志 → 回滚未提交事务 |
| 临时段清理 | 会话异常终止(如索引创建失败) | 回收临时段空间,更新
DBA_EXTENTS |
| 空闲区间合并 | DMT表空间 +
PCTINCREASE≠0 + 每5分钟定时唤醒 |
持有ST锁合并相邻Extent,可能阻塞DDL操作 |
| OBJ$清理 | 实例启动后每12小时 | 删除
TYPE#=10且无依赖的无效记录 |
| 回滚段收缩 | 回滚段大小超过
OPTIMAL设定 |
动态收缩至
OPTIMAL值 |
CPU资源消耗:
SMON周期性执行维护任务(如合并空间、清理OBJ$),可能持续占用高CPU,属正常现象。
异常排查:若CPU长期满载,需检查是否有大规模事务回滚或碎片合并。
锁竞争问题:
空间合并需持有排他性ST锁,可能引发DDL操作等待(
ORA-01575)。
优化建议:
ALTER SYSTEM SET EVENT='10269 TRACE NAME CONTEXT FOREVER, LEVEL 10'。
大事务回滚加速:
参数
FAST_START_PARALLEL_ROLLBACK 控制SMON回滚并行度:
HIGH:并行度=4×CPU数,加速大规模事务恢复。SMON是Oracle自治管理的核心引擎,其设计体现了 “自我修复”与“资源自治” 的理念:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70047426/viewspace-3095212/ ,如需转载,请注明出处,否则将追究法律责任。