36 DBMS_AUTO_MV

DBMS_AUTO_MVには、自動マテリアライズド・ビューを構成するためのサブプログラムが含まれています。

この章のトピックは、次のとおりです:

36.1 DBMS_AUTO_MVの使用方法

DBMS_AUTO_MVパッケージには、自動マテリアライズド・ビューを管理するためのファンクションおよびプロシージャが含まれています。

このパッケージの所有者はSYSであるため、SYS以外のユーザーにはEXECUTEパッケージ権限が必要です。パッケージに対するEXECUTE権限をユーザーに付与します。

36.2 DBMS_AUTO_MVサブプログラムの要約

この表は、DBMS_AUTO_MVパッケージのサブプログラムを示し、簡単に説明しています。

表36-1 DBMS_AUTO_MVパッケージのサブプログラム

サブプログラム 説明
CONFIGUREプロシージャ 自動マテリアライズド・ビュー機能の様々なパラメータを有効化、無効化および構成します。
DROP_AUTO_MVSプロシージャ 作成された自動マテリアライズド・ビューを削除します。このルーチンは、DBAのみが実行できます。
RECOMMENDファンクション このファンクションにより、ユーザーは、指定したSQLチューニング・セット内のSQL文について、自動マテリアライズド・ビューの推奨事項を手動で生成できます。
REFRESHプロシージャ このプロシージャにより、ユーザーは、システム内の古い自動マテリアライズド・ビューすべてを無条件に手動でリフレッシュできます。
REPORT_ACTIVITYファンクション このファンクションにより、指定した期間の自動マテリアライズド・ビューのアクティビティおよび使用状況についてレポートを生成します。レポートは、引数タイプで指定したとおりにテキスト、HTMLまたはXML形式で生成できます。
REPORT_LAST_ACTIVITYファンクション このファンクションにより、最後の自動マテリアライズド・ビューのアクティビティおよび使用状況についてレポートを生成します。レポートは、引数タイプで指定したとおりにテキスト、HTMLまたはXML形式で生成できます。

36.2.1 CONFIGUREプロシージャ

このプロシージャにより、自動マテリアライズド・ビュー機能の様々なパラメータを有効化、無効化および構成します。

構文

DBMS_AUTO_MV.CONFIGURE (
   parameter   IN VARCHAR2,
   value      IN VARCHAR2,
   allow      IN BOOLEAN DEFAULT TRUE);

パラメータ

表36-2 CONFIGUREプロシージャのパラメータ

パラメータ 説明

parameter

変更するパラメータの名前。パラメータ名は大/小文字が区別されません。

value

指定したパラメータの値。

allow

このパラメータにより、様々なスキーマまたはアプリケーション・モジュールを許可または禁止します。これは、AUTO_MV_SCHEMAパラメータおよびAUTO_MV_APP_MODULEパラメータにのみ適用されます。

パラメータ

表36-3 CONFIGUREのパラメータ名

パラメータ 説明

AUTO_MV_MODE

レポート専用モードを有効化、無効化または実行します。

使用可能な値は次のとおりです。

  • OFF: 推奨事項は作成されません。これはデフォルト値です。

  • REPORT ONLY: このモードでは、推奨事項が生成され、DBA_AUTO_MV_ANALYSIS_RECOMMENDATIONSを介してDBAが使用できるように内部リポジトリに格納されます。

  • IMPLEMENT: このモードでは、推奨事項が生成、検証およびパブリッシュされるか、削除されます。

AUTO_MV_MAINT_TASK

マテリアライズド・ビューの自動メンテナンスをアクティブ化および非アクティブ化します。

  • ENABLE: マテリアライズド・ビューの自動メンテナンスをアクティブ化します。
  • DISABLE: マテリアライズド・ビューの自動メンテナンスを非アクティブ化します。マテリアライズド・ビューの自動メンテナンスが進行中の場合、メンテナンスを終了します。これはデフォルト値です。
  • CLEANUP_AND_DISABLE: すべての自動マテリアライズド・ビューを削除し、マテリアライズド・ビューの自動メンテナンスを非アクティブ化します。自動マテリアライズド・ビューのメンテナンスが進行中の場合、タスクが非アクティブ化される前にメンテナンスを終了します。

AUTO_MV_SPACE_BUDGET

自動マテリアライズド・ビューの実装に使用できる領域配分の量を指定します。合計領域値は、(システム表ではなく)すべてのユーザー表で現在使用されている領域の合計です。この計算には、ユーザー・アクセス構造(索引やマテリアライズド・ビューなど)は含まれません。使用可能な値は次のとおりです。

  • Budget in percent: すべてのユーザー表で現在使用されている領域の割合を示す正数で、末尾に%記号が付きます。

  • Budget in GB: 自動マテリアライズド・ビューの絶対領域制限を示す正の整数で、末尾にGBが付きます。たとえば、10GBは10ギガバイトを示します。最小値は1GBですが、最大値はありません。

