105 DBMS_MVIEW

DBMS_MVIEWを使用すると、リライトの可用性の他、マテリアライズド・ビューおよび潜在的なマテリアライズド・ビューの機能を理解できます。また、同じリフレッシュ・グループおよびパージ・ログの一部ではないマテリアライズド・ビューをリフレッシュできます。

注意:

DBMS_MVIEWDBMS_SNAPSHOTのシノニムです。

参照:

データ・ウェアハウス環境におけるマテリアライズド・ビューの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

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

105.1 DBMS_MVIEWの使用上の注意

問合せが256文字未満の場合は、SQL*PlusからEXECUTEコマンドを使用してEXPLAIN_REWRITEを起動できます。それ以外の場合は、/rdbms/demo/smxrw.sqlの例に示されているように、PL/SQLのBEGIN..ENDブロックを使用する方法をお薦めします。

105.2 DBMS_MVIEWのセキュリティ・モデル

DBMS_MVIEWパッケージは、マテリアライズド・ビュー関連の複数のサブプログラムで構成され、その各サブプログラムには異なる機能要件と権限要件があります。

権限モデルは、一般的に実行者権限に基づきます。パッケージの各サブプログラムを実行すると、最初に実行者の権限がチェックされます。必要な権限がすべて付与されている場合、サブプログラムは実行されます。それ以外の場合、権限不足エラーがスローされます。

105.3 DBMS_MVIEWのルールおよび制限

DBMS_MVIEW.EXPLAIN_REWRITEプロシージャでは、32627文字を超える問合せを受け入れられません。これらの制限は、マテリアライズド・ビューの定義問合せをDBMS_MVIEW.EXPLAIN_MVIEWプロシージャに渡すときにも適用されます。

105.4 DBMS_MVIEWサブプログラムの要約

この表は、DBMS_MVIEWサブプログラムを示し、簡単に説明しています。

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

サブプログラム 説明

BEGIN_TABLE_REORGANIZATIONプロシージャ

リフレッシュに必要なマテリアライズド・ビュー・データを保存するプロセスを実行します。

END_TABLE_REORGANIZATIONプロシージャ

マスター表のマテリアライズド・ビュー・データが有効であり、マスター表が適切な状態であることを確認します。

ESTIMATE_MVIEW_SIZEプロシージャ

作成するマテリアライズド・ビューのサイズを、バイトと行で見積もります。

EXPLAIN_MVIEWプロシージャ

マテリアライズド・ビューまたは潜在的なマテリアライズド・ビューを使用して実行できる事項を説明します。

EXPLAIN_REWRITEプロシージャ

クエリー・リライトが失敗した理由、または特定のマテリアライズド・ビュー(複数も可)を使用してオプティマイザがクエリー・リライトを実行した理由を説明します。

I_AM_A_REFRESHファンクション

I_AM_REFRESHパッケージの状態の値を戻します。

PMARKERファンクション

ROWIDからパーティション・マーカーを戻します。戻り値は、パーティション・チェンジ・トラッキング(PCT)で使用されます。

PURGE_DIRECT_LOAD_LOGプロシージャ

マテリアライズド・ビューで行が不要になると、ダイレクト・ローダー・ログからその行をパージします(データ・ウェアハウスで使用)。

PURGE_LOGプロシージャ

マテリアライズド・ビュー・ログから行をパージします。

PURGE_MVIEW_FROM_LOGプロシージャ

マテリアライズド・ビュー・ログから行をパージします。

REFRESHプロシージャ

同じリフレッシュ・グループのメンバーではない1つ以上のマテリアライズド・ビューをリフレッシュします。

REFRESH_ALL_MVIEWSプロシージャ

マスター表またはマスター・マテリアライズド・ビューに変更を反映していないマテリアライズド・ビューをすべてリフレッシュします。

REFRESH_DEPENDENTプロシージャ

指定したマスター表またはマスター・マテリアライズド・ビューに依存する表ベースのマテリアライズド・ビュー、またはマスター表またはマスター・マテリアライズド・ビューをリフレッシュします。

REGISTER_MVIEWプロシージャ

個々のマテリアライズド・ビューの管理を可能にします。

UNREGISTER_MVIEWプロシージャ

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで起動された個々のマテリアライズド・ビューを管理できるようにして、マテリアライズド・ビューの登録を解除します。

105.4.1 BEGIN_TABLE_REORGANIZATIONプロシージャ

このプロシージャは、リフレッシュに必要なマテリアライズド・ビュー・データを保存するプロセスを実行します。このプロシージャは、マスター表の再編成前にコールする必要があります。

構文

DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION (
   tabowner    IN   VARCHAR2,
   tabname     IN   VARCHAR2);

パラメータ

表105-2 BEGIN_TABLE_REORGANIZATIONプロシージャのパラメータ

パラメータ 説明

tabowner

再編成する表の所有者。

