了解你所不知道的SMON功能系列文章汇总:   了解你所不知道的SMON功能(一):清理临时段 了解你所不知道的SMON功能(二):合并空闲区间 了解你所不知道的SMON功能(三):清理obj$基表 了解你所不知道的SMON功能(四):维护col_usage$字典基表 了解你所不知道的SMON功能(五):Recover Dead transaction 了解你所不知道的SMON功能(六):Instance Recovery 了解你所不知道的SMON功能(七):清理IND$字典基表 了解你所不知道的SMON功能(八):Transaction Recover 了解你所不知道的SMON功能(九):维护MON_MODS$字典基表 了解你所不知道的SMON功能(十):维护SMON_SCN_TIME字典基表 了解你所不知道的SMON功能(十一):OFFLINE UNDO SEGMENT 了解你所不知道的SMON功能(十二):Shrink UNDO(rollback) SEGMENT     SMON的功能并不止于此,详细完整的功能列表:

实施local instance recovery

实施OPS/RAC instance recovery

服务于排序段sort segment申请

实施transaction recovery(rollback)

清理不再使用的临时段temporary segments

清理已经被aged out的游标所使用的临时表temporary tables

清理dead instance的临时表temporary tables

 删除OBJ$基表上不再存在的对象记录

 若index online rebuild失败,则负责清理ind$和indpart$

合并extents

在适当的时机收缩 rollback segment

在适当的实际offline rollback segment

恢复crash/instance recovery因datafile不可用(eg. offline)而跳过的dead transaction

恢复前台进程因为crash而造成的dead transaction

  SMON的控制事件event列表:

1. event='10061 trace name context forever, level 10'禁用SMON清理临时段(disable SMON from cleaning temp segments)
2. event='10269 trace name context forever, level 10'来禁用SMON合并空闲区间(Don't do coalesces of free space in SMON)
3. event='10052 trace name context forever'来禁止SMON清理obj$基表
4. 设置隐藏参数_column_tracking_level(column usage tracking),该参数默认为1即启用column使用情况跟踪。设置该参数为0,将禁用column tracking
5. events '10513 trace name context forever, level 2';设置10513事件来临时禁止SMON恢复死事务,这在我们做某些异常恢复的时候显得异常有效,当然不建议在一个正常的生产环境中设置这个事件
6. event='8105 trace name context forever'来禁止SMON清理IND$(Oracle event to turn off smon cleanup for online index build)
7. events '12500 trace name context forever, level 10';可以在设置了12500事件后手动删除SMON_SCN_TIME上的记录,重启实例后SMON会继续正常更新SMON_SCN_TIME。
8. event='10511 trace name context forever, level 1'来禁用SMON OFFLINE UNDO SEGS; 但是10511事件不会跳过”Fast Ramp Up”,而仅会限制SMON对UNDO SEGS产生的工作负载。 一旦设置了10511 event, 则所有已生成的 UNDO SEGS会始终保持ONLINE状态。
9.  event='10512 trace name context forever,level 1' 禁用SMON shrink rollback segment
10. event='10510 trace name context forever,level 1' 禁用检测以便offline rollback