阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle的自动维护任务简述

198次阅读
没有评论

共计 5456 个字符,预计需要花费 14 分钟才能阅读完成。

Oracle 数据库里提供了自动维护任务,以保证 Oracle 数据库可以更高效的运行。在不同的 Oracle 版本中,自动任务的种类和执行方式也有区别。本文以 10g 和 11g 为主来认识 Oracle 里的自动任务。

1、种类

10g 里的自动任务有两种:

  • AUTO_SPACE_ADVISOR_JOB,自动空间顾问 JOB
  • GATHER_STATS_JOB,自动收集统计信息 JOB

11g 里的自动任务有三种:

  • auto optimizer stats collection,自动统计信息收集顾问
  • auto space advisor,自动空间顾问
  • sql tuning advisor,sql 调优顾问

2、实现方式

10g 里的自动任务是以 SCHEDULER 的 JOB 形式运行的,可以在 dba_scheduler_jobs 视图里查到相关的 JOB。

SQL> set linesize 200
SQL> col owner for a30
SQL> col job_name for a30
SQL> select owner,job_name from dba_scheduler_jobs where job_class='AUTO_TASKS_JOB_CLASS';
  
OWNER                 JOB_NAME
------------------------------ ------------------------------
SYS               AUTO_SPACE_ADVISOR_JOB
SYS               GATHER_STATS_JOB

11g 里的自动任务使用的是 11g 的新特性 AUTOTASK 的方式实现的。可以从 dba_autotask_client 视图中查到相关信息。

sys@TEST>SELECT client_name,status FROM dba_autotask_client;
  
CLIENT_NAME             STATUS
---------------------------------------- ------------------------
auto optimizer stats collection     ENABLED
auto space advisor             ENABLED
sql tuning advisor             ENABLED

3、维护窗口时间

两个版本中自动任务的执行时间是不同的。

10g 中分为两个时间段 WEEKNIGHT_WINDOW 和 WEEKEND_WINDOW,可以从 dba_scheduler_windows 视图中查到。它们分别的运行开始时间和持续时间为:

WEEKNIGHT_WINDOW,每周一至周五晚 22:00:00 开始,持续 8 小时

WEEKEND_WINDOW,第周六 00:00:00,持续 2 天

11g 中维护窗口分得更细,分为 7 个,即第一天个维护窗口,可以针对不同的需求做出更细粒度的调整,dba_scheduler_windows 视图中查到,分别为 MONDAY_WINDOW,TUESDAY_WINDOW,WEDNESDAY_WINDOW,THURSDAY_WINDOW,FRIDAY_WINDOW,SATURDAY_WINDOW,SUNDAY_WINDOW。开始时间和持续时间分别为:

周一到周五晚 22:00:00 开始,持续 4 小时,周六和周日早 6:00:00 开始,执行 20 小时。

4、维护方式

由于 10g 和 11g 中实现方式的不同,维护方式自然就不一样了。

10g 的维护方式与普通的 SCHEDULER 的 JOB 一样。

-- 停用 JOB
SQL> exec dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
  
PL/SQL procedure successfully completed.
  
SQL> select enabled from dba_scheduler_jobs where job_name='AUTO_SPACE_ADVISOR_JOB';
  
ENABLED
---------------
FALSE
  
-- 启用 JOB
  
SQL> exec dbms_scheduler.ENABLE('AUTO_SPACE_ADVISOR_JOB');
  
PL/SQL procedure successfully completed.
  
SQL> select enabled from dba_scheduler_jobs where job_name='AUTO_SPACE_ADVISOR_JOB';
  
ENABLED
---------------
TRUE

下面重点介绍 11g 里自动任务的维护。

1) 停用和启用自动维护任务

-- 停用 sql tuning advisor
sys@TEST>BEGIN
  2    dbms_auto_task_admin.disable(
  3      client_name => 'sql tuning advisor',
  4      operation   => NULL,
  5      window_name => NULL);
  END;
  7  /
    
  PL/SQL procedure successfully completed.
  
sys@TEST>select client_name,status from dba_autotask_client;
  