デフォルトの配分は、ユーザー表の合計サイズの10%です。

AUTO_MV_DEFAULT_TABLESPACE

自動マテリアライズド・ビューを配置する表領域を指定します。使用可能な値は次のとおりです。

  • Tablespace name: 新しい自動マテリアライズド・ビューを作成するときに使用される有効なOracle表領域名。引用された識別子がサポートされます。

  • NULL: 親オブジェクトの所有者のデフォルト表領域に新しい自動マテリアライズド・ビューが作成されます。自動マテリアライズド・ビューに複数の親オブジェクトがある(複数の元表にマテリアライズド・ビューが定義されているなど)場合は、最大の元表の所有者のデフォルト表領域が選択されます。これはデフォルト値です。

値が動的に変更された場合、その値は次に自動マテリアライズド・ビュー推奨事項が実装されたときに有効になります。

AUTO_MV_TEMP_TABLESPACE

自動マテリアライズド・ビューの作成中またはリフレッシュ中の一時表領域を指定します。使用可能な値は次のとおりです。

  • Tablespace name: 新しい自動マテリアライズド・ビューの作成時に使用される有効なOracle一時表領域名で、そのデータはtempに書き出す必要があります。

  • NULL: 自動マテリアライズド・ビューの最大の親オブジェクトの所有者に割り当てられる一時表領域。これはデフォルト値です。

値が動的に変更された場合、その値は次に推奨事項が実装されたときに有効になります。

AUTO_MV_RETENTION

問合せで使用されることなく自動マテリアライズド・ビューが存在する日数を指定します。有効期限に達すると、マテリアライズド・ビューは削除されます。

Positive integer: 1から373までの整数。デフォルト値は33 daysです。

AUTO_MV_ANALYZE_REPORT_RETENTION

分析および推奨履歴を保存する最大日数を指定します。

Positive integer: 0から90までの整数値。値0は、履歴が保持されないことを意味します。デフォルト値は31です。

分析および検証の履歴は、DBA_AUTO_MV_*ディクショナリ表に保持されます。

AUTO_MV_ANALYZE_WORKLOAD_WINDOW

推奨事項を作成するための最大時間数を指定します。

Positive integer: 1から8760までの整数値。デフォルト値は24です。

AUTO_MV_ANALYZE_WORKLOAD_MIN_TIME

自動マテリアライズド・ビューの推奨事項の対象とみなされる問合せの最小時間を秒単位で指定します。このしきい値を下回る問合せは、推奨事項とみなされません。

Positive value: 0から3600 (1時間)までの整数値。デフォルト値は120 (2分)です。

AUTO_MV_SCHEMA

自動マテリアライズド・ビューの作成に含めるか除外するスキーマを指定します。

使用可能な値は次のとおりです。

  • TRUE: 指定したスキーマを包含リストに追加します。
  • FALSE: 指定したスキーマを除外リストに追加します。
  • NULL: 指定したスキーマを、現在追加されているリストから削除します。

両方のリスト(包含リストと除外リスト)に1つ以上のスキーマが含まれている場合は、除外リストに登録されたスキーマ以外のすべてのスキーマで自動マテリアライズド・ビューを使用できます

AUTO_MV_APP_MODULE

自動マテリアライズド・ビューの作成に含めるか除外するアプリケーション・モジュールを指定します。使用可能な値は次のとおりです。

  • TRUE: 指定されたアプリケーション・モジュールを包含リストに追加します。
  • FALSE: 指定されたアプリケーション・モジュールを除外リストに追加します。
  • NULL: 指定されたアプリケーション・モジュールを、現在追加されているリストから削除します。

初期状態では、包含リストと除外リストはどちらも空であり、自動マテリアライズド・ビューがデータベースに対して有効になっている場合は、すべてのアプリケーション・モジュールに自動マテリアライズド・ビューを作成できます。

AUTO_MV_VERIFY_REPORT_RETENTION

検証履歴を保存する最大日数を指定します。

Positive value: 分析および検証の履歴がDBA_AUTO_MV_*ディクショナリ表に保持される日数を示す0から90までの整数値。値0は、履歴が保持されないことを意味します。デフォルト値は31です。

AUTO_MV_MAINT_REPORT_RETENTION

自動マテリアライズド・ビューのメンテナンスの履歴を保存する最大日数を指定します。

Positive integer: 自動マテリアライズド・ビューのリフレッシュの履歴がDBA_AUTO_MV_REFRESH_*ディクショナリ表に保持される日数を示す0から90までの整数値。値を0にすると、履歴が保持されません。デフォルト値は31です。