tabname

再編成する表の名前。

105.4.2 END_TABLE_REORGANIZATIONプロシージャ

このプロシージャは、マスター表のマテリアライズド・ビュー・データが有効であり、マスター表が適切な状態であることを確認します。このプロシージャは、マスター表の再編成後にコールする必要があります。

構文

DBMS_MVIEW.END_TABLE_REORGANIZATION (
   tabowner    IN   VARCHAR2,
   tabname     IN   VARCHAR2);

パラメータ

表105-3 END_TABLE_REORGANIZATIONプロシージャのパラメータ

パラメータ 説明

tabowner

再編成する表の所有者。

tabname

再編成する表の名前。

105.4.3 ESTIMATE_MVIEW_SIZEプロシージャ

このプロシージャでは、作成するマテリアライズド・ビューのサイズをバイトおよび行数で見積もります。

構文

DBMS_MVIEW.ESTIMATE_MVIEW_SIZE (
   stmt_id       IN  VARCHAR2,
   select_clause IN  VARCHAR2,
   num_rows      OUT NUMBER,
   num_bytes     OUT NUMBER);

パラメータ

表105-4 ESTIMATE_MVIEW_SIZEプロシージャのパラメータ

パラメータ 説明

stmt_id

EXPLAIN PLANで文を識別するために使用する任意の文字列。

select_clause

分析用のSELECT文。

num_rows

推測カーディナリティ。

num_bytes

推測バイト数。

105.4.4 EXPLAIN_MVIEWプロシージャ

このプロシージャは、マテリアライズド・ビューまたは潜在的なマテリアライズド・ビューを使用して実行できる事項を説明します。たとえば、マテリアライズド・ビューが高速リフレッシュ可能であるかどうか、また、特定のマテリアライズド・ビューを使用して実行できるクエリー・リライトのタイプなどを判別します。

このプロシージャの使用方法は簡単です。DBMS_MVIEW.EXPLAIN_MVIEWをコールし、既存のマテリアライズド・ビューにパラメータとしてスキーマとマテリアライズド・ビュー名を渡します。または、潜在的なマテリアライズド・ビューに、SELECT文字列またはCREATE MATERIALIZED VIEW文を指定できます。マテリアライズド・ビューまたは作成前のマテリアライズド・ビューが分析され、結果がデフォルトの表MV_CAPABILITIES_TABLEまたは配列MSG_ARRAYに書き込まれます。

このプロシージャはオーバーロードされています。

  • 最初のバージョンは、既存または潜在的なマテリアライズド・ビューを分析するもので、分析結果はMV_CAPABILITIES_TABLEに出力されます。

  • 2番目のバージョンは、既存または潜在的なマテリアライズド・ビューを分析するもので、分析結果はVARRAYに出力されます。

構文

DBMS_MVIEW.EXPLAIN_MVIEW (
   mv            IN VARCHAR2,
   statement_id  IN VARCHAR2:= NULL);

DBMS_MVIEW.EXPLAIN_MVIEW (
   mv          IN VARCHAR2,
   msg_array   OUT SYS.ExplainMVArrayType);

パラメータ

表105-5 EXPLAIN_MVIEWプロシージャのパラメータ

パラメータ 説明

mv

既存のマテリアライズド・ビューの名前(オプションにより"."(ピリオド)で区切られた所有者の名前で修飾可能)、あるいは潜在的なマテリアライズド・ビューのSELECT文またはCREATE MATERIALIZED VIEW文。

statement_id

クライアントが提供する一意の識別子。出力行を特定のEXPLAIN_MVIEWの起動と関連付けます。

msg_array

出力を受け取るPL/SQLのVARRAY。このパラメータを使用して、MV_CAPABILITIES_TABLEではなくEXPLAIN_MVIEWの出力をPL/SQL VARRAYに送ります。

使用上の注意

VARRAYに出力を送る場合を除き、EXPLAIN_MVIEWをコールする前にutlxmv.sqlスクリプトを実行して、現行スキーマ内にMV_CAPABILITIES_TABLEを作成する必要があります。このスクリプトは、ADMINディレクトリにあります。

105.4.5 EXPLAIN_REWRITEプロシージャ

このプロシージャを使用すると、クエリー・リライトに失敗した理由や、リライトした場合は使用されるマテリアライズド・ビューを確認できます。

プロシージャから得た結果を使用することで、クエリー・リライトに必要な適切なアクションを可能なかぎり実行できます。EXPLAIN_REWRITE文で指定された問合せが、実際に実行されることはありません。

デモ・ファイルxrwutl.sqlを使用すると、EXPLAIN_REWRITEからの出力をフォーマットできます。

構文

DBMS_MVIEW.EXPLAIN_REWRITEからの出力を取得するには、2つの方法があります。1つは表を使用する方法、もう1つはVARRAYを作成する方法です。出力表を使用するための基本構文は、次のとおりです。

