9 マテリアライズド・ビューのリフレッシュ操作の監視

ここでは、リフレッシュ統計を使用して、マテリアライズド・ビューのリフレッシュ操作のパフォーマンスを監視する方法について説明します。

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

9.1 マテリアライズド・ビュー・リフレッシュ統計について

Oracle Databaseでは、マテリアライズド・ビューのリフレッシュ操作に関する統計が収集および保存されます。これらの統計には、データ・ディクショナリ・ビューを使用してアクセスできます。

現在と過去両方のマテリアライズド・ビューのリフレッシュ操作に関する統計がデータベースに保存されます。過去のマテリアライズド・ビュー・リフレッシュ統計では、データベースにおけるマテリアライズド・ビューのリフレッシュ・パフォーマンスを時間の経過に沿って把握および分析できます。リフレッシュ統計は、様々なレベルの粒度で収集可能です。

マテリアライズド・ビュー・リフレッシュ統計の管理には、次のような機能が用意されています。

  • マテリアライズド・ビューのリフレッシュ操作に関するレポート機能

    • マテリアライズド・ビューのリフレッシュ操作に関する現在と過去両方の統計を表示できます。

    • 実際のリフレッシュ実行時間に関する統計を表示できます。

    • 実際のリフレッシュ実行時間に関する統計を使用して、マテリアライズド・ビューのリフレッシュのパフォーマンスを時間の経過に沿って追跡できます。

  • マテリアライズド・ビューのリフレッシュ・パフォーマンスに関する診断機能

    現在および過去の詳細な統計を使用して、マテリアライズド・ビューのリフレッシュ操作のパフォーマンスをすばやく分析できます。たとえば、マテリアライズド・ビューのリフレッシュに時間がかかる場合、リフレッシュ統計を使用して、処理速度の低下の原因がシステム負荷の増大であるのか、多種多様な変更データであるのかを特定できます。

9.2 マテリアライズド・ビュー・リフレッシュ統計の管理の概要

Oracle Databaseでは、定義したデータベース設定に基づいて、マテリアライズド・ビュー・リフレッシュ統計の収集および保存が管理されます。デフォルトでは、データベース全体のマテリアライズド・ビューのリフレッシュ操作に関する基本的な統計が収集および保存されます。

マテリアライズド・ビュー・リフレッシュ統計の管理には、次の設定を制御するポリシーの定義が含まれます。

  • マテリアライズド・ビュー・リフレッシュ統計の詳細レベル

  • マテリアライズド・ビュー・リフレッシュ統計の保存期間

マテリアライズド・ビュー・リフレッシュ統計を管理するポリシーを定義するには、次の手法を使用します。

  • データベース全体に適用されるデフォルト設定の定義

    DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULTプロシージャでは、データベース全体のマテリアライズド・ビュー・リフレッシュ統計の収集および保存を管理するデフォルト設定を定義できます。

  • 個々のマテリアライズド・ビューの収集および保存ポリシーの定義

    DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMSプロシージャでは、個々のマテリアライズド・ビューのレベルで統計の収集および保存を管理することにより、マテリアライズド・ビュー・リフレッシュ統計をよりきめ細かく制御できます。マテリアライズド・ビュー・レベルで指定された設定は、データベース・レベルの設定より優先されます。

9.3 マテリアライズド・ビュー・リフレッシュ統計が保存されるデータ・ディクショナリ・ビューについて

Oracle Databaseでは、マテリアライズド・ビュー・リフレッシュ統計がデータ・ディクショナリに保存されます。マテリアライズド・ビューのリフレッシュの収集レベルを設定することにより、収集されるリフレッシュ統計の詳細レベルを制御できます。

マテリアライズド・ビューのリフレッシュ操作はそれぞれ、一意のリフレッシュIDを使用して識別されます。1つのリフレッシュ操作によって、複数のマテリアライズド・ビューがリフレッシュされることもあります。たとえば、REFRESH_DEPENDENTプロシージャを使用して1つのマテリアライズド・ビューをリフレッシュすると、同じリフレッシュ操作の一環として、指定したマテリアライズド・ビューに依存するマテリアライズド・ビューもすべてリフレッシュされます。その結果、この操作の一環としてリフレッシュされたすべてのマテリアライズド・ビューのリフレッシュIDは同じになります。