begin
   dbms_auto_mv.configure (‘AUTO_MV_SPACE_BUDGET’,  ‘50%’);
end;
begin
   dbms_auto_mv.configure (‘AUTO_MV_SCHEMA’,  ‘SH’, FALSE);
   dbms_auto_mv.configure (‘AUTO_MV_SCHEMA’,  ‘SCOTT’);
end;
/

36.2.2 DROP_AUTO_MVSプロシージャ

このプロシージャは、作成された自動マテリアライズド・ビューを削除します。このルーチンは、DBAのみが実行できます。

構文

DBMS_AUTO_MV.DROP_AUTO_MVS (
   owner            IN VARCHAR2,
   mv_name          IN VARCHAR2,
   allow_recreate   IN BOOLEAN DEFAULT FALSE);

パラメータ

表36-4 DROP_AUTO_MVSプロシージャのパラメータ

パラメータ 説明

OWNER

自動マテリアライズド・ビューの所有者の名前を指定します。

OWNERを明示的に指定し、MV_NAMEをNULLに設定している場合は、ユーザーが権限を持つすべての自動マテリアライズド・ビューが削除されます。

OWNERを明示的に指定し、MV_NAMEがNULLに設定している場合は、指定されたOWNERを持つすべての自動マテリアライズド・ビューが削除されます。

削除された自動マテリアライズド・ビューは、デフォルトではシステムによって自動的に再作成されません。

MV_NAME

自動マテリアライズド・ビューの名前。

ALLOW_RECREATE

削除された自動マテリアライズド・ビューの自動作成を有効または無効にします。

FALSEは、削除された自動マテリアライズド・ビューの自動作成を無効にします。これがデフォルトです。

TRUEは、削除された自動マテリアライズド・ビューの自動作成を有効にします。

begin
   dbms_auto_mv.DROP_AUTO_MVS (‘SH’);
end;
/

begin
   dbms_auto_mv.DROP_AUTO_MVS (‘SH’, ‘AUTO_MV$$_G2MKPB9SA1FB7’);
end;
/

36.2.3 RECOMMENDファンクション

このファンクションにより、ユーザーは、指定したSQLチューニング・セット内のSQL文について、自動マテリアライズド・ビューの推奨事項を手動で生成できます。

構文

DBMS_AUTO_MV.RECOMMEND (
   sts_owner             IN  VARCHAR2  DEFAULT 'SYS',
   sts_name              IN  VARCHAR2  DEFAULT 'SYS_AUTO_STS',
   workload_start_time   IN  TIMESTAMP DEFAULT NULL,
   workload_end_time     IN  TIMESTAMP DEFAULT NULL,
   automv_mode           IN  VARCHAR2  DEFAULT 'REPORT ONLY')
RETURN VARCHAR2;

パラメータ

表36-5 RECOMMENDファンクションのパラメータ

パラメータ 説明

sts_owner

SQLチューニング・セットの所有者の名前。デフォルト値はSYSです。

sts_name

SQLチューニング・セットの名前。デフォルト値はSYS_AUTO_STSです。

workload_start_time

ワークロード・ウィンドウの開始時間。

NULLは、デフォルトが選択されていることを意味します。デフォルトは、AUTO_MV_ANALYZE_WORKLOAD_WINDOWで定義された時間数をSYSDATEから引いた値です。

workload_end_time

ワークロード・ウィンドウの終了時間。

automv_mode

AUTOMV_MODEREPORT ONLY (デフォルトのモード)に設定されている場合、このファンクションは、推奨事項のみを出力します。このパラメータがIMPLEMENTに設定されている場合、推奨される自動マテリアライズド・ビューが検証され、実装されます。

戻り値

DBA_AUTO_MV%カタログ・ビューで使用される実行名(execution_name)。

次の例では、デフォルトのSQLチューニング・セットSYS_AUTO_STSが使用されます。自動マテリアライズド・ビューを生成するために必要なワークロードがSYS_AUTO_STSに含まれていることを確認してください。

例1: SYS_AUTO_STSを使用して、過去24時間の推奨事項を生成およびレポートします。このファンクションのデフォルトの動作はREPORT ONLYであるため、自動マテリアライズド・ビューは実装されません。

var exec_name varchar2(200);
begin
	:exec_name := dbms_auto_mv.recommend();
end;
/

SELECT * FROM DBA_AUTO_MV_ANALYSIS_RECOMMENDATIONS 
		WHERE exec_name = :exec_name;

例2: SYS_AUTO_STSを使用して、過去24時間の推奨事項を生成およびパブリッシュします。

var exec_name varchar2(200);
begin
	:exec_name := dbms_auto_mv.recommend(automv_mode=>’IMPLEMENT’);
end;
/

36.2.4 REFRESHプロシージャ