DBMS_MVIEW.EXPLAIN_REWRITE (
    query           VARCHAR2,
    mv              VARCHAR2(30),
    statement_id    VARCHAR2(30));

utlxrw.sqlスクリプトを実行して、REWRITE_TABLEという名前の出力表を作成できます。

queryパラメータはSQL問合せを表すテキスト文字列です。パラメータmvは、schema.mvという形式の完全修飾マテリアライズド・ビュー名です。これはオプションのパラメータです。指定されていない場合、EXPLAIN_REWRITEは、目的の問合せのリライトに必要なすべてのマテリアライズド・ビューに関するメッセージを戻します。schemaを省略してmvのみを指定すると、EXPLAIN_REWRITEでは現在のスキーマにあるマテリアライズド・ビューが検索されます。

EXPLAIN_REWRITEの出力を表ではなくVARRAYに送る場合は、プロシージャを次のようにコールする必要があります。

DBMS_MVIEW.EXPLAIN_REWRITE (
    query           [VARCHAR2 | CLOB],
    mv               VARCHAR2(30),
    output_array     SYS.RewriteArrayType);

問合せが256文字未満の場合は、SQL*PlusからEXECUTEコマンドを使用して簡単にEXPLAIN_REWRITEを起動できます。それ以外の場合は、/rdbms/demo/smxrw*の例に示されているように、PL/SQLのBEGIN... ENDブロックを使用する方法をお薦めします。

また、複数のマテリアライズド・ビューでEXPLAIN_REWRITEを使用することもできますが、この場合、構文は、マテリアライズド・ビューがカンマ区切り文字列で指定される点を除き、単一のマテリアライズド・ビューで使用される場合と同じです。たとえば、マテリアライズド・ビューの特定のセットmv1mv2およびmv3を問合せquery_txtのリライトに使用できるかどうかを判断し、使用できない場合にその原因を調べるには、次のようにEXPLAIN_REWRITEを使用します。

DBMS_MVIEW.EXPLAIN_REWRITE(query_txt, 'mv1, mv2, mv3')

EXPLAIN_REWRITEプロシージャの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

パラメータ

表105-6 EXPLAIN_REWRITEプロシージャのパラメータ

パラメータ 説明

query

分析するSQLのSELECT文。

mv

既存のマテリアライズド・ビューの完全修飾名(SCHEMA.MVという形式の名前)。複数のマテリアライズド・ビューの場合は、カンマで区切られた名前のリストを指定できます。

statement_id

出力メッセージを区別するためにクライアントが提供する一意の識別子。

msg_array

出力を受け取るPL/SQLのVARRAY。このパラメータを使用して、EXPLAIN_REWRITEの出力をPL/SQL VARRAYに送ります。

使用上の注意

出力を表に取得するには、EXPLAIN_REWRITEをコールする前にutlxrw.sqlスクリプトを実行する必要があります。このスクリプトは、現行のスキーマにREWRITE_TABLEという名前の表を作成します。

105.4.6 I_AM_A_REFRESHファンクション

このファンクションは、I_AM_REFRESHパッケージの状態の値を戻します。

構文

DBMS_MVIEW.I_AM_A_REFRESH
   RETURN BOOLEAN;

戻り値

戻り値がTRUEの場合は、各レプリケーション・トリガーが最初にこの状態をチェックするため、このセッションではマテリアライズド・ビューのすべてのローカル・レプリケーション・トリガーが完全に使用禁止になります。戻り値がFALSEの場合は、そのトリガーを使用できます。

105.4.7 PMARKERファンクション

このファンクションは、ROWIDからパーティション・マーカーを戻します。パーティション・チェンジ・トラッキング(PCT)に使用されます。

構文

DBMS_MVIEW.PMARKER(
   rid IN ROWID)
 RETURN NUMBER; 

パラメータ

表105-7 PMARKERファンクションのパラメータ

パラメータ 説明

rid

マスター表における行エントリのROWID。

105.4.8 PURGE_DIRECT_LOAD_LOGプロシージャ

このプロシージャは、既知のマテリアライズド・ビューでエントリが不要になると、ダイレクト・ローダー・ログからそのエントリを削除します。このプロシージャは通常、Oracleのデータ・ウェアハウス・テクノロジを使用する環境で使用されます。

構文

DBMS_MVIEW.PURGE_DIRECT_LOAD_LOG();

105.4.9 PURGE_LOGプロシージャ

このプロシージャは、マテリアライズド・ビュー・ログから行をパージします。

構文

DBMS_MVIEW.PURGE_LOG (
   master        IN   VARCHAR2,
   num           IN   BINARY_INTEGER := 1,
   flag          IN   VARCHAR2       := 'NOP');

パラメータ

表105-8 PURGE_LOGプロシージャのパラメータ

パラメータ 説明

master

マスター表またはマスター・マテリアライズド・ビューの名前。