表9-1 マテリアライズド・ビュー・リフレッシュ統計が保存されるデータ・ディクショナリ・ビュー

ビュー名 説明
DBA_MVREF_STATS

リフレッシュ操作のリフレッシュIDや基本的なタイミング統計など、マテリアライズド・ビューのリフレッシュに関する基本的な統計が保存されます。

このビューには、リフレッシュ統計が収集されている各マテリアライズド・ビューに関する次の情報が格納されます。

  • マテリアライズド・ビューの名前

  • 使用されたリフレッシュ方法

  • リフレッシュ操作の開始時と終了時におけるマテリアライズド・ビュー内の行数

  • マテリアライズド・ビューのリフレッシュに使用されたステップの数

DBA_MVREF_RUN_STATS

それぞれのマテリアライズド・ビュー・リフレッシュ操作に関する次のような詳細情報が保存されます。

  • マテリアライズド・ビューのリスト、リフレッシュ方法、消去オプションなど、リフレッシュ操作の実行時に指定したパラメータ

  • リフレッシュ操作でリフレッシュされたマテリアライズド・ビューの数

  • 開始時刻、終了時刻、経過時間など、リフレッシュ操作に関する詳細なタイミング統計

DBA_MVREF_CHANGE_STATS

マテリアライズド・ビューのリフレッシュ操作に関連付けられた実表の変更データ・ロード情報が格納されます。

詳細には、実表名、マテリアライズド・ビュー名、挿入された行数、更新された行数、削除された行数、ダイレクト・ロード・インサートの数、PMOPの詳細、リフレッシュ操作の開始時の行数などが含まれます。

DBA_MVREF_STMT_STATS

1つのマテリアライズド・ビュー・リフレッシュ操作に含まれる各リフレッシュ文に関連する情報が格納されます。

これには、マテリアライズド・ビュー名、リフレッシュID、リフレッシュ文、リフレッシュ文のSQLID、文の実行計画などの情報が含まれます。

9.4 マテリアライズド・ビュー・リフレッシュ統計の収集

Oracle Databaseでは、マテリアライズド・ビューのリフレッシュ操作に関する基本的な統計が収集されます。これらの統計はデータ・ディクショナリに保存され、マテリアライズド・ビューのリフレッシュ操作のパフォーマンスを分析するために使用できます。

9.4.1 マテリアライズド・ビュー・リフレッシュ統計の収集について

Oracle Databaseではデフォルトで、すべてのマテリアライズド・ビューのリフレッシュ操作に関する基本的なリフレッシュ統計が収集されます。

Oracle Databaseでは、マテリアライズド・ビュー・リフレッシュ統計を収集する際の粒度やレベルを制御できます。統計は、データベース内のすべてのマテリアライズド・ビューについて収集することも、マテリアライズド・ビューの特定のセットについて収集することもできます。データベース内の一部のマテリアライズド・ビューのみを監視する場合は、マテリアライズド・ビュー・レベルで統計を収集できます。マテリアライズド・ビューのリフレッシュ・パターンは大きく異なることがあるため、選択した一連のマテリアライズド・ビューについてリフレッシュ統計を収集すると役立ちます。

収集レベルによって、データベースがマテリアライズド・ビューのリフレッシュ操作について収集する統計の量が定義されます。基本的な統計を収集することも、マテリアライズド・ビューのリフレッシュ操作の際に使用されたパラメータや実行されたSQL文など、より詳細な情報を収集することもできます。

マテリアライズド・ビュー・リフレッシュ統計の収集レベルを指定するCOLLECTION_LEVELパラメータを設定するには、DBMS_MVIEW_STATSパッケージ内のプロシージャを使用します。COLLECTION_LEVELパラメータに設定可能な値は次のとおりです。

  • NONE

    マテリアライズド・ビューのリフレッシュ操作に関する統計は収集されません。

  • TYPICAL

    マテリアライズド・ビューのリフレッシュ操作に関する基本的なリフレッシュ統計のみが収集されます。これがデフォルトの設定です。

  • ADVANCED

    リフレッシュ操作で使用されたパラメータや実行されたSQL文など、マテリアライズド・ビューのリフレッシュ操作に関する詳細な統計が収集されます。