このプロシージャにより、ユーザーは、システム内の古い自動マテリアライズド・ビューすべてを無条件に手動でリフレッシュできます。

構文

DBMS_AUTO_MV.REFRESH ();

begin
	dbms_auto_mv.refresh();
end;
/

36.2.5 REPORT_ACTIVITYファンクション

このファンクションにより、指定した期間の自動マテリアライズド・ビューのアクティビティおよび使用状況についてレポートを生成します。レポートは、引数タイプで指定したとおりにテキスト、HTMLまたはXML形式で生成できます。

構文

DBMS_AUTO_MV.REPORT_ACTIVITY (
   activity_start        IN  TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP -1,
   activity_end          IN  TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP,
   type                  IN  VARCHAR2  DEFAULT ‘TEXT’,
   section               IN  VARCHAR2  DEFAULT ‘ALL’,
   level                 IN  VARCHAR2  DEFAULT ‘TYPICAL’)
RETURN CLOB;

パラメータ

表36-6 REPORT_ACTIVITYファンクションのパラメータ

パラメータ 説明
activity_start レポート生成の開始時間。
activity_end レポート生成の終了時間。

type

レポートを生成する形式のタイプ。可能な値は次のとおりです:
  • TEXT
  • HTML
  • XML

デフォルト値は、TEXTです。

section

sectionには、次の組合せを指定できます。
  • SUMMARY
  • MV_DETAILS
  • QUERY_DETAILS
  • VERIFICATION_DETAILS
  • ALL

デフォルト値はALLです。

+または-演算子を使用することで、レポートの特定の組合せを生成できます。たとえば、sectionがSUMMARY+MV_DETAILSとして指定されている場合、生成されたレポートには、自動マテリアライズド・ビューの要約と詳細のみが含まれます。

level

levelには、BASICTYPICALまたはALLのいずれかを指定できます。levelがBASICに設定されている場合は、自動マテリアライズド・ビューの最後のアクティビティに関する最小限の情報がレポートされます。一方、levelがALLに設定されている場合は、詳細なレポートが生成されます。

デフォルト値はTYPICALです。

戻り値

このファンクションは、レポートをCLOBとして戻します。

例1: 次のREPORT_ACTIVITY()のコールでは、自動マテリアライズド・ビューのすべてのアクティビティについて、HTML出力が生成されます。

select dbms_auto_mv.report_activity(type => ‘HTML') from dual;

36.2.6 REPORT_LAST_ACTIVITYファンクション

このファンクションにより、最後の自動マテリアライズド・ビューのアクティビティおよび使用状況についてレポートを生成します。レポートは、引数タイプで指定したとおりにテキスト、HTMLまたはXML形式で生成できます。

構文

DBMS_AUTO_MV.REPORT_LAST_ACTIVITY (
   type                  IN  VARCHAR2  DEFAULT ‘TEXT’,
   section               IN  VARCHAR2  DEFAULT ‘ALL’,
   level                 IN  VARCHAR2  DEFAULT ‘TYPICAL’)
RETURN CLOB;

パラメータ

表36-7 REPORT_LAST_ACTIVITYファンクションのパラメータ

パラメータ 説明

type

レポートを生成する形式のタイプ。可能な値は次のとおりです:
  • TEXT
  • HTML
  • XML

デフォルト値は、TEXTです。

section

sectionには、次の組合せを指定できます。
  • SUMMARY
  • MV_DETAILS
  • QUERY_DETAILS
  • VERIFICATION_DETAILS
  • ALL

デフォルト値はALLです。

+または-演算子を使用することで、レポートの特定の組合せを生成できます。たとえば、sectionがSUMMARY+MV_DETAILSとして指定されている場合、生成されたレポートには、自動マテリアライズド・ビューの要約と詳細のみが含まれます。

level

levelには、BASICTYPICALまたはALLのいずれかを指定できます。levelがBASICに設定されている場合は、自動マテリアライズド・ビューの最後のアクティビティに関する最小限の情報がレポートされます。一方、levelがALLに設定されている場合は、詳細なレポートが生成されます。

デフォルト値はTYPICALです。

戻り値

このファンクションは、レポートをCLOBとして戻します。

例1: 次のREPORT_LAST_ACTIVITY()のコールでは、TEXT出力が生成されます。

select dbms_auto_mv.report_last_activity('TEXT', 'ALL', ‘TYPICAL’) from dual;

例2: 次のREPORT_LAST_ACTIVITY()のコールでは、XML出力が生成されます。

select dbms_auto_mv.report_last_activity(‘XML', 'ALL', 'TYPICAL') from dual;

例3: 次のREPORT_LAST_ACTIVITY()のコールでは、HTML出力が生成されます。

select dbms_auto_mv.report_last_activity(‘HTML', 'ALL', 'TYPICAL') from dual;