ITPub博客

首页 > 数据库 > Oracle > 10G自动收集统计信息修改

10G自动收集统计信息修改

原创 Oracle 作者:wddwr7307914 时间:2021-05-10 07:11:50 0 删除 编辑


Oracle 10g,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。
这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。

1、获得当前自动收集统计信息的执行时间
col WINDOW_NAME for a20
col REPEAT_INTERVAL for a60
col DURATION for a30
set linesize 120


SELECT t1.window_name, t1.repeat_interval, t1.duration,enabled
FROM dba_scheduler_windows t1, dba_scheduler_wingroup_members t2
WHERE t1.window_name = t2.window_name
AND t2.window_group_name IN
('MAINTENANCE_WINDOW_GROUP', 'BSLN_MAINTAIN_STATS_SCHED');


# WINDOW_NAME:任务名
# REPEAT_INTERVAL:任务重复间隔时间
# DURATION:持续时间


##查看自动收集统计信息的任务及状态:
select job_name,schedule_name,enabled,last_start_date,last_run_duration,next_run_date  
from dba_scheduler_jobs a
where job_name = 'GATHER_STATS_JOB'

2.关闭方法
BEGIN
DBMS_SCHEDULER.DISABLE(
name=>'"SYS"."WEEKNIGHT_WINDOW"',
force=>TRUE);
END;
/

BEGIN
DBMS_SCHEDULER.DISABLE(
name=>'"SYS"."WEEKEND_WINDOW"',
force=>TRUE);
END;
/

3.修改统计信息执行的时间
--修改WEEKEND_WINDOW的配置 (改成和WEEKNIGHT_WINDOW相同,即周一~周五,每日的22:00向后8小时,至次日凌晨6点)
begin
dbms_scheduler.set_attribute('WEEKEND_WINDOW','REPEAT_INTERVAL','freq=daily;byday=SAT,SUN;byhour=22;byminute=0;bysecond=0');
dbms_scheduler.set_attribute('WEEKEND_WINDOW','DURATION','+000 08:00:00');
end;
/

--若要还原成以前默认设置,可执行如下
--周末两天都是全天:
begin
dbms_scheduler.set_attribute('WEEKEND_WINDOW','REPEAT_INTERVAL','freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0');
dbms_scheduler.set_attribute('WEEKEND_WINDOW','DURATION','+002 00:00:00');
end;
/

4.开启方法
BEGIN
DBMS_SCHEDULER.ENABLE(
name=>'"SYS"."WEEKNIGHT_WINDOW"');
END;
/

BEGIN
DBMS_SCHEDULER.ENABLE(
name=>'"SYS"."WEEKEND_WINDOW"');
END;
/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69947868/viewspace-2771460/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中国DBA联盟(ACDU)成员,Oracle PostgreSQL ACE,CSDN博客专家及B站知名UP主,全网粉丝10万+,目前服务于工业互联网,擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,安装迁移,性能优化、故障应急处理。

注册时间:2020-06-13

  • 博文量
    203
  • 访问量
    213013