9.4.2 マテリアライズド・ビュー・リフレッシュ統計の収集に関するデフォルト設定の指定

DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULTプロシージャを使用すると、データベース・レベルでマテリアライズド・ビュー・リフレッシュ統計の収集を管理するためのデフォルトを設定できます。

個々のマテリアライズド・ビュー・レベルで異なる設定を指定することにより、システム・デフォルトを上書きすることもできます。デフォルト設定が上書きされていないマテリアライズド・ビューでは、システムのデフォルト設定が使用されます。

Oracle Databaseではデフォルトで、データベース全体のマテリアライズド・ビューのリフレッシュ操作に関する基本的な統計が収集および保存されます。統計の収集レベルを変更することにより、統計の収集を無効にしたり、デフォルト設定を変更できます。

データベース・レベルでマテリアライズド・ビュー・リフレッシュ統計のデフォルトの収集レベルを設定するには:

  • DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULTプロシージャを実行し、COLLECTION_LEVELパラメータを設定します。

例9-1 データベースのマテリアライズド・ビュー・リフレッシュ統計収集レベルの設定

この例では、マテリアライズド・ビュー・リフレッシュ統計のデフォルトの収集レベルをADVANCEDに設定して、マテリアライズド・ビューのリフレッシュ操作に関する詳細な統計が収集および保存されるように指定します。

DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULT ('COLLECTION_LEVEL','ADVANCED');

例9-2 マテリアライズド・ビューのリフレッシュに関する統計の収集の無効化

この例では、マテリアライズド・ビュー・リフレッシュ統計のデフォルトの収集レベルをNONEに設定して、統計の収集を無効化します。

DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULT ('COLLECTION_LEVEL','NONE');

9.4.3 マテリアライズド・ビュー・リフレッシュ統計の収集レベルの変更

DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMSプロシージャを使用すると、マテリアライズド・ビュー・リフレッシュ統計の収集を管理する設定を変更できます。

統計の収集の動作は、データベース全体について変更することも、1つ以上のマテリアライズド・ビューについて変更することもできます。収集に関する新しい設定は、データベース・レベルのデフォルト設定や、指定したマテリアライズド・ビューの以前の設定より優先されます。たとえば、COLLECTION_LEVELのシステム・デフォルトがデータベースでTYPICALに設定されているとします。その後、DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMSプロシージャを使用して、マテリアライズド・ビューMV1およびMV2の収集レベルをADVANCEDに変更します。データベース内の残りのマテリアライズド・ビューでは、引き続きTYPICAL収集レベルが使用されます。

データベース・レベルまたはマテリアライズド・ビュー・レベルでマテリアライズド・ビュー・リフレッシュ統計の収集レベルを変更するには:

  • DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMSプロシージャを実行し、COLLECTION_LEVELパラメータを目的の値に設定します。

例9-3 データベース全体のマテリアライズド・ビュー統計収集レベルの設定

次の例では、マテリアライズド・ビュー・リフレッシュ統計の収集レベルをデータベース・レベルでTYPICALに変更します。1つ以上のマテリアライズド・ビュー名のかわりにNULLを指定すると、この設定がデータベース全体に適用されることを示します。

DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMS (NULL, 'TYPICAL');

例9-4 複数のマテリアライズド・ビューのマテリアライズド・ビュー統計収集レベルの設定

この例では、SHスキーマ内のマテリアライズド・ビューSALES_2013_MVおよびSALES_2014_MVの収集レベルをADVANCEDに設定します。保存期間は60日に設定します。この設定は、データベース・レベルで指定されている可能性があるデフォルト設定より優先されます。

DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMS ('SH.SALES_2013_MV, SH.SALES_2014_MV','ADVANCED',60);

9.5 マテリアライズド・ビュー・リフレッシュ統計の保存

Oracle Databaseでは、保存期間で指定した期間、収集されたマテリアライズド・ビュー・リフレッシュ統計が保存されます。

9.5.1 マテリアライズド・ビュー・リフレッシュ統計の保存について

保存期間によって、マテリアライズド・ビュー・リフレッシュ統計がデータ・ディクショナリに保存される期間(日数)が定義されます。保存期間に達すると、収集された統計は自動的に消去されます。

