ヘッダーをスキップ

Oracle Database 管理者ガイド
11gリリース1(11.1)

E05760-03
目次
目次
索引
索引

戻る 次へ

24 自動データベース・メンテナンス・タスクの管理

Oracle Databaseでは、データベース管理者が通常実行する一般的なメンテナンス・タスクの多くが自動化されました。これらの自動化メンテナンス・タスクは、システムの負荷が軽いと予測される時間帯に実行されます。管理者は、個々のメンテナンス・タスクを有効または無効にしたり、これらのタスクの実行時期やタスクに対するリソース割当てを構成できます。

この章の内容は次のとおりです。

自動化メンテナンス・タスクの概要

自動化メンテナンス・タスクとは、データベースのメンテナンス操作を実行するために、一定の間隔をおいて自動的に開始されるタスクです。問合せオプティマイザのスキーマ・オブジェクトに関する統計を収集するタスクなどはその一例です。自動化メンテナンス・タスクはメンテナンス・ウィンドウ内で実行されます。このウィンドウは、システムの負荷が低い時間帯にタスクが発生するように事前定義した時間間隔です。管理者は、データベースのリソース使用パターンに基づいてメンテナンス・ウィンドウをカスタマイズしたり、特定のデフォルト・ウィンドウでの実行を禁止できます。独自のメンテナンス・ウィンドウを作成することもできます。

Oracle Databaseでは、3種類の自動化メンテナンス・タスクが事前定義されています。

デフォルトでは、これら3種類の自動化メンテナンス・タスクは、すべてのメンテナンス・ウィンドウで実行するように構成されています。

メンテナンス・ウィンドウの概要

メンテナンス・ウィンドウは、自動化メンテナンス・タスクが実行される連続した時間間隔です。メンテナンス・ウィンドウは、MAINTENANCE_WINDOW_GROUPというウィンドウ・グループに属するOracle Schedulerのウィンドウです。スケジューラのウィンドウは、単純な繰返し間隔(毎週土曜の午前0時から午前6時の間など)の場合や複雑な間隔(会社の休業日を除いて、毎月最後の稼働日の午前0時から午前6時の間など)の場合があります。

メンテナンス・ウィンドウがオープンすると、Oracle Databaseでは、そのウィンドウでの実行がスケジュールされている各メンテナンス・タスクに対してOracle Schedulerのジョブが作成されます。各ジョブには、実行時に生成されるジョブ名が割り当てられます。自動化メンテナンス・タスクのジョブ名はすべてORA$ATで始まります。たとえば、自動セグメント・アドバイザのジョブには、ORA$AT_SA_SPC_SY_26という名前が指定されます。自動化メンテナンス・タスクのジョブが終了すると、そのジョブはOracle Schedulerのジョブ・システムから削除されます。ただし、スケジューラのジョブ履歴には記録が残ります。


注意:

ジョブ履歴を表示するには、SYSユーザーでログインする必要があります。 


非常に長いメンテナンス・ウィンドウの場合、自動SQLチューニング・アドバイザを除くすべての自動化メンテナンス・タスクは4時間ごとに再起動されます。この機能によって、ウィンドウ・サイズに関係なく、メンテナンス・タスクが定期的に実行されます。

自動化メンテナンス・タスクのフレームワークは、データベースに定義されているメンテナンス・ウィンドウに依存しています。表24-1に、新規Oracle Databaseの各インストールで自動的に定義されるメンテナンス・ウィンドウのリストを示します。

関連項目:

 

自動化メンテナンス・タスクの構成

メンテナンス・ウィンドウのサブセットで特定のメンテナンス・タスクを有効または無効にするには、DBMS_AUTO_TASK_ADMIN PL/SQLパッケージを使用します。

この項の内容は、次のとおりです。

すべてのメンテナンス・ウィンドウに対するメンテナンス・タスクの有効化と無効化

