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。

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视图中查到相关信息。

[email protected]>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
[email protected]>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.

[email protected]>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
[email protected]>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.

[email protected]>select client_name,status from dba_autotask_client;

CLIENT_NAME                              STATUS
---------------------------------------- ------------------------
auto optimizer stats collection          ENABLED
auto space advisor                       ENABLED
sql tuning advisor                       ENABLED

--停用所有维护窗口下的所有的自动任务
[email protected]>exec dbms_auto_task_admin.disable;

PL/SQL procedure successfully completed.

[email protected]>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

7 rows selected.
--启用所有维护窗口下的所有自动任务
[email protected]>exec dbms_auto_task_admin.enable;

PL/SQL procedure successfully completed.

[email protected]>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

7 rows selected.
--停用针对某个维护窗口的自动任务
[email protected]>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.

[email protected]>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

7 rows selected.

2、配置维护窗口

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

--修改维护窗口的属性,把SATURDAY_WINDOW的持续时间修改为4小时
[email protected]>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.

[email protected]>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

时间: 2024-10-20 10:43:30

Oracle的自动维护任务的相关文章

Oracle表空间维护总结

1. 概念:表空间:最大的逻辑存储文件,与物理上的一个或多个数据文件对应,每个数据库至少拥有一个表空间,表空间的大小等于构成表空间的所有数据文件的大小总和,用于存储用户在数据库中存储的所有内容. 2. 种类:分为基本表空间.临时表空间.大文件表空间.非标准数据块表空间和撤销表空间.基本表空间:用于存储用户的永久性数据临时表空间:排序.汇总时产生的临时数据大文件表空间:存储大型数据,如LOB非标准数据块表空间:创建数据块大小不同的表空间撤销表空间:存储事务的撤销数据,在数据恢复时使用 3. 系统默

oracle自动维护

检查ORACLE自动维护任务是否关闭 SQL> select t.client_name, t.status from dba_autotask_client t; CLIENT_NAME  STATUS ---------------------------------------------------------------- -------- auto optimizer stats collection   DISABLED auto space advisor  DISABLED s

【转载】Oracle RAC常用维护工具和命令

Oracle 的管理可以通过OEM或者命令行接口.Oracle Clusterware的命令集可以分为以下4种: 节点层:osnodes 网络层:oifcfg 集群层:crsctl, ocrcheck,ocrdump,ocrconfig 应用层:srvctl,onsctl,crs_stat 下面分别来介绍这些命令. 一. 节点层只有一个命令: osnodes, 这个命令用来显示集群点列表,可用的参数如下,这些参数可以混合使用.[[email protected] bin]# ./olsnodes

Oracle RAC 常用维护工具和命令

Oracle RAC 常用维护工具和命令 分类: Oracle Basic Knowledge Oracle RAC2010-03-09 01:02 13987人阅读 评论(6) 收藏 举报 oracle工具数据库集群moduleoracle10g Oracle 的管理可以通过OEM或者命令行接口. Oracle Clusterware的命令集可以分为以下4种: 节点层:osnodes 网络层:oifcfg 集群层:crsctl, ocrcheck,ocrdump,ocrconfig 应用层:s

oracle11g自动维护任务

oracle 11g中默认的自动维护任务分三类: Automatic Optimizer Statistics Collection(自动优化器统计信息收集)收集数据库中所有无统计信息或仅有过时统计信息的 Schema 对象的 Optimizer(优化器)统计信息.SQL query optimizer(SQL 查询优化器)使用此任务收集的统计信息提高 SQL 执行的性能. * Automatic Segment Advisor(自动段指导)识别有可用回收空间的段,并提出如何消除这些段中的碎片的

ORACLE uuid自动生成主键

-- Create table create table TECHNOLOGYCOMPANY ( ID VARCHAR2(32) default SYS_GUID() not null, FLOWID VARCHAR2(50), CONPANYID NUMBER, ISCOMMUNICATION VARCHAR2(10) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1

Mysql 存储过程+定时任务,完成分区自动维护

建表: drop table if exists terminal_parameter; CREATE TABLE `terminal_parameter` ( `terminal_parameter_id` int(11) NOT NULL AUTO_INCREMENT, .................... `createtime` datetime NOT NULL, `userid` int(8) NOT NULL, `terminal_id` int(8) DEFAULT NULL

Log4Net日志分类和自动维护

背景 在程序中,我们调试运行时信息,Log4Net是一个不错的解决方案.不知道是我用的不好,用到最后反而都不想看日志了.原因是因为我n个功能使用的默认的Logger来记录日志,这样以来,所有功能记录的信息都依赖同一个配置,于是所有的信息都在一个文件中,有时候查找起来,极其不方便. 我想,能不能按照功能分类呢?如果通过配置不同的logger,然后功能根据不同的LoggerName加载Ilog实例,是可以做到.但由于这些功能的log配置差异性极小,也许仅仅就是文件名不同.于是想通过代码进行配置. 解

SQL Server 索引的自动维护 <第十三篇>

在有大量事务的数据库中,表和索引随着时间的推移而碎片化.因此,为了增进性能,应该定期检查表和索引的碎片,并对具有大量碎片的进行整理. 1.确定当前数据库中所有需要分析碎片的表. 2.确定所有表和索引的碎片. 3.考虑一下因素以确定需要进行碎片整理的表和索引. 高的碎片水平-avg_fragmentation_in_percent大于20%: 不是非常小的表或索引-也就是page_count大于8的: 4.整理具有大量碎片的表和索引: 这里给出一个样板SQL存储过程,它执行以下操作: 遍历系统上的