マテリアライズド・ビュー・リフレッシュ統計の保存期間は、データベース・レベルで設定することも、マテリアライズド・ビュー・レベルで設定することもできます。DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULTまたはDBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMSRETENTION_PERIODパラメータを使用すると、マテリアライズド・ビュー・リフレッシュ統計をデータ・ディクショナリに保存しておく必要がある期間を指定できます。

9.5.2 マテリアライズド・ビュー・リフレッシュ統計のデフォルトの保存期間の指定

DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULTプロシージャでは、データベース・レベルでマテリアライズド・ビュー・リフレッシュ統計の保存を管理するためのデフォルトを設定できます。

Oracle Databaseではデフォルトで、収集日から365日間、マテリアライズド・ビュー・リフレッシュ統計が保存されます。保存期間に達すると、統計はデータ・ディクショナリから消去されます。個々のマテリアライズド・ビュー・レベルで異なる設定を指定することにより、システムのデフォルト設定を上書きすることもできます。デフォルト設定が上書きされていないマテリアライズド・ビューでは、引き続きシステムのデフォルト設定が使用されます。

リフレッシュ統計がデータベースから消去されることがないように指定するには、保存期間を-1に設定します。

データベース全体のデフォルトの保存期間を新しく指定するには:

  • DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULTプロシージャのRETENTION_PERIODパラメータを目的の日数に設定します。

例9-5 マテリアライズド・ビュー・リフレッシュ統計の保存期間の設定

この例では、マテリアライズド・ビュー・リフレッシュ統計のデフォルトの保存期間をデータベース全体について60日に設定します。

DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULT ('RETENTION_PERIOD',60);

例9-6 マテリアライズド・ビュー・リフレッシュ統計の消去の禁止

この例では、マテリアライズド・ビュー・リフレッシュ統計の保存期間を-1に設定することにより、デフォルトの保存期間に達しても、リフレッシュ統計が自動的に消去されることがないように指定します。この設定を使用する場合、DBMS_MVIEW_STATS.PURGE_REFRESH_STATSプロシージャを使用して、リフレッシュ統計をデータ・ディクショナリから明示的に消去する必要があります。

DBMS_MVIEW_STATS.SET_SYSTEM_DEFAULT ('RETENTION_PERIOD',–1);

9.5.3 マテリアライズド・ビュー・リフレッシュ統計の保存期間の変更

DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMSプロシージャでは、マテリアライズド・ビュー・リフレッシュ統計に設定されている保存期間を変更できます。

保存期間は、データベース全体について変更することも、1つ以上のマテリアライズド・ビューについて変更することもできます。特定のマテリアライズド・ビューのみについて保存期間を変更した場合、データベース内の残りのマテリアライズド・ビューでは、引き続き既存の保存期間が使用されます。

システムのデフォルト設定では、基本的なマテリアライズド・ビュー・リフレッシュ統計が収集され、60日間保存されるとします。ただし、マテリアライズド・ビューの特定のセットについては、詳細な統計を収集し、それらの統計を45日間保存することにします。この場合、マテリアライズド・ビューの特定のセットについては、COLLECTION_LEVELをADVANCEDに、RETENTION_PERIODを45に設定します。

データベース・レベルまたはマテリアライズド・ビュー・レベルでマテリアライズド・ビュー・リフレッシュ統計の保存期間を変更するには:

  • DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMSプロシージャを実行し、RETENTION_PERIODパラメータを目的の値に設定します。

例9-7 保存期間に関するマテリアライズド・ビュー・リフレッシュ統計のデフォルト設定の使用

この例では、SHスキーマ内のマテリアライズド・ビューSALES_MVの収集レベルをTYPICALに設定します。保存期間にはNULLを使用するため、このマテリアライズド・ビューでは、保存期間についてはシステム全体のデフォルト設定が使用されます。

DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMS ('SH.SALES_MV','TYPICAL',NULL);

例9-8 マテリアライズド・ビューの保存期間の設定

この例では、SH.SALES_MVの収集レベルをADVANCEDに、保存期間を45日に設定します。これは、このマテリアライズド・ビューに設定されている既存の保存期間より優先されます。

DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMS ('SH.SALES_MV','ADVANCED',45);

9.6 マテリアライズド・ビュー・リフレッシュ統計の設定の表示

データ・ディクショナリ・ビューには、マテリアライズド・ビュー・リフレッシュ統計を管理するデフォルト設定とマテリアライズド・ビュー固有の設定の両方が保存されます。

マテリアライズド・ビュー・リフレッシュ統計の収集および保存に関するデータベース・レベルのデフォルト設定を表示するには:

  • DBA_MVREF_STATS_SYS_DEFAULTSビューのparameter_nameおよびvalue列を問い合せます。

1つ以上のマテリアライズド・ビューのリフレッシュ統計の収集および保存に関する設定を表示するには:

  • mv_ownerおよびmv_name列を使用してデータをフィルタ処理することにより、DBA_MVREF_STATS_PARAMSビューのparameter_nameおよびvalue列を問い合せます。

例9-9 マテリアライズド・ビュー・リフレッシュ統計を管理するためのデータベース・レベルのデフォルト設定の表示

次の問合せでは、マテリアライズド・ビュー・リフレッシュ統計を管理するためのデータベース・レベルのデフォルト設定が表示されます。

SELECT parameter_name, value from DBA_MVREF_STATS_SYS_DEFAULTS;

PARAMETER_NAME			VALUE
---------------			--------
COLLECTION_LEVEL		TYPICAL
RETENTION_PERIOD		45

例9-10 一連のマテリアライズド・ビューのリフレッシュ統計に関する設定の表示

次の問合せでは、SHスキーマが所有するすべてのマテリアライズド・ビューのリフレッシュ統計に関する設定が表示されます。

SELECT mv_name,collection_level,retention_period 
FROM DBA_MVREF_STATS_PARAMS 
WHERE mv_owner = 'SH';

MV_NAME			COLLECTION_LEVEL	RETENTION_PERIOD
--------		----------------	-----------------
MY_RTMV             	ADVANCED              	60
NEW_SALES_RTMV      	ADVANCED              	45
MY_SUM_SALES_RTMV   	TYPICAL               	31
SALES_RTMV          	TYPICAL               	-1
CAL_MONTH_SALES_MV  	TYPICAL               	45

5 rows selected.

9.7 マテリアライズド・ビュー・リフレッシュ統計の消去

DBMS_MVIEW_STATS.PURGE_REFRESH_STATSプロシージャを使用すると、指定した期間より古いマテリアライズド・ビュー・リフレッシュ統計をデータ・ディクショナリから明示的に消去できます。

デフォルトでは、指定した保存期間が経過すると、データ・ディクショナリからマテリアライズド・ビュー・リフレッシュ統計が削除されます。設定に応じて、消去がデータベース全体について実行されることもあれば、指定した一連のマテリアライズド・ビューについて実行されることもあります。DBMS_MVIEW_STATS.PURGE_REFRESH_STATSプロシージャを使用すると、設定した保存期間を変更することなく、指定した時間より古いリフレッシュ統計を明示的に消去できます。リフレッシュ統計の明示的な消去は保存期間の現在の設定より優先されますが、その設定が変更されることはありません。

データベースに保存されているマテリアライズド・ビュー・リフレッシュ統計を消去するには:

  • DBMS_MVIEW_STATS.PURGE_REFRESH_STATSプロシージャを実行します。

    統計を消去する必要があるマテリアライズド・ビューと、統計を消去するまでの期間を指定します。

例9-11 マテリアライズド・ビューのリフレッシュ統計の消去

マテリアライズド・ビューSALES_MVのリフレッシュ統計の保存期間は60日であるとします。過去60日間のリフレッシュ統計はいつでも使用可能です。ただし、領域の制約により、30日が経過した統計を消去することにします。そのためには、DBMS_MVIEW_STATS.PURGE_REFRESH_STATSプロシージャを使用します。

SALES_MVに設定されている保存期間は変更されません。この消去は、1回かぎりの操作です。

DBMS_MVIEW_STATS.PURGE_REFRESH_STATS (’SH.SALES_MV’,30);

例9-12 すべてのマテリアライズド・ビューのリフレッシュ統計の消去