num

マテリアライズド・ビュー・ログから削除する行の中で、リフレッシュ日付が最も古いマテリアライズド・ビューの数。たとえば、次の文は、リフレッシュ日付が最も古い2つのマテリアライズド・ビューをリフレッシュするために必要な行を削除します。

DBMS_MVIEW.PURGE_LOG('master_table', 2);

マテリアライズド・ビュー・ログにあるすべての行を削除するには、次の例のように、削除するマテリアライズド・ビューについて大きい数を指定します。

DBMS_MVIEW.PURGE_LOG('master_table',9999);

この文は、master_tableに基づくマテリアライズド・ビューの数が9999未満の場合、master_tableに対応するマテリアライズド・ビュー・ログを完全にパージします。行がマテリアライズド・ビューからすでにパージされている単純マテリアライズド・ビューは、次回リフレッシュ時に完全にリフレッシュする必要があります。

flag

deleteを指定して、少なくとも1つのマテリアライズド・ビューに対し、マテリアライズド・ビューから行を削除することを保証します。このパラメータは、パラメータnumの設定を上書きできます。たとえば、次の文は、リフレッシュ日付が最も古いマテリアライズド・ビューに従属行を持つマテリアライズド・ビュー・ログから行を削除します。

DBMS_MVIEW.PURGE_LOG('master_table',1,'delete');

105.4.10 PURGE_MVIEW_FROM_LOGプロシージャ

このプロシージャは、マテリアライズド・ビューのリフレッシュに関連したデータ・ディクショナリ表にある行を削除するためにマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでコールされますが、この表は、mview_idまたはmviewownermviewnameおよびmviewsiteの組合せで識別される指定マテリアライズド・ビューについて、マスター・サイトでメンテナンスされている表です。

指定したマテリアライズド・ビューが、任意のマスター表からリフレッシュされた最も古いマテリアライズド・ビューの場合、またはマスター・マテリアライズド・ビューの場合は、そのマテリアライズド・ビュー・ログもパージされます。このプロシージャは、マテリアライズド・ビューの登録解除は行いません。

構文

DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
   mview_id       IN   BINARY_INTEGER);

DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
   mviewowner     IN   VARCHAR2,
   mviewname      IN   VARCHAR2, 
   mviewsite      IN   VARCHAR2);

注意:

このプロシージャはオーバーロードされています。mview_idパラメータには、同時に指定できないパラメータが3つあり、それらのパラメータは、mviewownermviewnameおよびmviewsiteです。

パラメータ

表105-9 PURGE_MVIEW_FROM_LOGプロシージャのパラメータ

パラメータ 説明

mview_id

ターゲット・マテリアライズド・ビューの識別に基づいてこのプロシージャを実行するには、mview_idパラメータを使用してマテリアライズド・ビューの識別を指定します。マテリアライズド・ビュー・ログ・サイトで、マテリアライズド・ビューIDのリスト表示についてDBA_BASE_TABLE_MVIEWSビューを問い合せます。

登録済マテリアライズド・ビューのリスト(DBA_REGISTERED_MVIEWS)にターゲット・マテリアライズド・ビューがない場合は、マテリアライズド・ビューIDに基づいてこのプロシージャを実行すると便利です。

mviewowner

mview_idを指定しない場合は、mviewownerパラメータを使用してターゲット・マテリアライズド・ビューの所有者を入力します。マテリアライズド・ビュー・ログ・サイトでDBA_REGISTERED_MVIEWSビューを問い合せて、マテリアライズド・ビューの所有者を表示します。

mviewname

mview_idを指定しない場合は、mviewnameパラメータを使用してターゲット・マテリアライズド・ビューの名前を入力します。マテリアライズド・ビュー・ログ・サイトでDBA_REGISTERED_MVIEWSビューを問い合せて、マテリアライズド・ビューの名前を表示します。

mviewsite

mview_idを指定しない場合は、mviewsiteパラメータを使用してターゲット・マテリアライズド・ビューのサイトを入力します。マテリアライズド・ビュー・ログ・サイトでDBA_REGISTERED_MVIEWSビューを問い合せて、マテリアライズド・ビュー・サイトを表示します。

使用上の注意

マテリアライズド・ビュー・ログの1つをパージしている間にエラーが発生した場合、それ以前に正常終了したマテリアライズド・ビュー・ログのパージ処理はロールバックされません。これは、マテリアライズド・ビュー・ログのサイズを最小限にするためです。このプロシージャは、エラーが発生した場合でも、すべてのマテリアライズド・ビュー・ログがパージされるまで再起動できます。

105.4.11 REFRESHプロシージャ

このプロシージャは、マテリアライズド・ビューのリストをリフレッシュします。

構文

