-
自动维护任务是定期自动启动以对数据库执行维护操作的任务。自动维护任务在维护窗口中运行的,维护窗口属于 oracle 调度程序窗口maintenance_window_group。当维护窗口打开时,oracle 数据库为计划在该窗口中运行的每个维护任务创建一个 oracle 调度程序作业。每个作业都分配有一个在运行时生成的作业名称。所有自动维护任务作业名称都以 ora$at 开头。自动维护任务作业完成后,将从 oracle 调度程序作业系统中删除。但是,仍然可以在调度程序作业历史记录中找到该作业。
-
-
涉及的概念很多:调度scheduler、窗口maintenance window、任务task、资源计划resource plan
-
-
看看这些相关对象
-
-
调度
-
set lin 120 pages 100
-
col owner for a12
-
col job_name for a32
-
col program_name for a35
-
col state for a12
-
select owner,job_name,program_name,enabled,state from dba_scheduler_jobs order by job_name;
这里能看到 base line maintain statstics job的名称(红箭头),这是11g开始有的一个作业,其说明(755838.1)是:
该作业是计算统计作业。此作业在 bsln_maintain_stats_sched 计划上运行 bsln_maintain_stats_prog 程序。程序 bsln_maintain_stats_prog 将使默认基线的统计信息保持最新。
但是具体维护任务(自动优化器统计信息收集、自动段指导、自动 sql 优化指导)通常是看不到的,自动维护任务
执行时才创建一个scheduler,所以上面的语句通常看不到job_name 列中以ora$at开头的作业。
-
-
维护窗口组
-
col window_group_name for a30
-
col comments for a40
-
select window_group_name,enabled,comments from dba_scheduler_window_groups;
-
-
-
自动任务
-
col client_name for a32
-
col window_group for a20
-
select client_name,status,window_group from dba_autotask_client;
-
-
维护窗口
-
set lin 200
-
col window_name for a18
-
col duration for a18
-
col repeat_interval for a55
-
select window_name,repeat_interval,duration,enabled,active from dba_scheduler_windows;
-
启用或禁用整个窗口组,需要用到 dbms_scheduler 包
-
begin
-
dbms_scheduler.disable(
-
name => 'sys.maintenance_window_group',
-
force => true);
-
-
dbms_scheduler.enable(
-
name => 'sys.maintenance_window_group');
-
end;
-
/
-
自动任务需要一堆dba_autotask开头的视图:
-
dba_autotask_client --基础信息,最常用
-
dba_autotask_client_history
-
dba_autotask_client_job
-
dba_autotask_job_history
-
dba_autotask_operation
-
dba_autotask_schedule
-
dba_autotask_task --有时为空,肯定是某个地方出了问题
-
dba_autotask_window_clients --很常用
-
dba_autotask_window_history
-
-
相关维护工具是 dbms_auto_task_admin 这个包
-
-
要启用或禁用所有窗口的所有自动维护任务,请调用不带参数的enable 或 disable过程(关大门)
-
set lin 200
-
col window_next_time for a38
-
col window_name for a18
-
select * from dba_autotask_window_clients;
-
如果 autotask_status 是 disabled(大门关了) 则启用
-
begin
-
dbms_auto_task_admin.enable();
-
end;
-
/
-
-
也可单独禁用某一个任务,例如
-
begin
-
dbms_auto_task_admin.disable(
-
client_name => 'sql tuning advisor', -- 具体名称可通过 dba_autotask_client 获取
-
operation => null,
-
window_name => null);
-
end;
-
/
先到这儿吧。
阅读(712) | 评论(0) | 转发(0) |