この例では、データベース内のすべてのマテリアライズド・ビューについて、20日より古いマテリアライズド・ビュー・リフレッシュ統計を消去します。1つ以上のマテリアライズド・ビューのかわりにNULLを指定すると、この設定がデータベース全体に適用されることを示します。

DBMS_MVIEW_STATS.PURGE_REFRESH_STATS (NULL,20);

9.8 マテリアライズド・ビュー・リフレッシュ統計の表示

リフレッシュ統計が保存されているデータ・ディクショナリ・ビューに問い合せることにより、マテリアライズド・ビューのリフレッシュ操作に関する現在と過去両方の統計を表示できます。

収集レベルの設定に応じて、マテリアライズド・ビュー・リフレッシュ統計は、DBA_MVREFS_STATSDBA_MVREF_RUN_STATSDBA_MVREF_CHANGE_STATSおよびDBA_MVREF_STMT_STATSのうちの1つ以上のビューに保存されます。これらのビューすべてについて、対応するUSER_バージョンがあります。各ビューには、必要に応じて1つ以上のビューを結合するために使用できるREFRESH_ID列があります。

9.8.1 マテリアライズド・ビューの基本的なリフレッシュ統計の表示

マテリアライズド・ビューのリフレッシュ操作に関する基本的な統計を表示するには、DBA_MVREF_STATSビューを使用します。

マテリアライズド・ビューのリフレッシュ操作はそれぞれ、一意のリフレッシュIDを使用して識別されます。DBA_MVREF_STATSビューには、リフレッシュID、リフレッシュ方法、リフレッシュされたマテリアライズド・ビューの名前、基本的な実行時間、およびリフレッシュ操作のステップの数が保存されます。

マテリアライズド・ビューのリフレッシュ操作に関する基本的なリフレッシュ統計を表示するには:

  • 必要な列のリストを指定してDBA_MVREF_STATSビューに問い合せ、条件を使用して必要なデータをフィルタ処理します。

例9-13 マテリアライズド・ビューのリフレッシュ操作に関する基本的な統計の表示

次の問合せでは、SH.NEW_SALES_RTMVマテリアライズド・ビューのリフレッシュ操作に関するいくつかのリフレッシュ統計が表示されます。情報には、リフレッシュ方法、リフレッシュ時間、リフレッシュ操作の開始時におけるマテリアライズド・ビューの行数、およびリフレッシュ操作の終了時における行数が含まれます。

SELECT refresh_id, refresh_method, elapsed_time, initial_num_rows, final_num_rows
FROM dba_mvref_stats
WHERE mv_name = 'NEW_SALES_RTMV' and mv_owner = 'SH';

REFRESH_ID    REFRESH_METHOD    ELAPSED_TIME    INITIAL_NUM_ROWS    FINAL_NUM_ROWS
----------    --------------    -------------   ----------------    ----------------
49            FAST              0               766                 788
61            FAST              1               788                 788
81            FAST              1               788                 798

3 rows selected.

例9-14 リフレッシュ時間に基づいたマテリアライズド・ビューの表示

次の例では、リフレッシュ操作に10分より長くかかったマテリアライズド・ビューの名前を表示します。elapsed_timeは秒数で指定するため、問合せでは600を使用します。

SELECT mv_owner, mv_name, refresh_method
FROM dba_mvref_stats
WHERE elapsed_time > 600;

9.8.2 それぞれのマテリアライズド・ビュー・リフレッシュ操作に関する詳細な統計の表示

DBA_MVREF_RUN_STATSビューには、マテリアライズド・ビューのリフレッシュ操作に関する詳細な統計が保存されます。リフレッシュ操作が複数のマテリアライズド・ビューに影響する場合、影響を受けるすべてのマテリアライズド・ビューについて詳細な統計が使用可能です。

マテリアライズド・ビューをリフレッシュするには、DBMS_MVIEWパッケージ内のREFRESHREFRESH_DEPENDENTまたはREFRESH_ALLプロシージャのいずれかを使用します。各プロシージャには、リフレッシュの実行方法を指定する様々なパラメータがあります。DBA_MVREF_RUN_STATSビューには、リフレッシュ操作で指定されたパラメータ、リフレッシュされたマテリアライズド・ビューの数、実行時間およびログ消去時間に関する情報が格納されます。