DBMS_MVIEW.REFRESH (
   { list                 IN     VARCHAR2,
   | tab                  IN     DBMS_UTILITY.UNCL_ARRAY,}
   method                 IN     VARCHAR2       := NULL,
   rollback_seg           IN     VARCHAR2       := NULL,
   push_deferred_rpc      IN     BOOLEAN        := true,
   refresh_after_errors   IN     BOOLEAN        := false,
   purge_option           IN     BINARY_INTEGER := 1,
   parallelism            IN     BINARY_INTEGER := 0,
   heap_size              IN     BINARY_INTEGER := 0,
   atomic_refresh         IN     BOOLEAN        := true,
   nested                 IN     BOOLEAN        := false,
   out_of_place           IN     BOOLEAN        := false);

注意:

このプロシージャはオーバーロードされています。listパラメータとtabパラメータは、同時には指定できません。

パラメータ

表105-10 REFRESHプロシージャのパラメータ

パラメータ 説明

list | tab

リフレッシュするマテリアライズド・ビューの、カンマ区切りのリストです。(シノニムはサポートされていません。)これらのマテリアライズド・ビューは、異なるスキーマに置くことができ、また異なるマスター表またはマスター・マテリアライズド・ビューを持つことができます。ただし、リストされているすべてのマテリアライズド・ビューが、ローカル・データベースに存在している必要があります。

他の方法として、DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL索引付き表を渡せます。この場合、各要素がマテリアライズド・ビューの名前です。

method

リストされているマテリアライズド・ビューのリフレッシュ方法を示す文字列。fは高速リフレッシュ、?は強制リフレッシュ、Cまたはcは完全リフレッシュ、Aまたはaは常にリフレッシュを示します。AおよびCは同等です。Pまたはpは、マテリアライズド・ビュー内の行のうち、ディテール表内で変更されたパーティションによって影響を受ける行を再計算することによるリフレッシュを示します。

マテリアライズド・ビューに対応するリフレッシュ方法がない場合(つまり、リフレッシュ方法より多くのマテリアライズド・ビューが指定された場合)、そのマテリアライズド・ビューはデフォルトのリフレッシュ方法に従ってリフレッシュされます。たとえば、SQL*Plus内の次のEXECUTE文を実行します。

DBMS_MVIEW.REFRESH
   ('countries_mv,regions_mv,hr.employees_mv','cf');

この文は、countries_mvマテリアライズド・ビューの完全なリフレッシュ、regions_mvマテリアライズド・ビューの高速リフレッシュおよびhr.employeesマテリアライズド・ビューのデフォルトのリフレッシュを実行します。

rollback_seg

マテリアライズド・ビューのリフレッシュ中に使用する、マテリアライズド・ビュー・サイトのロールバック・セグメント名。

push_deferred_rpc

更新可能なマテリアライズド・ビューでのみ使用します。マテリアライズド・ビューをリフレッシュする前に、マテリアライズド・ビューから関連するマスター表またはマスター・マテリアライズド・ビューに変更を送信する場合、このパラメータをTRUEに設定します。そうでない場合は、変更が一時的に失われたように表示される場合があります。

refresh_after_errors

このパラメータをTRUEに設定すると、マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに未解決の競合が記録されていても、更新可能なマテリアライズド・ビューのリフレッシュは続行します。このパラメータがtrueで、atomic_refreshfalseの場合、このプロシージャは、マテリアライズド・ビューのリフレッシュに失敗しても他のマテリアライズド・ビューのリフレッシュを続行します。

purge_option

パラレル伝播メカニズムを使用する場合(つまり、パラレル化に1以上を設定)、0はパージなし、1はレイジー・パージ、2はアグレッシブ・パージになります。ほとんどの場合、レイジー・パージが最適な設定です。複数のマスター・レプリケーション・グループが別々のターゲット・サイトに送信され、1つ以上のレプリケーション・グループへの更新や送信がまれな場合は、アグレッシブ・パージに設定してキューを減らします。すべてのレプリケーション・グループへの更新と送信がまれな場合は、このパラメータを0に設定し、キューを減らすためにこのパラメータを2に設定して時々PUSHを実行してください。

parallelism

0 (ゼロ)はシリアル伝播を指定します。

n > 1は、n個のパラレル処理のパラレル伝播を指定します。

1は、パラレル処理を1つのみ使用するパラレル伝播を指定します。

heap_size

パラレル伝播スケジュールのために同時に検査されるトランザクションの最大数です。最適なパフォーマンスを実現するデフォルト値が、自動的に計算されます。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

atomic_refresh

このパラメータをTRUEに設定すると、マテリアライズド・ビューのリストは単一のトランザクションでリフレッシュされます。リフレッシュされたすべてのマテリアライズド・ビューは、単一のポイントへ同時に更新されます。マテリアライズド・ビューのいずれかでリフレッシュに失敗すると、すべてのマテリアライズド・ビューが更新されません。

このパラメータがfalseに設定されている場合、個別のトランザクション内で、各マテリアライズド・ビューの非アトミック・リフレッシュが実行されます。

