轻松高效管理:全面掌握Oracle数据库自动维护任务

1 自动任务概念

自动维护任务

自动维护任务是指定期自动启动对数据库执行维护操作的任务,比如为查询优化器收集模式对象统计信息。

自动维护任务在维护窗口中运行,维护窗口是预定义的时间间隔,旨在在系统负载较低的时间段内发生。您可以根据数据库的资源使用模式自定义维护窗口,或者禁用某些默认窗口的运行。您还可以创建自己的维护窗口。

Oracle数据库有以下预定义的自动维护任务:

  • Automatic Optimizer Statistics Collection - 收集数据库中没有统计信息或只有过时统计信息的所有模式对象的优化器统计信息。SQL查询优化器使用该任务收集的统计信息来提高SQL执行的性能。
  • Optimizer Statistics advisor - 分析如何收集统计信息,并建议可以进行的更改,以微调统计信息收集。
  • Automatic Segment Advisor-识别有可用空间回收的段,并就如何整理这些段提出建议。 您还可以手动运行段顾问以获取更多最新的建议,或者获取关于自动段顾问没有检查可能的空间回收的段的建议。
  • Automatic SQL Tuning Advisor - 检查高负载SQL语句的性能,并就如何调优这些语句提出建议。您可以配置此advisor以自动实现SQL概要文件建议。
  • SQL Plan Management (SPM) Evolve Advisor - 演进最近添加到SQL计划基线的计划。advisor通过消除手动执行的需求来简化计划的演进。

维护窗口

维护窗口是运行自动维护任务的连续时间间隔。维护窗口是属于名为MAINTENANCE_WINDOW_GROUP的窗口组的Oracle Scheduler窗口。

Scheduler窗口可以是一个简单的重复间隔(例如“在每个星期六的午夜到早上6点之间”),也可以是一个更复杂的间隔(例如“在每个月的最后一个工作日的午夜到早上6点之间,不包括公司假期”)。

当维护窗口打开时,Oracle数据库为计划在该窗口中运行的每个维护任务创建一个Oracle Scheduler作业。为每个作业分配一个作业名称,该名称是在运行时生成的。所有自动维护任务作业名称都以ORA$AT开头。例如,自动段顾问的作业可能被称为ORA$AT_SA_SPC_SY_26。当自动维护任务任务完成后,它将从Oracle Scheduler作业系统中删除。但是,仍然可以在Scheduler作业历史记录中找到该作业。

在维护窗口非常长的情况下,除了Automatic SQL Tuning Advisor之外的所有自动维护任务每四个小时重新启动一次。无论窗口大小如何,该特性都可以确保定期运行维护任务。

自动维护任务的框架依赖于在数据库中定义的维护窗口。每次安装Oracle数据库都会自动定义维护窗口,如下表所示。

窗口名称 描述
MONDAY_WINDOW 周一晚上10点开始,凌晨2点结束。
TUESDAY_WINDOW 从周二晚上10点开始,到凌晨2点结束。
WEDNESDAY_WINDOW 从周三晚上10点开始,到凌晨2点结束。
THURSDAY_WINDOW 从周四晚上10点开始,到凌晨2点结束。
FRIDAY_WINDOW 从周五晚上10点开始,到凌晨2点结束。
SATURDAY_WINDOW 从周六早上6点开始,时长20个小时。
SUNDAY_WINDOW 从周日早上6点开始,时长20个小时。

2 配置自动任务

要在维护窗口的任何子集中启用或禁用特定的维护任务,可以使用DBMS_AUTO_TASK_ADMIN PL/SQL包。

启用和禁用任务

默认情况下,所有维护任务都在所有预定义的维护窗口中运行。您可以禁用特定窗口的维护任务。

  • 查看默认的自动维护窗口任务及其状态

col client_name for a35 select client_name,status from dba_autotask_client; CLIENT_NAME STATUS ----------------------------------- -------- sql tuning advisor ENABLED auto optimizer stats collection ENABLED auto space advisor ENABLED