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;
相关推荐
道法自然,人法天40 分钟前
PostgreSQL安装与初始化教程(二进制压缩包)
数据库·postgresql
yzs871 小时前
从Hydra到storage_engine:PostgreSQL列存引擎的性能跃迁与技术进化
数据库·postgresql
红云梦1 小时前
官方 Anthropic Postgres MCP Server 存在 SQL 注入漏洞 -- SafeDB 是如何做到 4 层防御的
数据库·sql
TDengine (老段)1 小时前
红有软件重构智能油田时序数据底座,支撑生产实时感知与设备预测性维护
大数据·数据库·人工智能·重构·时序数据库·tdengine
AC赳赳老秦1 小时前
财务报销自动化:用 OpenClaw 自动识别发票信息、填写报销单、校验报销规则,减少手工操作
运维·网络·eclipse·github·visual studio·deepseek·openclaw
倒霉蛋小马1 小时前
【Redis】什么是缓存击穿?
数据库·redis·缓存
Jing_jing_X2 小时前
MCP (一)是什么?一文讲清 AI 如何连接现实世界
数据库·人工智能·oracle
阿凡观察站2 小时前
2026年工程项目管理软件推荐:这5款主流产品值得关注
大数据·数据库·低代码·finebi·简道云
逸Y 仙X2 小时前
文章二十一:ElasticSearch 词项查询与调度查询实战
java·大数据·数据库·elasticsearch·搜索引擎
倔强的石头1062 小时前
【Linux 指南】文件系统系列(一):磁盘底层原理 —— 从物理结构到 CHS与LBA 寻址全解析
linux·运维·服务器