加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle的自动维护任务

发布时间:2020-12-12 14:57:25 所属栏目:百科 来源:网络整理
导读:Oracle数据库里提供了自动维护任务,以保证Oracle数据库可以更高效的运行。在不同的Oracle版本中,自动任务的种类和执行方式也有区别。本文以10g和11g为主来认识Oracle里的自动任务。 1、种类 10g里的自动任务有两种: AUTO_SPACE_ADVISOR_JOB,自动空间顾问

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>setlinesize200
SQL>colownerfora30
SQL>coljob_namefora30
SQL>selectowner,job_namefromdba_scheduler_jobswherejob_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>SELECTclient_name,statusFROMdba_autotask_client;

CLIENT_NAME				STATUS
----------------------------------------------------------------
autooptimizerstatscollection	ENABLED
autospaceadvisor			ENABLED
sqltuningadvisor			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>execdbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');

PL/SQLproceduresuccessfullycompleted.

SQL>selectenabledfromdba_scheduler_jobswherejob_name='AUTO_SPACE_ADVISOR_JOB';

ENABLED
---------------
FALSE

--启用JOB

SQL>execdbms_scheduler.ENABLE('AUTO_SPACE_ADVISOR_JOB');

PL/SQLproceduresuccessfullycompleted.

SQL>selectenabledfromdba_scheduler_jobswherejob_name='AUTO_SPACE_ADVISOR_JOB';

ENABLED
---------------
TRUE

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

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

--停用sqltuningadvisor
sys@TEST>BEGIN
2dbms_auto_task_admin.disable(
3client_name=>'sqltuningadvisor',4operation=>NULL,5window_name=>NULL);
6END;
7/

PL/SQLproceduresuccessfullycompleted.

sys@TEST>selectclient_name,statusfromdba_autotask_client;

CLIENT_NAMESTATUS
----------------------------------------------------------------
autooptimizerstatscollectionENABLED
autospaceadvisorENABLED
sqltuningadvisorDISABLED

--启用sqltuningadvisor
sys@TEST>BEGIN
2dbms_auto_task_admin.enable(
3client_name=>'sqltuningadvisor',statusfromdba_autotask_client;

CLIENT_NAMESTATUS
----------------------------------------------------------------
autooptimizerstatscollectionENABLED
autospaceadvisorENABLED
sqltuningadvisorENABLED

--停用所有维护窗口下的所有的自动任务
sys@TEST>execdbms_auto_task_admin.disable;

PL/SQLproceduresuccessfullycompleted.

sys@TEST>selectwindow_name,autotask_statusfromdba_autotask_window_clients;

WINDOW_NAMEAUTOTASK_STATUS
------------------------------------------------------
MONDAY_WINDOWDISABLED
TUESDAY_WINDOWDISABLED
WEDNESDAY_WINDOWDISABLED
THURSDAY_WINDOWDISABLED
FRIDAY_WINDOWDISABLED
SATURDAY_WINDOWDISABLED
SUNDAY_WINDOWDISABLED

7rowsselected.
--启用所有维护窗口下的所有自动任务
sys@TEST>execdbms_auto_task_admin.enable;

PL/SQLproceduresuccessfullycompleted.

sys@TEST>selectwindow_name,autotask_statusfromdba_autotask_window_clients;

WINDOW_NAMEAUTOTASK_STATUS
------------------------------------------------------
WEDNESDAY_WINDOWENABLED
FRIDAY_WINDOWENABLED
SATURDAY_WINDOWENABLED
THURSDAY_WINDOWENABLED
TUESDAY_WINDOWENABLED
SUNDAY_WINDOWENABLED
MONDAY_WINDOWENABLED

7rowsselected.
--停用针对某个维护窗口的自动任务
sys@TEST>BEGIN
2dbms_auto_task_admin.disable(
3client_name=>'sqltuningadvisor',5window_name=>'MONDAY_WINDOW');
6END;
7/

PL/SQLproceduresuccessfullycompleted.

sys@TEST>selectwindow_name,autotask_status,sql_tune_advisorfromdba_autotask_window_clients;

WINDOW_NAMEAUTOTASK_STATUSSQL_TUNE_ADVISOR
------------------------------------------------------------------------------
MONDAY_WINDOWENABLEDDISABLED
TUESDAY_WINDOWENABLEDENABLED
WEDNESDAY_WINDOWENABLEDENABLED
THURSDAY_WINDOWENABLEDENABLED
FRIDAY_WINDOWENABLEDENABLED
SATURDAY_WINDOWENABLEDENABLED
SUNDAY_WINDOWENABLEDENABLED

7rowsselected.

2、配置维护窗口

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

--修改维护窗口的属性,把SATURDAY_WINDOW的持续时间修改为4小时
sys@TEST>BEGIN
2dbms_scheduler.disable(
3name=>'SATURDAY_WINDOW');
4dbms_scheduler.set_attribute(
5name=>'SATURDAY_WINDOW',6attribute=>'DURATION',7value=>numtodsinterval(4,'hour'));
8dbms_scheduler.enable(
9name=>'SATURDAY_WINDOW');
10END;
11/

PL/SQLproceduresuccessfullycompleted.

sys@TEST>SELECTdurationFROMdba_scheduler_windowsWHEREwindow_name='SATURDAY_WINDOW';

DURATION
---------------------------------------------------------------------------
+00004:00:00

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读