完全リフレッシュの一環として、切捨てが使用されると(アトミック以外のリフレッシュ)、一意索引の再作成が実行されます。INDEX REBUILDによって統計情報が自動的に計算されます。そのため、切り捨てられた表では統計情報が更新されます。

nested

このパラメータをTRUEに設定すると、指定したマテリアライズド・ビューのセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定したマテリアライズド・ビューのセットと、すべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表の観点から完全に更新されます。

out_of_place

trueの場合、アウトオブプレース・リフレッシュが実行されます。デフォルトは、falseです。

このパラメータは、4つのリフレッシュ方法(FPC?)を使用します。このため、たとえばFout_of_place = trueを指定した場合、アウトオブプレース高速リフレッシュが試行されます。同様に、Pout_of_place = trueを指定した場合、アウトオブプレースPCTリフレッシュが試行されます。

105.4.12 REFRESH_ALL_MVIEWSプロシージャ

このプロシージャは、特定のプロパティを持つすべてのマテリアライズド・ビューをリフレッシュします。

次のプロパティを持つすべてのマテリアライズド・ビューがリフレッシュされます。

  • マテリアライズド・ビューが依存するマスター表またはマスター・マテリアライズド・ビューに対する最も新しい変更が行われてから、マテリアライズド・ビューがリフレッシュされていない場合。

  • マテリアライズド・ビューおよびそれが依存しているすべてのマスター表またはマスター・マテリアライズド・ビューがローカルな場合。

  • マテリアライズド・ビューがDBA_MVIEWSビューにある場合。

これは、データ・ウェアハウスで使用するためのプロシージャです。

構文

DBMS_MVIEW.REFRESH_ALL_MVIEWS (
   number_of_failures     OUT   BINARY_INTEGER,
   method                 IN    VARCHAR2         := NULL,
   rollback_seg           IN    VARCHAR2         := NULL,
   refresh_after_errors   IN    BOOLEAN          := false,
   atomic_refresh         IN    BOOLEAN          := true,
   out_of_place           IN    BOOLEAN          := false);

パラメータ

表105-11 REFRESH_ALL_MVIEWSプロシージャのパラメータ

パラメータ 説明

number_of_failures

処理中に発生した失敗の件数を戻します。

method

リフレッシュされる各マテリアライズド・ビューに対して実行するリフレッシュのタイプを示す単一のリフレッシュ方法。Fまたはfは高速リフレッシュ、?は強制リフレッシュ、Cまたはcは完全リフレッシュ、Aまたはaは常にリフレッシュを示します。AおよびCは同等です。方法が指定されていない場合、マテリアライズド・ビューはデフォルトのリフレッシュ方法に従ってリフレッシュされます。Pまたはpは、マテリアライズド・ビュー内の行のうち、ディテール表内で変更されたパーティションによって影響を受ける行を再計算することによるリフレッシュを示します。

rollback_seg

マテリアライズド・ビューのリフレッシュ中に使用する、マテリアライズド・ビュー・サイトのロールバック・セグメント名。

refresh_after_errors

このパラメータをTRUEに設定すると、マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに未解決の競合が記録されていても、更新可能なマテリアライズド・ビューのリフレッシュは続行します。このパラメータがtrueで、atomic_refreshfalseの場合、このプロシージャは、マテリアライズド・ビューのリフレッシュに失敗しても他のマテリアライズド・ビューのリフレッシュを続行します。

atomic_refresh

このパラメータをTRUEに設定すると、リフレッシュされたマテリアライズド・ビューは単一のトランザクションでリフレッシュされます。リフレッシュされたすべてのマテリアライズド・ビューは、単一のポイントへ同時に更新されます。マテリアライズド・ビューのいずれかでリフレッシュに失敗すると、すべてのマテリアライズド・ビューが更新されません。

このパラメータがfalseに設定されている場合、個別のトランザクション内で、各マテリアライズド・ビューの非アトミック・リフレッシュが実行されます。

out_of_place

trueの場合、アウトオブプレース・リフレッシュが実行されます。デフォルトは、falseです。

このパラメータは、4つのリフレッシュ方法(FPC?)を使用します。このため、たとえばFout_of_place = trueを指定した場合、アウトオブプレース高速リフレッシュが試行されます。同様に、Pout_of_place = trueを指定した場合、アウトオブプレースPCTリフレッシュが試行されます。

105.4.13 REFRESH_DEPENDENTプロシージャ

このプロシージャは、特定のプロパティを持つすべてのマテリアライズド・ビューをリフレッシュします。

