本篇整理了Oracle 自动收集任务维护窗口如何进行新增与删除
自定义创建维护窗口,添加到自动任务窗口组
sql
BEGIN
--
DBMS_SCHEDULER.CREATE_WINDOW(
window_name => 'MINUTE_TEN_WINDOW', -- 自定义窗口名称,唯一标识该窗口
--duration => NUMTODSINTERVAL(1, 'hour'), -- 窗口持续时间:1小时 NUMTODSINTERVAL(1, 'hour')
duration => numtodsinterval(5, 'minute'), -- 窗口持续时间:10分钟 numtodsinterval(10, 'minute')
resource_plan => 'DEFAULT_MAINTENANCE_PLAN', -- 窗口关联的资源计划(维护窗口专属,确保自动任务占用合理资源)
/***
repeat_interval => 'FREQ=DAILY;BYHOUR=5;BYMINUTE=0;BYSECOND=0' -- 窗口重复执行规则:
-- FREQ=DAILY:每天执行
-- BYHOUR=5:在每天的5点触发
-- BYMINUTE=0:在5点0分触发
-- BYSECOND=0:在5点0分0秒触发(精确到秒)
***/
repeat_interval => 'FREQ=MINUTELY;INTERVAL=20' --每分钟级频率,每隔20分钟触发一次
);
-- 添加新的窗口到自动任务窗口组中
DBMS_SCHEDULER.ADD_GROUP_MEMBER(
group_name => 'MAINTENANCE_WINDOW_GROUP',
member => 'MINUTE_TEN_WINDOW');
END;
/
创建的窗口启用auto optimizer stats collection
%%其余自动任务同理%%
BEGIN
DBMS_AUTO_TASK_ADMIN.ENABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => 'MINUTE_TEN_WINDOW' -- 绑定到自定义窗口
);
END;
/
删除自动任务与窗口的方法
禁用自动任务
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => 'MINUTE_TEN_WINDOW' -- 绑定到自定义窗口
);
END;
/
从自动任务组中移除窗口
BEGIN
DBMS_SCHEDULER.REMOVE_GROUP_MEMBER(
group_name => 'MINUTE_TEN_WINDOW',
member => 'EARLY_MORNING_WINDOW');
END;
/
删除窗口
BEGIN
DBMS_SCHEDULER.DROP_WINDOW(
window_name=>'MINUTE_TEN_WINDOW'
,force=>true
);
END;
/
确认不同窗口的启动情况
SELECT w.window_name, w.repeat_interval, w.duration, w.enabled,w.next_start_date,
c.OPTIMIZER_STATS --auto optimizer stats collection 的状态
,c.SEGMENT_ADVISOR -- auto space advisor 的状态
,c.SQL_TUNE_ADVISOR -- sql tuning advisor 的状态
FROM dba_autotask_window_clients c, dba_scheduler_windows w
WHERE c.window_name =w.window_name