SMON功能(二):合并空闲区间

SMON的做用还包括合并空闲区间(coalesces free extent)html

触发场景数据库

早期Oracle采用DMT字典管理表空间,不一样于今时今日的LMT本地管理方式,DMT下经过对FET$和UET$2张字典基表的递归操做来管理区间。SMON每5分钟(SMON wakes itself every 5 minutes and checks for tablespaces with default pctincrease != 0)会自发地去检查哪些默认存储参数pctincrease不等于0的字典管理表空间,注意这种清理工做是针对DMT的,而LMT则无需合并。SMON对这些DMT表空间上的连续相邻的空闲Extents实施coalesce操做以合并成一个更大的空闲Extent,这同时也意味着SMON须要维护FET$字典基表。oracle

现象this

如下查询能够检查数据库中空闲Extents的总数,若是这个总数在持续减小那么说明SMON正在coalesce free space:spa

SELECT COUNT(*) FROM DBA_FREE_SPACE;

在合并区间时SMON须要排他地(exclusive)持有ST(Space Transaction)队列锁, 其余会话可能由于得不到ST锁而等待超时出现ORA-01575错误。同时SMON可能在繁琐的coalesce操做中消耗100%的CPU。htm

如何禁止SMON合并空闲区间递归

能够经过设置诊断事件event=’10269 trace name context forever, level 10′来禁用SMON合并空闲区间(Don’t do coalesces of free space in SMON)队列

10269, 00000, "Don't do coalesces of free space in SMON"
// *Cause:    setting this event prevents SMON from doing free space coalesces

alter system set events '10269 trace name context forever, level 10';
相关文章
相关标签/搜索