以下是 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;
/
四、注意事项
-
维护窗口:自动统计收集默认在维护窗口(如
WEEKNIGHT_WINDOW和WEEKEND_WINDOW)运行,可通过以下查询确认:SELECT WINDOW_NAME, ENABLED FROM DBA_AUTOTASK_WINDOW_CLIENTS; -
手动收集建议:禁用自动收集后,需定期手动收集统计信息:
EXEC DBMS_STATS.GATHER_DATABASE_STATS(OPTIONS => 'GATHER AUTO'); -
动态生效:上述操作无需重启数据库,立即生效。
-
权限要求:操作需具有
SYSDBA或ADMINISTER 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 的自动统计信息收集任务。建议生产环境谨慎操作,长期禁用可能导致优化器选择低效执行计划。
评论区