Oracle的自动维护任务

简介:

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。

1
2
3
4
5
6
7
8
9
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视图中查到相关信息。

1
2
3
4
5
6
7
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一样。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--停用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)停用和启用自动维护任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
--停用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 );
   6   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 );
   6   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' );
   6   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包来操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--修改维护窗口的属性,把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

11g自动维护任务参考官方文档:http://docs.oracle.com/cd/E11882_01/server.112/e25494/tasks.htm#ADMIN12344






      本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1923449,如需转载请自行联系原作者




相关文章
|
8月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之从Oracle数据库同步数据时,checkpoint恢复后无法捕获到任务暂停期间的变更日志,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用问题之同步oracle表时,任务不报错,但是读不到数据,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 Oracle 关系型数据库
Oracle--自动维护任务
Oracle数据库预先定义了一些定时任务,这些任务什么事件执行,执行什么操作,会不会影响数据库性能,这些都是要考虑的。
487 0
|
SQL Oracle 关系型数据库
|
文字识别 Oracle 前端开发
|
Oracle 关系型数据库 数据库
|
存储 Oracle 关系型数据库
|
SQL Oracle 网络协议
ORACLE 12C PDB 维护基础介绍
发表于 2013 年 05 月 23 日 由 惜分飞 联系:手机(13429648788) QQ(107644445) 链接:http://www.
821 0

推荐镜像

更多