管理者は、1回の操作ですべてのメンテナンス・ウィンドウに対して特定の自動化メンテナンス・タスクを無効にできます。無効にするには、DBMS_AUTO_TASK_ADMIN PL/SQLパッケージのDISABLEプロシージャをwindow_name引数なしでコールします。たとえば、次のプロシージャを使用して自動SQLチューニング・アドバイザ・タスクを完全に無効にできます。

BEGIN
dbms_auto_task_admin.disable(
    client_name => 'sql tuning advisor',
    operation   => NULL,
    window_name => NULL);
END;

このメンテナンス・タスクを再度有効にするには、次のようにENABLEプロシージャを使用します。

BEGIN
dbms_auto_task_admin.enable(
    client_name => 'sql tuning advisor',
    operation   => NULL,
    window_name => NULL);
END;

client_name引数に使用するタスク名は、DBA_AUTOTASK_CLIENTデータベース・ディクショナリ・ビューにリストされています。

すべてのウィンドウに対して自動化メンテナンス・タスクすべてを有効または無効にするには、引数を指定せずにENABLEまたはDISABLEプロシージャをコールします。

EXECUTE DBMS_AUTO_TASK_ADMIN.DISABLE;

関連項目:

 

特定のメンテナンス・ウィンドウに対するメンテナンス・タスクの有効化と無効化

デフォルトでは、すべてのメンテナンス・タスクが事前定義のすべてのメンテナンス・ウィンドウで実行されます。管理者は、特定のウィンドウに対してメンテナンス・タスクを無効にできます。次の例は、ウィンドウMONDAY_WINDOWでの自動SQLチューニング・アドバイザの実行を無効にしています。

BEGIN
dbms_auto_task_admin.disable(
    client_name => 'sql tuning advisor', 
    operation   => NULL, 
    window_name => 'MONDAY_WINDOW');
END;

メンテナンス・ウィンドウの構成

事前定義のメンテナンス・ウィンドウをデータベース環境に適した時間に調整したり、新しいメンテナンス・ウィンドウを作成できます。メンテナンス・ウィンドウは、DBMS_SCHEDULER PL/SQLパッケージを使用してカスタマイズできます。

この項の内容は、次のとおりです。

メンテナンス・ウィンドウの変更

DBMS_SCHEDULER PL/SQLパッケージには、ウィンドウの属性を変更するためのSET_ATTRIBUTEプロシージャが含まれています。たとえば、次のスクリプトは、メンテナンス・ウィンドウSATURDAY_WINDOWの期間を4時間に変更します。

BEGIN
dbms_scheduler.disable(
    name  => 'SATURDAY_WINDOW');
dbms_scheduler.set_attribute(
    name      => 'SATURDAY_WINDOW',
    attribute => 'DURATION',
    value     => numtodsinterval(4, 'hour'));
dbms_scheduler.enable(
    name => 'SATURDAY_WINDOW');
END;

ウィンドウを変更する際は、事前にDBMS_SCHEDULER.DISABLEサブプログラムを使用してそのウィンドウを無効にし、終了した後にDBMS_SCHEDULER.ENABLEを使用して再度有効にする必要があります。現在オープン中のウィンドウを変更した場合は、そのウィンドウの次回オープンまで変更内容が反映されません。

関連項目:

ウィンドウの変更の詳細は、「ウィンドウの使用」を参照してください。 

新規メンテナンス・ウィンドウの作成

DBMS_SCHEDULER PL/SQLパッケージには、ADD_WINDOW_GROUP_MEMBERサブプログラムが用意されています。このサブプログラムはウィンドウをウィンドウ・グループに追加します。メンテナンス・ウィンドウを作成するには、スケジューラのウィンドウを作成して、ウィンドウ・グループMAINTENANCE_WINDOW_GROUPに追加する必要があります。

次の例は、DBMS_SCHEDULERパッケージを使用してEARLY_MORNING_WINDOWというメンテナンス・ウィンドウを作成しています。このウィンドウは、午前5時から午前6時まで毎日1時間実行されます。

