跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

Oracle 11g 自动收集统计信息导致 IO 过高优化方案

Oracle 11g 默认开启自动统计信息收集,业务高峰期易引发 IO 瓶颈。通过调整维护窗口时间、限制执行时长或暂停特定任务,可有效降低系统负载。提供具体 PL/SQL 操作命令及验证查询,帮助 DBA 灵活配置自动任务,平衡性能与监控需求。

月亮邮递员发布于 2017/4/26更新于 2026/9/657 浏览
Oracle 11g 自动收集统计信息导致 IO 过高优化方案

Oracle 11g 自动收集统计信息导致 IO 过高优化方案

Oracle 11g 默认开启了自动统计信息收集任务(Auto Stats Collection),这虽然能保持优化器数据的准确性,但在业务高峰期往往会造成显著的 I/O 压力。如果监控发现数据库在特定时段出现 IO 飙升,我们通常可以根据实际情况调整任务的执行时间、持续时间,或者直接暂停相关窗口。

调整维护窗口配置

我们可以通过 DBMS_SCHEDULER 包来修改系统维护窗口的行为。以下操作演示了如何禁用特定窗口、调整执行时长以及设定新的开始时间。

1. 停止当前任务

首先,我们需要暂时禁用默认的维护窗口,防止它在原定时间触发。

BEGIN
    DBMS_SCHEDULER.DISABLE(
        name => '"SYS"."FRIDAY_WINDOW"',
        force => TRUE);
END;
/

2. 修改任务持续时间

为了避免长时间占用资源,建议限制统计收集的最大运行时间。这里设置为 240 分钟(单位是分钟)。

BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
        name => '"SYS"."FRIDAY_WINDOW"',
        attribute => 'DURATION',
        value => numtodsinterval(240, 'minute'));
END;
/

3. 调整任务开始时间

将任务迁移到业务低峰期,例如周一凌晨 1 点。注意这里的 REPEAT_INTERVAL 格式。

BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
        name => '"SYS"."FRIDAY_WINDOW"',
        attribute => 'REPEAT_INTERVAL',
        value => 'FREQ=WEEKLY;BYDAY=MON;BYHOUR=1;BYMINUTE=0;BYSECOND=0');
END;
/

4. 重新启用任务

配置完成后,记得重新启用窗口以生效。

BEGIN
    DBMS_SCHEDULER.ENABLE(
        name => '"SYS"."FRIDAY_WINDOW"');
END;
/

验证与监控

修改后,建议查询视图确认窗口状态是否已更新,并检查历史执行情况以确保任务按预期运行。

查看窗口配置详情:

SELECT 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
AND    t2.window_group_name IN ('MAINTENANCE_WINDOW_GROUP', 'BSLN_MAINTAIN_STATS_SCHED');

查看自动任务客户端的历史执行记录:

SELECT client_name,
       window_name,
       jobs_created,
       jobs_started,
       jobs_completed
FROM   dba_autotask_client_history
WHERE  client_name LIKE '%stats%'
ORDER BY window_start_time;

注意事项

  • 权限要求:执行上述操作通常需要 SYSDBA 或拥有 ADMINISTER DATABASE TRIGGER 权限的用户。
  • 业务影响:调整统计信息收集策略可能会影响 SQL 执行计划的稳定性,建议在测试环境验证后再应用到生产库。
  • 窗口名称:不同版本的 Oracle 或不同的安装配置下,维护窗口的名称可能略有差异,请根据实际 dba_scheduler_windows 中的名称进行调整。

通过合理调度这些后台任务,我们可以在保证数据准确性的同时,显著降低对在线业务的 I/O 干扰。

目录

  1. Oracle 11g 自动收集统计信息导致 IO 过高优化方案
  2. 调整维护窗口配置
  3. 1. 停止当前任务
  4. 2. 修改任务持续时间
  5. 3. 调整任务开始时间
  6. 4. 重新启用任务
  7. 验证与监控
  8. 注意事项

更多推荐文章

查看全部
  • Java NFC 开发痛点分析及 nfctools 库应用指南
  • C++ 模板与泛型编程:实现代码复用的核心手段
  • 高校 AIGC 检测新规解读:AI 率标准与应对策略
  • Meta-Llama-3-8B-Instruct 工业设备故障诊断实践
  • Java Map 常用方法与核心实现类详解
  • 大模型基础知识:分词与提示工程详解
  • 大模型提示工程实战:15 个核心技巧与策略
  • SparkAi 创作系统:AI 大模型、绘画与视频生成一站式方案
  • 2024 大模型学习路线:从零基础到精通的系统指南
  • Z-Image-Turbo 实战指南:零基础快速上手 AI 绘画
  • OpenClaw 多 Agent 多 Discord 频道配置实战:从零搭建 AI 团队
  • ComfyUI 可视化搭建教程:构建 AI 绘画工作流
  • Open WebUI 新技术 MCPo:将 MCP 工具转换为 OpenAPI 接口并支持 Ollama
  • LW-CTrans: 用于 3D 医学图像分割的轻量级 CNN-Transformer 混合网络
  • Coze 抓取小红书爆款视频写入飞书多维表实战
  • Java 泛型核心机制、类型擦除与实战技巧
  • VSCode Copilot 登录失败排查指南:常见问题与解决方案
  • Java IO 基础:OutputStream 类详解
  • Lostlife2.0 整合 LLaMA-Factory 引擎,增强 NPC 对话逻辑
  • Python 数据科学工具链入门:NumPy、Pandas、Matplotlib 实战

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online