マテリアライズド・ビューのリフレッシュ操作に関する詳細なリフレッシュ統計を表示するには:

  • 必要な列のリストを指定してDBA_MVREF_RUN_STATSビューに問い合せ、条件を使用して必要なデータをフィルタ処理します。

例9-15 1つのリフレッシュ操作でリフレッシュされたすべてのマテリアライズド・ビューのリスト

次の例では、指定したリフレッシュIDの一部としてリフレッシュされたマテリアライズド・ビューおよび各マテリアライズド・ビューのリフレッシュ時間を表示します。

SELECT mviews, elapsed_time, complete_stats_available
FROM dba_mvref_run_stats
WHERE refresh_id = 100;

MVIEWS              ELAPSED_TIME      COMPLETE_STATS_AVAIALBE
--------            ------------      -------------------------
"SH"."SALES_RTMV"   1                 Y

例9-16 マテリアライズド・ビューのリフレッシュ操作時に指定されたパラメータの表示

次の例では、リフレッシュID 81のリフレッシュ操作時にリフレッシュされたマテリアライズド・ビューのリストおよび指定されたパラメータの一部を表示します。

SELECT mviews, refresh_after_errors, purge_option, parallelism, nested
FROM dba_mvref_run_stats
WHERE run_owner = 'SH' and refresh_id=81;

MVIEWS              	R     PURGE_OPTION    PARALLELISM   NESTED
------              	-     ------------    ------------  -------
"SH"."SALES_RTMV"	N	1		0	N

例9-17 マテリアライズド・ビューのリフレッシュ操作に関する詳細な統計の表示

次の例では、リフレッシュID 156のリフレッシュ操作に関する詳細な統計を表示します。この詳細には、リフレッシュされたマテリアライズド・ビューの数、マテリアライズド・ビューの所有者と名前、およびリフレッシュに要した時間が含まれます。

SELECT num_mvs, mv_owner, mv_name, r.elapsed_time
FROM dba_mvref_stats s, dba_mvref_run_stats r
WHERE s.refresh_id = r.refresh_id and refresh_id = 156;

NUM_MVS     MV_OWNER    MV_NAME			ELAPSED_TIME
--------    --------    --------		-----------
1           SH          SALES_RTMV		5

9.8.3 マテリアライズド・ビュー・リフレッシュ操作時の変更データ統計の表示

DBA_MVREF_CHANGE_STATSビューには、マテリアライズド・ビューのリフレッシュ操作に関する詳細な変更データ統計が保存されます。これには、リフレッシュされた実表、挿入された行数、更新された行数、削除された行数、パーティション・メンテナンス操作(PMOP)の詳細などが含まれます。

DBA_MVREF_CHANGE_STATSビューを、マテリアライズド・ビュー・リフレッシュ統計を格納する他のビューと結合すると、より詳細な統計を提供できます。

マテリアライズド・ビューのリフレッシュ操作に関する詳細な変更データ統計を表示するには:

  • 必要な列のリストを指定してDBA_MVREF_CHANGE_STATSビューに問い合せ、条件を使用して必要なデータをフィルタ処理します。

例9-18 リフレッシュ操作によってPMOPが発生したかどうかの確認

次の例では、リフレッシュID 1876のリフレッシュ操作について実表名およびPMOPの詳細を表示します。問合せの出力には、マテリアライズド・ビューの実表ごとにレコードが1つずつ表示されます。

SELECT tbl_name, mv_name, pmops_occurred, pmop_details
FROM dba_mvref_change_stats
WHERE refresh_id =1876;

TBL_NAME      MV_NAME     PMOPS_OCCURRED    PMOP_DETAILS
---------     --------    --------------    ------------
MY_SALES      SALES_RTMV    N	

例9-19 リフレッシュ操作時に変更された行数の表示

この例では、SH.MY_SALESマテリアライズド・ビューのリフレッシュ操作における各実表に関する詳細(表内の行数、挿入された行数、更新された行数、削除された行数、ダイレクト・ロード・インサートの数、およびPMOP操作の詳細)を表示します。

