Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3541197
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

最近访客

分类: Oracle

2022-02-27 16:33:55


  1. 自动维护任务是定期自动启动以对数据库执行维护操作的任务。自动维护任务在维护窗口中运行的,维护窗口属于 Oracle 调度程序窗口MAINTENANCE_WINDOW_GROUP。当维护窗口打开时,Oracle 数据库为计划在该窗口中运行的每个维护任务创建一个 Oracle 调度程序作业。每个作业都分配有一个在运行时生成的作业名称。所有自动维护任务作业名称都以 ORA$AT 开头。自动维护任务作业完成后,将从 Oracle 调度程序作业系统中删除。但是,仍然可以在调度程序作业历史记录中找到该作业。

  2. 涉及的概念很多:调度scheduler、窗口maintenance window、任务task、资源计划resource plan

  3. 看看这些相关对象


  1. 调度
  2. set lin 120 pages 100
  3. col owner for a12
  4. col JOB_NAME for a32
  5. col PROGRAM_NAME for a35
  6. col STATE for a12
  7. 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开头的作业。


  1. 维护窗口组
  2. col window_group_name for a30
  3. col comments for a40
  4. select window_group_name,enabled,comments from dba_scheduler_window_groups;




  1. 自动任务
  2. col client_name for a32
  3. col window_group for a20
  4. select client_name,status,window_group from dba_autotask_client;



  1. 维护窗口
  2. set lin 200
  3. col WINDOW_NAME for a18
  4. col duration for a18
  5. col REPEAT_INTERVAL for a55
  6. select window_name,repeat_interval,duration,enabled,active from DBA_SCHEDULER_WINDOWS;

  1. 启用或禁用整个窗口组,需要用到 DBMS_SCHEDULER 包
  2. BEGIN
  3.   DBMS_SCHEDULER.disable(
  4.     name => 'SYS.MAINTENANCE_WINDOW_GROUP',
  5.     force => TRUE);

  6.   DBMS_SCHEDULER.enable(
  7.     name => 'SYS.MAINTENANCE_WINDOW_GROUP');
  8. END;
  9. /

  1. 自动任务需要一堆dba_autotask开头的视图:
  2. DBA_AUTOTASK_CLIENT --基础信息,最常用
  3. DBA_AUTOTASK_CLIENT_HISTORY
  4. DBA_AUTOTASK_CLIENT_JOB
  5. DBA_AUTOTASK_JOB_HISTORY
  6. DBA_AUTOTASK_OPERATION
  7. DBA_AUTOTASK_SCHEDULE
  8. DBA_AUTOTASK_TASK --有时为空,肯定是某个地方出了问题
  9. DBA_AUTOTASK_WINDOW_CLIENTS --很常用
  10. DBA_AUTOTASK_WINDOW_HISTORY

  11. 相关维护工具是 DBMS_AUTO_TASK_ADMIN 这个包

  12. 要启用或禁用所有窗口的所有自动维护任务,请调用不带参数的ENABLE 或 DISABLE过程(关大门)
  13. set lin 200
  14. col WINDOW_NEXT_TIME for a38
  15. col WINDOW_NAME for a18
  16. select * from DBA_AUTOTASK_WINDOW_CLIENTS;



  1. 如果 AUTOTASK_STATUS 是 DISABLED(大门关了) 则启用
  2. BEGIN
  3.   DBMS_AUTO_TASK_ADMIN.enable();
  4. end;
  5. /

  6. 也可单独禁用某一个任务,例如
  7. BEGIN
  8.   dbms_auto_task_admin.disable(
  9.     client_name => 'sql tuning advisor', -- 具体名称可通过 DBA_AUTOTASK_CLIENT 获取
  10.     operation => NULL,
  11.     window_name => NULL);
  12. END;
  13. /

先到这儿吧。
阅读(797) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~