目 录CONTENT

文章目录

Oracle体系结构-SMON详解

暮渔木鱼
2025-08-01 / 0 评论 / 0 点赞 / 6 阅读 / 0 字 / 正在检测是否收录...

一、SMON的设计定位

SMON是Oracle实例启动时自动创建的核心后台进程之一,其核心角色是系统级“垃圾回收器”与“恢复协调器”。与PMON(关注单个进程异常)不同,SMON聚焦于全局性维护任务,确保数据库的一致性与空间效率。其设计目标包括:

  • 故障恢复自动化:在实例崩溃后自动执行恢复。
  • 空间资源优化:清理临时对象、合并碎片空间。
  • 数据字典健康维护:清理无效元数据条目。
  • RAC环境协同:支持集群节点的故障转移恢复。

二、核心功能与工作原理

1. 实例恢复(Instance Recovery)

  • 触发条件:数据库异常关闭(如服务器断电)导致数据文件、控制文件、重做日志的SCN不一致。
  • 恢复流程
    • 前滚(Roll Forward):SMON从重做日志中读取最后一次检查点后的所有重做记录,重演已提交和未提交的事务,确保数据文件包含崩溃前的所有变更。
    • 回滚(Roll Back):前滚后,SMON利用Undo段回滚未提交的事务,确保数据一致性。
  • 优化机制
    • 增量检查点(Incremental Checkpoint)减少恢复时间。
    • 参数 FAST_START_MTTR_TARGET 控制恢复时长上限。

2. 空间管理

  • 临时段清理:​异常操作(如索引创建中断)遗留的临时段(SEGMENT_TYPE='TEMPORARY')由SMON自动回收。​可通过查询 DBA_EXTENTS 监控临时段数量变化。
  • 空闲区间合并(Coalesce Free Extents)
    仅限字典管理表空间(DMT):SMON合并物理相邻的空闲Extent,形成更大连续空间。
    触发条件:表空间的 PCTINCREASE 设置非零值,且SMON每5分钟自动唤醒检查。
    性能影响:合并需持有排他锁(ST锁),可能引发 ORA-01575 等待或高CPU消耗。

3. 数据字典维护

  • 清理OBJ$基表
    OBJ$存储所有对象(表、索引等)的元数据。SMON定期删除已删除对象或“NOT THERE”对象的无效条目(TYPE#=10),防止表膨胀。
    清理频率:实例启动后每12小时执行一次。

4. 回滚段管理

  • 自动收缩:若回滚段设置 OPTIMAL 大小,SMON将其收缩至该值。
  • 离线回滚段处理:标记为离线但仍有活动事务的回滚段,SMON周期性尝试真正离线。

5. RAC环境中的扩展角色

  • 节点故障恢复:集群中某实例崩溃时,存活节点的SMON读取故障实例的重做日志,完成数据恢复。

三、SMON的触发机制与行为特征

功能模块 触发条件 关键行为
实例恢复 数据库异常关闭后重启 前滚重做日志 → 回滚未提交事务
临时段清理 会话异常终止(如索引创建失败) 回收临时段空间,更新 DBA_EXTENTS
空闲区间合并 DMT表空间 +PCTINCREASE≠0 + 每5分钟定时唤醒 持有ST锁合并相邻Extent,可能阻塞DDL操作
OBJ$清理 实例启动后每12小时 删除 TYPE#=10且无依赖的无效记录
回滚段收缩 回滚段大小超过 OPTIMAL设定 动态收缩至 OPTIMAL

四、性能影响与优化策略

  1. CPU资源消耗:​SMON周期性执行维护任务(如合并空间、清理OBJ$),可能持续占用高CPU,属正常现象。​异常排查:若CPU长期满载,需检查是否有大规模事务回滚或碎片合并。

  2. 锁竞争问题:​空间合并需持有排他性ST锁,可能引发DDL操作等待(ORA-01575)。​优化建议

    • 迁移表空间至本地管理(LMT),避免合并操作。
    • 禁用空闲合并:ALTER SYSTEM SET EVENT='10269 TRACE NAME CONTEXT FOREVER, LEVEL 10'
  3. 大事务回滚加速:​参数 FAST_START_PARALLEL_ROLLBACK 控制SMON回滚并行度:

    • HIGH:并行度=4×CPU数,加速大规模事务恢复。

五、SMON在Oracle体系中的协同关系

  • 与CKPT协作:CKPT触发检查点,SMON利用检查点SCN确定恢复起点。
  • 与PMON互补:PMON清理失败进程的资源;SMON处理系统级残留(如临时段)。
  • 与DBWn联动:实例恢复时,SMON指导DBWn写入恢复后的脏块。

六、总结:SMON的核心价值

SMON是Oracle自治管理的核心引擎,其设计体现了 “自我修复”与“资源自治” 的理念:

  • 高可靠性保障:通过自动化恢复机制最大限度减少宕机影响。
  • 空间效率优化:动态回收资源,提升数据库长期健康度。
  • 适应性演进:随着Oracle架构升级(如LMT表空间、自动Undo管理),SMON职责逐步精简,但仍是系统健壮的基石。
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区