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