BEGIN
dbms_scheduler.create_window(
    window_name     => 'EARLY_MORNING_WINDOW',
    duration        =>  numtodsinterval(1, 'hour'),
    resource_plan   => 'DEFAULT_MAINTENANCE_PLAN',
    repeat_interval => 'FREQ=DAILY;BYHOUR=5;BYMINUTE=0;BYSECOND=0');
dbms_scheduler.add_window_group_member(
    group_name  => 'MAINTENANCE_WINDOW_GROUP',
    window_list => 'EARLY_MORNING_WINDOW');
END;

関連項目:

  • 「ウィンドウの作成」

  • DBMS_SCHEDULERパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

 

メンテナンス・ウィンドウの削除

既存のメンテナンス・ウィンドウを削除するには、MAINTENANCE_WINDOW_GROUPウィンドウ・グループから該当するウィンドウを削除します。ウィンドウは存在し続けますが、自動化メンテナンス・タスクは実行されません。このウィンドウに割り当てられているスケジューラの他のジョブは、引き続き通常どおりに実行されます。

次の例は、ウィンドウ・グループからEARLY_MORNING_WINDOWを削除しています。

BEGIN
DBMS_SCHEDULER.REMOVE_WINDOW_GROUP_MEMBER(
    group_name  => 'MAINTENANCE_WINDOW_GROUP',
    window_list => 'EARLY_MORNING_WINDOW');
END;

関連項目:

 

自動化メンテナンス・タスクに対するリソース割当ての構成

ここでは、メンテナンス・ウィンドウに対するリソース割当てについて説明します。この項の内容は、次のとおりです。

自動化メンテナンス・タスクに対するリソース割当ての概要

デフォルトでは、事前定義のすべてのメンテナンス・ウィンドウで、リソース・プランDEFAULT_MAINTENANCE_PLANが使用されます。自動化メンテナンス・タスクは、そのサブプランORA$AUTOTASK_SUB_PLANのもとで実行されます。このサブプランによって、リソース割当て合計に対する配分が複数のメンテナンス・タスク間に均一に分割されます。

DEFAULT_MAINTENANCE_PLANには、次のリソース割当てが定義されています。

コンシューマ・グループ/サブプラン  レベル1  レベル2 

ORA$AUTOTASK_SUB_PLAN  

25% 

ORA$DIAGNOSTICS  

5% 

OTHER_GROUPS 

70% 

SYS_GROUP 

100% 

このプランでは、SYS_GROUPコンシューマ・グループのセッションが優先されます(このグループのセッションは、SYSおよびSYSTEMのユーザー・アカウントで作成されたセッションです)。SYS_GROUPのセッションで使用されないリソース割当ては、プランの他のコンシューマ・グループやサブプランに属するセッションによって共有されます。この割当てでは、25%がメンテナンス・タスクに、5%が診断操作を実行するバックグラウンド・プロセスに、70%がユーザー・セッションに割り当てられます。自動化メンテナンス・タスクに対するリソース割当てを増減するには、DEFAULT_MAINTENANCE_PLANを調整します。詳細は、「自動化メンテナンス・タスクに対するリソース割当ての変更」を参照してください。

リソース・プランと同様に、コンシューマ・グループまたはサブプランによって使用されていない割当て部分は、他のコンシューマ・グループまたはサブプランで使用できます。データベース・リソース・マネージャは、CPUの100%が使用されるまで、リソース・プランによるリソース割当ての制限を開始しません。


注意:

DEFAULT_MAINTENANCE_PLANはデフォルトですが、任意のリソース・プランを任意のメンテナンス・ウィンドウに割り当てることができます。 


関連項目:

リソース・プランの詳細は、第25章「Oracle Database Resource Managerを使用したリソース割当ての管理」を参照してください。 

自動化メンテナンス・タスクに対するリソース割当ての変更

