-
自动维护任务是定期自动启动以对数据库执行维护操作的任务。自动维护任务在维护窗口中运行的,维护窗口属于 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;
-
/
先到这儿吧。
阅读(881) | 评论(0) | 转发(0) |