目 录CONTENT

文章目录

Oracle 数据库开启/关闭自动统计信息收集任务的操作指南

暮渔木鱼
2025-03-16 / 0 评论 / 0 点赞 / 6 阅读 / 0 字 / 正在检测是否收录...

以下是 Oracle 数据库开启/关闭自动统计信息收集任务的操作指南,包含详细操作语句和注意事项:


一、查看自动统计收集任务状态

-- 查看所有自动任务状态(重点关注 auto optimizer stats collection)
SELECT CLIENT_NAME, STATUS FROM DBA_AUTOTASK_CLIENT;

输出示例

CLIENT_NAME                         STATUS
----------------------------------- --------
auto optimizer stats collection     ENABLED  -- 自动统计信息收集
auto space advisor                  ENABLED  -- 自动段空间顾问
auto sql tuning advisor             ENABLED  -- 自动SQL调优顾问

二、关闭自动统计信息收集

方法1:通过DBMS_STATS包

BEGIN
  DBMS_STATS.ALTER_STATS_AUTO_TASK(
    ENABLED => FALSE
  );
END;
/

方法2:通过调度任务禁用

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

三、开启自动统计信息收集

方法1:通过DBMS_STATS包

BEGIN
  DBMS_STATS.ALTER_STATS_AUTO_TASK(
    ENABLED => TRUE
  );
END;
/

方法2:通过调度任务启用

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

四、注意事项

  1. 维护窗口:自动统计收集默认在维护窗口(如 WEEKNIGHT_WINDOWWEEKEND_WINDOW)运行,可通过以下查询确认:

    SELECT WINDOW_NAME, ENABLED FROM DBA_AUTOTASK_WINDOW_CLIENTS;
    
  2. 手动收集建议:禁用自动收集后,需定期手动收集统计信息:

    EXEC DBMS_STATS.GATHER_DATABASE_STATS(OPTIONS => 'GATHER AUTO');
    
  3. 动态生效:上述操作无需重启数据库,立即生效。

  4. 权限要求:操作需具有 SYSDBAADMINISTER DATABASE TRIGGER 权限。


五、扩展场景

临时禁用特定维护窗口

BEGIN
  DBMS_AUTO_TASK_ADMIN.DISABLE(
    client_name => 'auto optimizer stats collection',
    operation   => NULL,
    window_name => 'SATURDAY_WINDOW' -- 指定具体窗口
  );
END;
/

调整统计收集策略

-- 设置统计信息保留时长(默认31天)
EXEC DBMS_STATS.ALTER_STATS_HISTORY_RETENTION(60);

通过以上操作,可以根据实际需求灵活控制 Oracle 的自动统计信息收集任务。建议生产环境谨慎操作,长期禁用可能导致优化器选择低效执行计划。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区