先调整AWR自动采样的时间间隔,以便在较短的时间内看到效果。否则在默认的1小时采样一次的环境下,测试周期过长。
1.获取AWR默认采样间隔时间
参考文章《【AWR】调整AWR数据采样时间间隔及历史快照保留时间》(http://space.itpub.net/519536/viewspace-668410)。
sys@ora10g> col SNAP_INTERVAL for a20
sys@ora10g> col RETENTION for a20
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4067278754 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
AWR默认的采样时间间隔是1小时。
2.调整自动采样时间间隔
将自动采样的时间间隔设置为最小值(最小值是10分钟自动采样一次)。
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
interval => 10,
retention => 2*24*60);
END;
/
3.确认自动采样时间间隔调整成功
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4068874419 +00000 00:10:00.0 +00002 00:00:00.0 DEFAULT
未来将会在10分钟的整数倍处触发AWR的自动采样。
4.手工完成采样的命令
sys@ora10g> exec dbms_workload_repository.create_snapshot;
PL/SQL procedure successfully completed.
5.测试场景设计
1)十分钟的采样间隔,5分钟“之前”手工采样一次,观察下一个自动采样是否发生;
2)十分钟的采样间隔,5分钟“之后”手工采样一次,观察下一个自动采样是否发生;
6.测试结果及结论
sys@ora10g> col BEGIN_INTERVAL_TIME for a30
sys@ora10g> col END_INTERVAL_TIME for a30
sys@ora10g> select SNAP_ID,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME from dba_hist_snapshot order by 3;
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
------- ------------------------- -------------------------
……省略其他输出数据……
31 01-MAY-11 22.30.20.211 PM 01-MAY-11 22.31.32.154 PM --手动采样
32 01-MAY-11 22.31.32.154 PM 01-MAY-11 22.40.20.361 PM --自动采样发生
33 01-MAY-11 22.40.20.361 PM 01-MAY-11 22.48.28.451 PM --手动采样
34 01-MAY-11 22.48.28.451 PM 01-MAY-11 23.00.20.617 PM --跳过“22.50”
35 01-MAY-11 23.00.20.617 PM 01-MAY-11 23.01.55.948 PM --自动采样发生
注意:在“22.50”分的自动采样没有如期完成。这便是这个有趣的现象。
测试推测结论:在自动采样周期的前半周期如果出现采样将不会自动采样的发生;但是,如果是在自动采样周期的后半周期内完成的手动采样,紧跟其后的自动采样将不会发生。
7.小结
建议对上述现象进行多次测试,以便保证结论的可信性。
由于AWR默认情况下的自动采样周期是1小时,因此如果前半小时出现手动采样对整点的自动采样没有影响;在后半小时出现手动采样,下一次整点的自动采样将被取消。
Good luck
阅读(771) | 评论(0) | 转发(0) |