近日,由于系统需求,周一到周五的自动统计信息收集与业务冲突,所以决定修改统计信息的自动收集时间,停止周一到周四的收集,仅仅保留周五六日的。
其实修改的方法简单,无非就是直接调整统计信息收集的job执行时间或调整调用该jo的window的时间。但是为安全直观期间,我还是使用EM control来完成修改,并将脚本记录如下。(注意版本是11.2.0.3的,10G版本的自动收集job和11G是不同的)
首先查询一下当前window的执行时间信息
- select * from DBA_SCHEDULER_WINDOWS
更改window的执行时间
- BEGIN
- DBMS_SCHEDULER.SET_ATTRIBUTE(
- name=>'"SYS"."WEEKEND_WINDOW"',
- attribute=>'RESOURCE_PLAN',
- value=>'ETL_CRITICAL_PLAN'); <<<<<<<<<<<<<<< 这里设定资源管理计划
- END;
- /
- BEGIN
- DBMS_SCHEDULER.SET_ATTRIBUTE(
- name=>'"SYS"."WEEKEND_WINDOW"',
- attribute=>'REPEAT_INTERVAL',
- value=>'FREQ=WEEKLY;BYDAY=FRI,SAT,SUN;BYHOUR=1;BYMINUTE=0;BYSECOND=0'); <<<<<<<<<<<<<<<这里标示,window执行的时间
- END;
- /
加入job到window
- BEGIN
- sys.dbms_scheduler.disable( '"ORACLE_OCM"."MGMT_STATS_CONFIG_JOB"' );
- sys.dbms_scheduler.set_attribute( name => '"ORACLE_OCM"."MGMT_STATS_CONFIG_JOB"', attribute => 'job_action', value => '"ORACLE_OCM"."MGMT_CONFIG"."COLLECT_STATS"');
- sys.dbms_scheduler.set_attribute_null( name => '"ORACLE_OCM"."MGMT_STATS_CONFIG_JOB"', attribute => 'start_date');
- sys.dbms_scheduler.set_attribute_null( name => '"ORACLE_OCM"."MGMT_STATS_CONFIG_JOB"', attribute => 'repeat_interval');
- sys.dbms_scheduler.set_attribute_null( name => '"ORACLE_OCM"."MGMT_STATS_CONFIG_JOB"', attribute => 'end_date');
- sys.dbms_scheduler.set_attribute( name => '"ORACLE_OCM"."MGMT_STATS_CONFIG_JOB"', attribute => 'schedule_name', value => '"SYS"."WEEKEND_WINDOW"'); <<<<<<<<<<<<<<< 将该job加入到指定的window中
- sys.dbms_scheduler.enable( '"ORACLE_OCM"."MGMT_STATS_CONFIG_JOB"' );
- END;
再次查询一下window目前的执行时间,看修改的结果
- select * from DBA_SCHEDULER_WINDOWS
本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/908241,如需转载请自行联系原作者