次のプロパティを持つマテリアライズド・ビューがリフレッシュされます。

  • マテリアライズド・ビューが、指定されたマスターのリストにあるマスター表またはマスター・マテリアライズド・ビューに依存している場合。

  • マテリアライズド・ビューが依存するマスター表またはマスター・マテリアライズド・ビューに対する最も新しい変更が行われてから、マテリアライズド・ビューがリフレッシュされていない場合。

  • マテリアライズド・ビューおよびそれが依存しているすべてのマスター表またはマスター・マテリアライズド・ビューがローカルな場合。

  • マテリアライズド・ビューがDBA_MVIEWSビューにある場合。

これは、データ・ウェアハウスで使用するためのプロシージャです。

構文

DBMS_MVIEW.REFRESH_DEPENDENT (
   number_of_failures     OUT    BINARY_INTEGER,
   { list                 IN     VARCHAR2,
   | tab                  IN     DBMS_UTILITY.UNCL_ARRAY,}
   method                 IN     VARCHAR2    := NULL,
   rollback_seg           IN     VARCHAR2    := NULL,
   refresh_after_errors   IN     BOOLEAN     := false,
   atomic_refresh         IN     BOOLEAN     := true,
   nested                 IN     BOOLEAN     := false,
   out_of_place           IN     BOOLEAN     := false);

注意:

このプロシージャはオーバーロードされています。listパラメータとtabパラメータは、同時には指定できません。

パラメータ

表105-12 REFRESH_DEPENDENTプロシージャのパラメータ

パラメータ 説明

number_of_failures

処理中に発生した失敗の件数を戻します。

list | tab

マテリアライズド・ビューが依存できるマスター表またはマスター・マテリアライズド・ビューのカンマで区切られたリスト。(シノニムはサポートされていません。)これらの表およびそれらに依存するマテリアライズド・ビューは、別々のスキーマに配置できます。ただし、すべての表とマテリアライズド・ビューが、ユーザーのローカル・データベースに存在している必要があります。

他の方法として、DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL索引付き表を渡せます。この場合、各要素が表の名前です。

method

依存するマテリアライズド・ビューのリフレッシュ方法を示す文字列。特定の表に依存しているすべてのマテリアライズド・ビューは、その表に関連付けられたリフレッシュ方法に従ってリフレッシュされます。Fまたはfは高速リフレッシュ、?は強制リフレッシュ、Cまたはcは完全リフレッシュ、Aまたはaは常にリフレッシュを示します。AおよびCは同等です。Pまたはpは、マテリアライズド・ビュー内の行のうち、ディテール表内で変更されたパーティションによって影響を受ける行を再計算することによるリフレッシュを示します。

表に対応するリフレッシュ方法がない場合(つまり、リフレッシュ方法より多くの表が指定された場合)、その表に依存するマテリアライズド・ビューはデフォルトのリフレッシュ方法に従ってリフレッシュされます。たとえば、SQL*Plus内の次のEXECUTE文を実行します。

DBMS_MVIEW.REFRESH_DEPENDENT
   ('employees,deptartments,hr.regions','cf');

employees表に依存するマテリアライズド・ビューの完全リフレッシュ、departments表に依存するマテリアライズド・ビューの高速リフレッシュおよびhr.regions表に依存するマテリアライズド・ビューのデフォルトのリフレッシュを実行します。

rollback_seg

マテリアライズド・ビューのリフレッシュ中に使用する、マテリアライズド・ビュー・サイトのロールバック・セグメント名。

refresh_after_errors

このパラメータをTRUEに設定すると、マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに未解決の競合が記録されていても、更新可能なマテリアライズド・ビューのリフレッシュは続行します。このパラメータがtrueで、atomic_refreshfalseの場合、このプロシージャは、マテリアライズド・ビューのリフレッシュに失敗しても他のマテリアライズド・ビューのリフレッシュを続行します。

atomic_refresh

このパラメータをTRUEに設定すると、リフレッシュされたマテリアライズド・ビューは単一のトランザクションでリフレッシュされます。リフレッシュされたすべてのマテリアライズド・ビューは、単一のポイントへ同時に更新されます。マテリアライズド・ビューのいずれかでリフレッシュに失敗すると、すべてのマテリアライズド・ビューが更新されません。

このパラメータがfalseに設定されている場合、個別のトランザクション内で、各マテリアライズド・ビューの非アトミック・リフレッシュが実行されます。

nested

このパラメータをTRUEに設定すると、指定した表のセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定した表セット内のすべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表に対して完全に更新されます。

out_of_place

trueの場合、アウトオブプレース・リフレッシュが実行されます。デフォルトは、falseです。

このパラメータは、4つのリフレッシュ方法(FPC?)を使用します。このため、たとえばFout_of_place = trueを指定した場合、アウトオブプレース高速リフレッシュが試行されます。同様に、Pout_of_place = trueを指定した場合、アウトオブプレースPCTリフレッシュが試行されます。

105.4.14 REGISTER_MVIEWプロシージャ

このプロシージャは、個々のマテリアライズド・ビューを管理できるようにします。マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでこのプロシージャを起動して、マテリアライズド・ビューを登録します。