CLIENT_NAME                              STATUS
---------------------------------------- ------------------------
auto optimizer stats collection          ENABLED
auto space advisor                       ENABLED
sql tuning advisor                       DISABLED
  
-- 启用 sql tuning advisor
sys@TEST>BEGIN
  2    dbms_auto_task_admin.enable(
  3      client_name => 'sql tuning advisor',
  4      operation   => NULL,
  5      window_name => NULL);
  END;
  7  /
  
PL/SQL procedure successfully completed.
  
sys@TEST>select client_name,status from dba_autotask_client;
  
CLIENT_NAME                              STATUS
---------------------------------------- ------------------------
auto optimizer stats collection          ENABLED
auto space advisor                       ENABLED
sql tuning advisor                       ENABLED
  
-- 停用所有维护窗口下的所有的自动任务
sys@TEST>exec dbms_auto_task_admin.disable;
  
PL/SQL procedure successfully completed.
  
sys@TEST>select window_name,autotask_status from dba_autotask_window_clients;
  
WINDOW_NAME                    AUTOTASK_STATUS
------------------------------ ------------------------
MONDAY_WINDOW                  DISABLED
TUESDAY_WINDOW                 DISABLED
WEDNESDAY_WINDOW               DISABLED
THURSDAY_WINDOW                DISABLED
FRIDAY_WINDOW                  DISABLED
SATURDAY_WINDOW                DISABLED
SUNDAY_WINDOW                  DISABLED
  
rows selected.
-- 启用所有维护窗口下的所有自动任务
sys@TEST>exec dbms_auto_task_admin.enable;
  
PL/SQL procedure successfully completed.
  
sys@TEST>select window_name,autotask_status from dba_autotask_window_clients;
  
WINDOW_NAME                    AUTOTASK_STATUS
------------------------------ ------------------------
WEDNESDAY_WINDOW               ENABLED
FRIDAY_WINDOW                  ENABLED
SATURDAY_WINDOW                ENABLED
THURSDAY_WINDOW                ENABLED
TUESDAY_WINDOW                 ENABLED
SUNDAY_WINDOW                  ENABLED
MONDAY_WINDOW                  ENABLED
  
rows selected.
-- 停用针对某个维护窗口的自动任务
sys@TEST>BEGIN
  2    dbms_auto_task_admin.disable(
  3      client_name => 'sql tuning advisor'
  4      operation   => NULL
  5      window_name => 'MONDAY_WINDOW');
  END;
  7  /
  
PL/SQL procedure successfully completed.
  
sys@TEST>select window_name,autotask_status,sql_tune_advisor from dba_autotask_window_clients;
  
WINDOW_NAME                    AUTOTASK_STATUS          SQL_TUNE_ADVISOR
------------------------------ ------------------------ ------------------------
MONDAY_WINDOW                  ENABLED                  DISABLED
TUESDAY_WINDOW                 ENABLED                  ENABLED
WEDNESDAY_WINDOW               ENABLED                  ENABLED
THURSDAY_WINDOW                ENABLED                  ENABLED
FRIDAY_WINDOW                  ENABLED                  ENABLED
SATURDAY_WINDOW                ENABLED                  ENABLED
SUNDAY_WINDOW                  ENABLED                  ENABLED
  
rows selected.

2、配置维护窗口

这个与 10g 的类似,都是使用 dbms_scheduler 包来操作

-- 修改维护窗口的属性,把 SATURDAY_WINDOW 的持续时间修改为 4 小时
sys@TEST>BEGIN
  2    dbms_scheduler.disable(
  3      name  => 'SATURDAY_WINDOW');
  4    dbms_scheduler.set_attribute(
  5      name      => 'SATURDAY_WINDOW',
  6      attribute => 'DURATION',
  7      value     => numtodsinterval(4, 'hour'));
  8    dbms_scheduler.enable(
  9      name => 'SATURDAY_WINDOW');
 10  END;
 11  /
  
PL/SQL procedure successfully completed.
  
sys@TEST>SELECT duration FROM dba_scheduler_windows WHERE window_name='SATURDAY_WINDOW';
  
DURATION
---------------------------------------------------------------------------
+000 04:00:00

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-05/143576.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5456字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中