SELECT tbl_name, num_rows, num_rows_ins, num_rows_upd, num_rows_del, num_rows_dl_ins, pmops_occurred, pmop_details
FROM dba_mvref_change_stats
WHERE mv_name = 'MY_SALES' and mv_owner = 'SH';

9.8.4 マテリアライズド・ビュー・リフレッシュ操作に関連付けられたSQL文の表示

マテリアライズド・ビューのリフレッシュ操作で使用されたすべてのSQL文に関する情報を表示するには、DBA_MVREF_STMT_STATSビューに問い合せます。

各リフレッシュ操作は、それぞれがSQL文を使用して実行される複数のステップで構成される場合があります。リフレッシュ操作のそれぞれのステップについて、ステップ番号とSQL文を表示できます。

マテリアライズド・ビューのリフレッシュ操作に関連付けられたSQL文を表示するには:

  • 必要な列のリストを指定してDBA_MVREF_STMT_STATSビューに問い合せ、条件を使用して必要なデータをフィルタ処理します。

例9-20 リフレッシュ操作における各ステップのSQL文の表示

次の例では、リフレッシュID 1278のマテリアライズド・ビュー・リフレッシュ操作について、マテリアライズド・ビュー名、マテリアライズド・ビューのリフレッシュに使用されたSQL文、および実行時間を表示します。

SELECT mv_name, step, stmt, execution_time
FROM dba_mvref_stmt_stats
WHERE refresh_id = 1278;

例9-21 マテリアライズド・ビューの現在のリフレッシュで使用されたリフレッシュ文の表示

この例では、MY_SALESマテリアライズド・ビューのリフレッシュに使用された個々のSQL文を表示します。1つのリフレッシュ操作は、それぞれがSQL文を実行する複数のステップで構成される場合があります。この例で表示される詳細には、ステップ番号、SQL文のSQL ID、実行されたSQL文、およびSQL文の実行時間が含まれます。

SELECT step, sqlid, stmt, execution_time
FROM DBA_MVREF_STATS M, DBA_MVREF_STMT_STATS S
WHERE M.refresh_id = S.refresh_id and M.mv_name = 'MY_SALES'
ORDER BY step;

9.9 リフレッシュ統計を使用したマテリアライズド・ビューのリフレッシュ・パフォーマンスの分析

データ・ディクショナリ・ビューに保存されているマテリアライズド・ビュー・リフレッシュ統計を使用して、マテリアライズド・ビューのリフレッシュ・パフォーマンスを分析できます。

リフレッシュ統計で提供される詳細な情報を使用すると、マテリアライズド・ビューのリフレッシュ操作とそのパフォーマンスを把握および分析できます。リフレッシュ統計では通常、マテリアライズド・ビューの重要なリフレッシュ操作や長時間実行されているリフレッシュ操作を分析します。マテリアライズド・ビューのリフレッシュに通常より時間がかかる場合、過去のリフレッシュ時間や変更データを分析することで、時間がかかる要因となっている可能性がある差異(今回はリフレッシュする必要があるデータが5倍多いなど)を特定できます。

マテリアライズド・ビューのリフレッシュ・パフォーマンスを分析するには:

  1. マテリアライズド・ビューのリフレッシュ統計を一定期間にわたって収集するための収集レベルおよび保存期間を設定します。
    これらをデータベース・レベルで設定することも、マテリアライズド・ビュー・レベルで設定することもできます。
  2. リフレッシュ・パフォーマンスを分析する必要があるマテリアライズド・ビューを特定します。
    通常は、データベース内のマテリアライズド・ビューの特定のセットのリフレッシュ・パフォーマンスを分析します。この場合、これらのマテリアライズド・ビューのリフレッシュ統計に関する設定を要件に従って変更できます。
  3. (分析するマテリアライズド・ビューについて)一定期間にわたって複数のリフレッシュ操作が実行されると、Oracle Databaseにより、目的のリフレッシュ統計が収集されます。
  4. リフレッシュ統計が保存されているデータ・ディクショナリ・ビューに問い合せ、目的のマテリアライズド・ビューのリフレッシュ動作を時間の経過に沿って分析し、リフレッシュ動作を把握します。
    データベースには過去と現在両方の統計が保存され、これらを分析することでリフレッシュ動作を把握できます。