Oracle统计信息收集维护

GATHER_STATS_JOB自动统计信息收集

对象之前从未收集过统计信息,或由于某些原因没有统计信息

对象的统计信息相对陈旧(stale)

收集周期:

工作日:22点开始,持续4小时

周末:6点开始,持续20小时

11g及以上:

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

sql 复制代码
select client_name,status from Dba_Autotask_Client where client_name='auto optimizer stats collection'; 

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

sql 复制代码
select WINDOW_NAME, WINDOW_NEXT_TIME, WINDOW_ACTIVE, OPTIMIZER_STATS 
  from DBA_AUTOTASK_WINDOW_CLIENTS 
 order by WINDOW_NEXT_TIME; 

关闭自动收集任务:

sql 复制代码
BEGIN 
      DBMS_AUTO_TASK_ADMIN.DISABLE( 
                     client_name => 'auto optimizer stats collection', 
                     operation => NULL, window_name => NULL); 
  END; 
 / 

开启自动收集任务:

sql 复制代码
BEGIN 
        DBMS_AUTO_TASK_ADMIN.ENABLE( 
                       client_name => 'auto optimizer stats collection', 
                       operation => NULL, window_name => NULL); 
    END; 
    / 

10g:

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

sql 复制代码
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';

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

方法一:

sql 复制代码
exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');
exec dbms_scheduler.enable('SYS.GATHER_STATS_JOB');

方法二:

sql 复制代码
alter system set "_optimizer_autostats_job"=false scope=spfile;
alter system set "_optimizer_autostats_job"=true scope=spfile;

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

sql 复制代码
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点)

sql 复制代码
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;
/

--若要还原成以前默认设置,可执行如下

--周末两天都是全天:

sql 复制代码
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运行历史记录

sql 复制代码
select * from dba_scheduler_job_log
where  job_name = 'GATHER_STATS_JOB';

--正在运行的job

sql 复制代码
select * from dba_scheduler_running_jobs;
相关推荐
XIAOHEZIcode9 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab3 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence3 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神3 天前
三、用户与权限管理
数据库·mysql
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信