ITPub博客

首页 > 数据库 > Oracle > 如何对Oracle统计信息进行收集和维护

如何对Oracle统计信息进行收集和维护

原创 Oracle 作者:a960549548 时间:2025-06-04 14:43:55 0 删除 编辑

 11g   及以上   :

查看自动收集任务及状态:(11g及以上) 

1
select  client_name,status  from  Dba_Autotask_Client  where  client_name= 'auto optimizer stats collection' ;

  查看自动收集任务执行时间窗口: (11g及以上) 

1
2
3
select  WINDOW_NAME, WINDOW_NEXT_TIME, WINDOW_ACTIVE, OPTIMIZER_STATS 
   from  DBA_AUTOTASK_WINDOW_CLIENTS 
  order  by  WINDOW_NEXT_TIME;

  关闭自动收集任务:  

1
2
3
4
5
6
BEGIN 
       DBMS_AUTO_TASK_ADMIN.DISABLE( 
                      client_name =>  'auto optimizer stats collection' , 
                      operation =>  NULL , window_name =>  NULL ); 
   END ; 
  /

  开启自动收集任务:  

1
2
3
4
5
6
BEGIN 
         DBMS_AUTO_TASK_ADMIN.ENABLE( 
                        client_name =>  'auto optimizer stats collection' , 
                        operation =>  NULL , window_name =>  NULL ); 
     END ; 
     /

  10g:

查看自动收集任务及状态:

1
2
3
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' ;

  开启   /   关闭自动收集任务:

方法一:

1
2
exec  dbms_scheduler.disable( 'SYS.GATHER_STATS_JOB' );
exec  dbms_scheduler.enable( 'SYS.GATHER_STATS_JOB' );

  方法二:

1
2
alter  system  set  "_optimizer_autostats_job" = false  scope=spfile;
alter  system  set  "_optimizer_autostats_job" = true  scope=spfile;

  获得当前自动收集统计信息的执行时间

1
2
3
4
col WINDOW_NAME format a20
col DURATION format a20
col REPEAT_INTERVAL format a75
select  t2.window_group_name,t1.window_name,t1.repeat_interval,t1.duration  from  dba_scheduler_windows t1,dba_scheduler_wingroup_members t2  where  t1.window_name=t2.window_name;

  修改统计信息执行的时间

--  修改  WEEKEND_WINDOW  的配置  (  改成和  WEEKNIGHT_WINDOW  相同  ,  即周一  ~  周五  ,  每日的  22:00  向后  8  小时  ,  至次日凌晨  6  点  )

1
2
3
4
5
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 ;
/

 --   周末两天都是全天  :

1
2
3
4
5
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 ;
/

  查看统计信息执行的历史记录

--JOB  运行历史记录

1
2
select  *  from  dba_scheduler_job_log
where   job_name =  'GATHER_STATS_JOB' ;

--   正在运行的  job

1
select  *  from  dba_scheduler_running_jobs;


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

请登录后发表评论 登录
全部评论
Oracle ACE,MySQL 8.0 OCP,PMP,拥有OceanBase OBCP,TiDB PCTP,GoldenDB GDCP等多项认证,ITPUB认证专家,微信公众号:DBA之友。

注册时间:2022-02-08

  • 博文量
    132
  • 访问量
    171504