通常、マテリアライズド・ビューは、作成されている間に自動的に登録されます。自動登録に失敗した場合または登録情報が削除された場合にかぎり、このプロシージャを実行してマテリアライズド・ビューを手動で登録してください。

構文

DBMS_MVIEW.REGISTER_MVIEW (
   mviewowner  IN   VARCHAR2,
   mviewname   IN   VARCHAR2,
   mviewsite   IN   VARCHAR2,
   mview_id    IN   DATE | BINARY_INTEGER,
   flag        IN   BINARY_INTEGER,
   qry_txt     IN   VARCHAR2,
   rep_type    IN   BINARY_INTEGER := DBMS_MVIEW.REG_UNKNOWN);

パラメータ

表105-13 REGISTER_MVIEWプロシージャのパラメータ

パラメータ 説明

mviewowner

マテリアライズド・ビューの所有者。

mviewname

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

mviewsite

Oracle Databaseバージョン8.x以上のマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで登録するマテリアライズド・ビューのマテリアライズド・ビュー・サイトの名前。この名前に二重引用符を含めることはできません。

mview_id

マテリアライズド・ビューの識別番号。Oracle Databaseバージョン8.x以上のマテリアライズド・ビューは、BINARY_INTEGERとして指定します。Oracle Databaseバージョン8.x以上のマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで登録するOracle Databaseバージョン7のマテリアライズド・ビューは、DATEとして指定します。

flag

登録されているマテリアライズド・ビューのプロパティを記述する定数。割り当てることができる有効な定数を次に示します。

ROWIDマテリアライズド・ビューの場合はDBMS_MVIEW.REG_ROWID_MVIEW

主キー・マテリアライズド・ビューの場合はDBMS_MVIEW.REG_PRIMARY_KEY_MVIEW

オブジェクトIDマテリアライズド・ビューの場合はDBMS_MVIEW.REG_OBJECT_ID_MVIEW

高速リフレッシュが可能なマテリアライズド・ビューの場合はDBMS_MVIEW.REG_FAST_REFRESHABLE_MVIEW

更新可能なマテリアライズド・ビューの場合はDBMS_MVIEW.REG_UPDATABLE_MVIEW

マテリアライズド・ビューにはこれらのプロパティのうち複数を設定できます。複数のプロパティを指定するには、プラス記号(+)を使用します。たとえば、主キーのマテリアライズド・ビューに高速リフレッシュを実行できる場合、このパラメータに次のように入力できます。

DBMS_MVIEW.REG_PRIMARY_KEY_MVIEW + DBMS_MVIEW.REG_FAST_REFRESHABLE_MVIEW

ALL_MVIEWSデータ・ディクショナリ・ビューを問い合せると、マテリアライズド・ビューのプロパティを判別できます。

qry_txt

マテリアライズド・ビュー定義問合せの最初の32,000バイト。

rep_type

マテリアライズド・ビューのバージョン。割り当てることができる有効な定数を次に示します。

マテリアライズド・ビューがOracle Databaseバージョン7のサイトにある場合、DBMS_MVIEW.REG_V7_SNAPSHOT

  • DBMS_MVIEW.REG_V8_SNAPSHOT

マテリアライズド・ビューがOracle Databaseバージョン8.x以上のサイトにある場合、reg_repapi_snapshot

マテリアライズド・ビューがOracle Databaseバージョン7のサイトまたはOracle Databaseバージョン8.x以上のサイトのどちらにあるか不明な場合、DBMS_MVIEW.REG_UNKNOWN(デフォルト)。

使用上の注意

このプロシージャは、リモート・プロシージャ・コールを使用して、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでリモート・マテリアライズド・ビューにより起動します。REGISTER_MVIEWが同じmviewownermviewnameおよびmviewsiteを使用して複数回コールされている場合、mview_idflagおよびqry_txtに対する最も新しい値が格納されます。問合せがVARCHAR2の最大サイズを超える場合は、最初の32000文字がqry_txtに格納され、残りは切り捨てられます。手動で起動した場合、プロシージャをコールしたユーザーがマテリアライズド・ビューのデータ・ディクショナリ・ビューでmview_idの値を参照する必要があります。

105.4.15 UNREGISTER_MVIEWプロシージャ

このプロシージャは、個々のマテリアライズド・ビューを管理できるようにします。マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでこのプロシージャを起動して、マテリアライズド・ビューの登録を解除します。

構文

DBMS_MVIEW.UNREGISTER_MVIEW (
   mviewowner      IN   VARCHAR2,
   mviewname       IN   VARCHAR2,
   mviewsite       IN   VARCHAR2);

パラメータ

表105-14 UNREGISTER_MVIEWプロシージャのパラメータ

パラメータ 説明

mviewowner

マテリアライズド・ビューの所有者

mviewname

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

mviewsite

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