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_PARAMS
のRETENTION_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
プロシージャを使用すると、設定した保存期間を変更することなく、指定した時間より古いリフレッシュ統計を明示的に消去できます。リフレッシュ統計の明示的な消去は保存期間の現在の設定より優先されますが、その設定が変更されることはありません。
データベースに保存されているマテリアライズド・ビュー・リフレッシュ統計を消去するには:
例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_STATS
、DBA_MVREF_RUN_STATS
、DBA_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
パッケージ内のREFRESH
、REFRESH_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倍多いなど)を特定できます。
マテリアライズド・ビューのリフレッシュ・パフォーマンスを分析するには: