Oracle数据库自动维护任务(Automated Maintenance Tasks)
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 A T 开头。例如,自动段顾问的作业可能被称为 O R A AT开头。例如,自动段顾问的作业可能被称为ORA AT开头。例如,自动段顾问的作业可能被称为ORAAT_SA_SPC_SY_26。当自动维护任务任务完成后,它将从Oracle Scheduler作业系统中删除。但是,仍然可以在Scheduler作业历史记录中找到该作业。
在维护窗口非常长的情况下,除了Automatic SQL Tuning Advisor之外的所有自动维护任务每四个小时重新启动一次。无论窗口大小如何,该特性都可以确保定期运行维护任务。
启用和禁用任务
默认情况下,所有维护任务都在所有预定义的维护窗口中运行。您可以禁用特定窗口的维护任务。
查看默认的自动维护窗口任务及其状态
col client_name for a35
select client_name,status from dba_autotask_client;
禁用某个任务 - 比如 sql tuning advisor
BEGIN
dbms_auto_task_admin.disable(
client_name => ‘sql tuning advisor’,
operation => NULL,
window_name => NULL);
END;
/
set line 200
select status,last_change from dba_autotask_client where client_name=‘sql tuning advisor’;
启用某个任务 - 比如auto space advisor
exec dbms_auto_task_admin.enable(client_name=>‘auto space advisor’,operation=> NULL,window_name=>NULL);
col last_change for a40
select client_name,status,last_change from dba_autotask_client;
禁用和启用任务的所有窗口
EXECUTE DBMS_AUTO_TASK_ADMIN.DISABLE;
col window_name for a20
select window_name,autotask_status from dba_autotask_window_clients;
–启动所有
EXECUTE DBMS_AUTO_TASK_ADMIN.ENABLE;
配置窗口
默认情况下,所有维护任务都在所有预定义的维护窗口中运行。您可以禁用特定窗口的维护任务。此外,可以使用DBMS_SCHEDULER PL/SQL包自定义维护窗口,比如希望将预定义的维护窗口调整为适合您的数据库环境的时间,或者创建一个新的维护窗口。您。
查看默认的自动维护任务的窗口(MAINTENANCE_WINDOW_GROUP)情况
禁用某个任务某个窗口的运行,比如任务sql tuning advisor在窗口MONDAY_WINDOW的
BEGIN
dbms_auto_task_admin.disable(
client_name => ‘sql tuning advisor’,
operation => NULL,
window_name => ‘MONDAY_WINDOW’);
END;
/
select autotask_status, optimizer_stats, segment_advisor, sql_tune_advisor
from dba_autotask_window_clients where window_name=‘MONDAY_WINDOW’;
修改某个维护窗口的属性,通过DBMS_SCHEDULER PL/SQL包包含一个SET_ATTRIBUTE存储过程来实现,比如如下
–修改周六窗口的属性,改为持续时间为4小时
set line 300
col window_name for a20
col repeat_interval for a60
col duration for a16
col next_start_date for a42
select window_name,repeat_interval,duration,next_start_date,enabled,active
from dba_scheduler_windows where window_name=‘SATURDAY_WINDOW’;
BEGIN
dbms_scheduler.disable(
name => ‘SATURDAY_WINDOW’);
dbms_scheduler.set_attribute(
name => ‘SATURDAY_WINDOW’,
attribute => ‘DURATION’,
value => numtodsinterval(4, ‘hour’));
dbms_scheduler.enable(
name => ‘SATURDAY_WINDOW’);
END;
/
select window_name,repeat_interval,duration,enabled
from dba_scheduler_windows where window_name=‘SATURDAY_WINDOW’;
DBA_AUTOTASK_CLIENT_JOB 包含有关为自动维护任务创建的当前运行的调度器作业的信息。它提供了关于这些作业所针对的一些对象的信息,以及来自同一任务的先前实例化的一些附加统计信息。其中一些附加数据来自通用Scheduler视图。
DBA_AUTOTASK_CLIENT 提供每个自动化维护任务7天和30天的统计数据。
DBA_AUTOTASK_JOB_HISTORY 列出自动维护任务作业运行的历史记录。作业在完成执行后被添加到这个视图中。
DBA_AUTOTASK_WINDOW_CLIENTS 列出属于MAINTENANCE_WINDOW_GROUP的窗口,以及每个维护任务的窗口的启用或禁用状态。
DBA_AUTOTASK_CLIENT_HISTORY 提供每个自动维护任务的作业执行计数的每个窗口历史记录。
ALL_SCHEDULER_WINDOWS 显示数据库中所有Scheduler窗口的信息。