メンテナンス・ウィンドウ内の自動化メンテナンス・タスクに対するリソース割当てを変更するには、そのウィンドウのリソース・プランのサブプランORA$AUTOTASK_SUB_PLANに割り当てられているリソースの割合を変更する必要があります(デフォルトでは、事前定義の各メンテナンス・ウィンドウのリソース・プランはDEFAULT_MAINTENANCE_PLANです)。プランのトップレベルでのリソース割当てが100%になるように、ウィンドウのリソース・プランの1つ以上のサブプランまたはコンシューマ・グループに対するリソース割当てを調整する必要があります。リソース割当ての変更の詳細は、第25章「Oracle Database Resource Managerを使用したリソース割当ての管理」を参照してください。

自動化メンテナンス・タスクの参照情報

ここでは、自動化メンテナンス・タスクについて説明します。この項の内容は、次のとおりです。

事前定義のメンテナンス・ウィンドウ

デフォルトでは、7種類のメンテナンス・ウィンドウが事前定義されており、それぞれが曜日を表します。週末のメンテナンス・ウィンドウであるSATURDAY_WINDOWSUNDAY_WINDOWは、平日のメンテナンス・ウィンドウよりも期間が長くなっています。ウィンドウ・グループMAINTENANCE_WINDOW_GROUPは、この7種類のウィンドウで構成されています。表24-1に、事前定義のメンテナンス・ウィンドウのリストを示します。

表 24-1    事前定義のメンテナンス・ウィンドウ 
ウィンドウ名  説明 

MONDAY_WINDOW 

月曜の午後10時に開始して午前2時に終了します。 

TUESDAY_WINDOW 

火曜の午後10時に開始して午前2時に終了します。 

WEDNESDAY_WINDOW 

水曜の午後10時に開始して午前2時に終了します。 

THURSDAY_WINDOW 

木曜の午後10時に開始して午前2時に終了します。 

FRIDAY_WINDOW 

金曜の午後10時に開始して午前2時に終了します。 

SATURDAY_WINDOW 

土曜の午前6時に開始して20時間後に終了します。 

SUNDAY_WINDOW 

日曜の午前6時に開始して20時間後に終了します。 

自動化メンテナンス・タスクのデータベース・ディクショナリ・ビュー

表24-2に、自動化メンテナンス・タスクのデータベース・ディクショナリ・ビューに関する情報を示します。

表 24-2    自動化メンテナンス・タスクのデータベース・ディクショナリ・ビュー 
ビュー名  説明 

DBA_AUTOTASK_CLIENT_JOB 

自動化メンテナンス・タスク用に作成され、現在実行中のスケジューラのジョブに関する情報が表示されます。このビューでは、ジョブの対象となるオブジェクトの情報と、同じタスクについて前回のインスタンス化から追加された統計情報が提供されます。この追加データの一部は、スケジューラの一般的なビューから取得されます。 

DBA_AUTOTASK_CLIENT 

7日間および30日間の各自動化メンテナンス・タスクに関する統計データが表示されます。 

DBA_AUTOTASK_JOB_HISTORY 

自動化メンテナンス・タスクのジョブ実行履歴がリストされます。ジョブは、実行終了後に、このビューに追加されます。 

DBA_AUTOTASK_WINDOW_CLIENTS 

MAINTENANCE_WINDOW_GROUPに属するウィンドウが、各メンテナンス・タスクのウィンドウの「有効」または「無効」ステータスとともにリストされます。このビューは主にEnterprise Managerによって使用されます。 

DBA_AUTOTASK_CLIENT_HISTORY 

各自動化メンテナンス・タスクのジョブ実行回数について、ウィンドウ別に履歴が表示されます。この情報は、Enterprise Managerの「ジョブ履歴」ページに表示されます。 

関連項目:

ビューの列の詳細は、「リソース・マネージャのデータ・ディクショナリ・ビュー」を参照してください。 


戻る 次へ
Oracle
Copyright © 2001, 2008, Oracle Corporation.
All Rights Reserved.
目次
目次
索引
索引