Database OracleDB インフラ

OracleDBの自動メンテナンスタスクの有効・無効・スケジュール変更手順

2018年8月10日

こんにちは!シミダイ(@shimidai2100)です。

OracleDatabaseの「自動メンテナンスタスク」の確認方法について紹介します。

自動メンテナンスタスクはデータベースのメンテナンス操作を一定間隔毎に自動的に行う機能です。

デフォルトでは有効化されており、システムの負荷が軽いと予測される時間帯に実行されますが、

個々のメンテナンスタスクをいつ動いているか確認してみましょう。

OracleDBの自動メンテナンスタスクの確認方法

こんにちは!シミダイ(@shimidai2100)です。 OracleDatabaseの「自動メンテナンスタスク」の確認 ...

続きを見る


自動メンテナンスタスクとは?

自動メンテナンスタスクには3つの機能があり、それぞれの役割は以下になります。

[table id=64 column_widths="35%|65%" /]

なお自動メンテナンスタスクを使用するためには別途追加ライセンスが発生します。

自動メンテナンスタスクの有効・無効化手順

メンテナンスタスクを有効化は「DBMS_AUTO_TASK_ADMIN.ENABLE」を使用します。

-- すべてのメンテナンスタスクを有効化
BEGIN
    DBMS_AUTO_TASK_ADMIN.ENABLE;
END;
/

-- 個別にメンテナンスタスクを有効化
BEGIN
	DBMS_AUTO_TASK_ADMIN.ENABLE(
         client_name => 'auto optimizer stats collection'
        ,operation   => NULL
        ,window_name => NULL
    );
	DBMS_AUTO_TASK_ADMIN.ENABLE(
         client_name => 'AUTO SPACE ADVISOR'
        ,operation   => NULL
        ,window_name => NULL
    );
	DBMS_AUTO_TASK_ADMIN.ENABLE(
         client_name => 'AUTO SPACE ADVISOR'
        ,operation   => NULL
        ,window_name => NULL
    );
END;
/

 

メンテナンスタスクを無効化は「DBMS_AUTO_TASK_ADMIN.DISABLE」を使用します。

BEGIN
    DBMS_AUTO_TASK_ADMIN.DISABLE;
END;
/


BEGIN
	DBMS_AUTO_TASK_ADMIN.DISABLE(
         client_name => 'auto optimizer stats collection'
        ,operation   => NULL
        ,window_name => NULL
    );
	DBMS_AUTO_TASK_ADMIN.DISABLE(
         client_name => 'AUTO SPACE ADVISOR'
        ,operation   => NULL
        ,window_name => NULL
    );
	DBMS_AUTO_TASK_ADMIN.DISABLE(
         client_name => 'AUTO SPACE ADVISOR'
        ,operation   => NULL
        ,window_name => NULL
    );
END;
/

 

参考DBMS_AUTO_TASK_ADMIN

自動メンテナンスタスクのスケジュール変更

メンテナンスタスクのスケジュールを変更するには「DBMS_SCHEDULER.SET_ATTRIBUTE」を使用します。

BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
         NAME      =>'<ウィンドウ名>'
        ,ATTRIBUTE =>'<ジョブ属性>'
        ,VALUE     =>'<設定値>'
    );
END;
/

「ジョブ属性」や「カレンダー構文」などは記載内容が多いのでマニュアルを参照にしてください。

マニュアルジョブ属性

マニュアルカレンダー構文

以下、日曜日のメンテナンスタスクを2:00から6時間動作するように変更します。

-- 開始時刻を変更
BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
         NAME      =>'SUNDAY_WINDOW'
        ,ATTRIBUTE =>'REPEAT_INTERVAL'
        ,VALUE     =>'FREQ=DAILY;BYDAY=SUN;BYHOUR=2;BYMINUTE=0; BYSECOND=0'
    );
END;
/

-- ウィンドウサイズを変更
BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
         NAME      =>'SUNDAY_WINDOW'
        ,ATTRIBUTE =>'DURATION'
        ,VALUE     => NUMTODSINTERVAL(6, 'HOUR')
    );
END;
/

-- 変更確認
  > set line 300
  > col WINDOW_NAME for a20
  > col REPEAT_INTERVAL for a70
  > col DURATION for a15
  > col ENABLED for a7
  > col AUTOTASK_STATUS for a15
  > col OPTIMIZER_STATS for a15
  > col SEGMENT_ADVISOR for a15
  > col SQL_TUNE_ADVISOR for a16
  > select s.WINDOW_NAME
 2        ,s.REPEAT_INTERVAL
 3        ,s.DURATION
 4        ,s.ENABLED
 5        ,a.AUTOTASK_STATUS
 6        ,a.OPTIMIZER_STATS
 7        ,a.SEGMENT_ADVISOR
 8        ,a.SQL_TUNE_ADVISOR
 9    from DBA_SCHEDULER_WINDOWS s,
10         DBA_AUTOTASK_WINDOW_CLIENTS a
11   where s.WINDOW_NAME = a.WINDOW_NAME(+)
12     and s.WINDOW_NAME = 'SUNDAY_WINDOW';

WINDOW_NAME          REPEAT_INTERVAL                                                        DURATION        ENABLED AUTOTASK_STATUS OPTIMIZER_STATS SEGMENT_ADVISOR SQL_TUNE_ADVISOR
-------------------- ---------------------------------------------------------------------- --------------- ------- --------------- --------------- --------------- ----------------
SUNDAY_WINDOW        FREQ=DAILY;BYDAY=SUN;BYHOUR=2;BYMINUTE=0; BYSECOND=0                   +000 06:00:00   TRUE    ENABLED         ENABLED         ENABLED         ENABLED

 

参考DBMS_SCHEDULER

 

関連記事

-Database, OracleDB, インフラ

Copyright© shimidai2100 , 2020 All Rights Reserved.