一、开启与关闭自动收集统计信息
1、查看是否开启
select client_name,status from dba_autotask_client;
2、开启
exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
3、关闭
exec DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
4、查看自动收集任务历史执行状态
通过时间窗口名称可以看出是周几执行的,在时间窗口内创建了几次job,执行了几次job
SELECT window_start_time, client_name, window_name, jobs_created, jobs_started, jobs_completed
FROM dba_autotask_client_history
WHERE client_name like '%stats%';
5、查看每天自动信息采集时间
SELECT w.window_name,
w.repeat_interval,
w.duration,
w.enabled
FROM dba_autotask_window_clients c, dba_scheduler_windows w
WHERE c.window_name = w.window_name AND c.optimizer_stats = 'ENABLED';
--备注:
#freq=daily:每天收集;
#byday=SUN:一周之内的星期,例如这里是星期日;
#byhour=22 :每天的时间点时,这里是22时;
#byminute=0:每天的的时间点分,这里是0分,则第1分;
#bysecond=0:每天的时间点秒,这里是0秒,则第1秒;
#+000 20:00:00 :表示收集信息的时间区间长,这里表示20小时。
6、查询自动收集任务正在执行的JOB
select client_name, JOB_SCHEDULER_STATUS
from DBA_AUTOTASK_CLIENT_JOB
where client_name = 'auto optimizer stats collection';
这个查询没有结果也很正常,只有job正在运行时,该查询才有结果。
二、调整数据库自动信息采集
1、关闭单个调度时间窗口
BEGIN
DBMS_AUTO_TASK_ADMIN.disable (
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => 'MONDAY_WINDOW');
END;
/
周一已经关闭
2、开启单个调度时间窗口及所有时间调度窗口,只需要使用enable过程
-- 注:单个应指定窗口名字,如window_name => 'MONDAY_WINDOW'
BEGIN
DBMS_AUTO_TASK_ADMIN.enable (
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);
END;
/
3、更改自动收集统计信息时间
begin
dbms_scheduler.disable(name => 'MONDAY_WINDOW');
dbms_scheduler.set_attribute(
name => 'MONDAY_WINDOW',
attribute => 'REPEAT_INTERVAL',
value => 'freq=daily;byday=MON;byhour=2;byminute=0; bysecond=0');
dbms_scheduler.enable(name => 'MONDAY_WINDOW');
end;
/