168 DBMS_SYNC_REFRESH

DBMS_SYNC_REFRESHパッケージは、マテリアライズド・ビューの同期リフレッシュを実行するためのインタフェースを提供します。

参照:

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

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

168.1 DBMS_SYNC_REFRESHの概要

同期リフレッシュは、Oracle Databaseリリース12cで導入されたリフレッシュ方法で、一連の表およびその上に定義されたマテリアライズド・ビューを常に同期状態に保つことができます。

参照:

同期リフレッシュの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

168.2 DBMS_SYNC_REFRESHのセキュリティ・モデル

このパッケージの実行権限はPUBLICに付与されるため、すべてのユーザーがこのパッケージのプロシージャを実行して、所有するオブジェクトに対する同期リフレッシュを実行できます。データベース管理者は、データベース内のすべての表およびマテリアライズド・ビューに対して同期リフレッシュ操作を実行できます。

通常、DBA権限のないユーザーが別のユーザーの表に対して同期リフレッシュを使用する場合、その表からの読取りおよびその表への書込みの完全な権限を持っている必要があります。つまり、ユーザーは、その表またはマテリアライズド・ビューに対してSELECTREADINSERTUPDATEおよびDELETEの権限を持っている必要があります。次に例外を示します。

  • PURGE_REFRESH_STATSファンクションとALTER_REFRESH_STATS_RETENTIONファンクション

    これら2つのファンクションは、パージ・ポリシーを実装し、デフォルトのリテンション期間を変更するために使用できます。これらのファンクションは、データベース管理者のみが実行できます。

  • CAN_SYNCREF_TABLEファンクション

    これは、指定した表に関連付けられたすべてのマテリアライズド・ビューの同期リフレッシュの適格性を検査するアドバイザ・ファンクションです。したがって、このファンクションでは、指定された表に関連付けられたすべてのマテリアライズド・ビューでSELECTまたはREAD権限が必要です。

168.3 DBMS_SYNC_REFRESHサブプログラムの要約

この表では、DBMS_SYNC_REFRESHパッケージのサブプログラムをリストし、簡単に説明します。

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

サブプログラム 説明

ABORT_REFRESHプロシージャ

リフレッシュを中断します。

ALTER_REFRESH_STATS_RETENTIONプロシージャ

日数で指定されたリフレッシュ履歴のリテンション値を変更します。

CAN_SYNCREF_TABLEプロシージャ

表およびその依存マテリアライズド・ビューの同期リフレッシュを処理できるかどうかをアドバイスします。

EXECUTE_REFRESHプロシージャ

同期リフレッシュ・グループの同期リフレッシュを実行します。

GET_ALL_GROUP_IDSファンクション

データベースのすべての同期リフレッシュ・グループのグループIDを戻します。

GET_GROUP_IDファンクション

表またはマテリアライズド・ビューのグループIDを戻します。

GET_GROUP_ID_LISTファンクション

オブジェクト(表またはマテリアライズド・ビュー)の指定したリスト内にある表のグループIDを戻します。

PREPARE_REFRESHプロシージャ

リフレッシュする同期リフレッシュ・グループを準備します。

PREPARE_STAGING_LOGプロシージャ

ステージング・ログのデータに関する統計情報を検証して収集します。

PURGE_REFRESH_STATSプロシージャ

タイムスタンプ・パラメータで指定した時間内に実行した同期リフレッシュのリフレッシュ履歴をパージします。

REGISTER_MVIEWS

同期リフレッシュ用にマテリアライズド・ビューを登録します。

REGISTER_PARTITION_OPERATIONプロシージャ

元表のパーティションに対するパーティション・メンテナンス操作を登録します。

UNREGISTER_MVIEWS

同期リフレッシュからマテリアライズド・ビューを登録解除します。

UNREGISTER_PARTITION_OPERATIONプロシージャ

元表のパーティションに対するパーティション・メンテナンス操作の登録を解除します。

168.3.1 ABORT_REFRESHプロシージャ

このプロシージャは、指定した同期リフレッシュ・グループに対してPREPARE_REFRESHまたはEXECUTE_REFRESHで行ったすべての変更を元に戻します。これは、予期しないエラーが発生した場合に、表およびマテリアライズド・ビューを使用可能で整合性のある状態に戻す際に役立ちます。

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

構文

DBMS_SYNC_REFRESH.ABORT_REFRESH (
   group_id      IN NUMBER);

DBMS_SYNC_REFRESH.ABORT_REFRESH (
   group_id_list IN DBMS_UTILITY.NUMBER_ARRAY);

パラメータ

表168-2 ABORT_REFRESHプロシージャのパラメータ

パラメータ 説明

group_id

同期リフレッシュ・グループのグループID。

group_id_list

同期リフレッシュが中断される同期リフレッシュ・グループのグループIDの配列。

使用上のノート

PREPARE_REFRESHの後に呼び出された場合、このプロシージャは、これによって作成された外部表を削除し、同期リフレッシュ・グループ内の表およびマテリアライズド・ビューをロック解除します。

EXECUTE_REFRESHが失敗した後に呼び出された場合、このプロシージャは、正常に終了したパーティション交換をすべて元に戻すことによって、表の状態をEXECUTE_REFRESHの前に戻します。

このプロシージャは、PREPARE_REFRESHプロシージャによって同期リフレッシュ・グループ内の表にかけられたロックを解放します。これらのロックの説明は、「PREPARE_REFRESHプロシージャ」を参照してください。

ABORT_REFRESHは、PREPARE_REFRESH文またはEXECUTE_REFRESH文が失敗した場合のみ機能します。これらのコマンドが正常に実行した後では使用できません。その場合に使用すると、エラーがスローされます。

168.3.2 ALTER_REFRESH_STATS_RETENTIONプロシージャ

このプロシージャは、日数で指定されたリフレッシュ履歴のリテンション値を変更します。これは、PURGE_REFRESH_HISTORYと組み合せて使用されることを想定しています。これを実行する権限に加えて、SYSDBA権限も必要です。

構文

DBMS_SYNC_REFRESH.ALTER_REFRESH_STATS_RETENTION (
   retention   IN NUMBER);

パラメータ

表168-3 ALTER_REFRESH_STATS_RETENTIONプロシージャのパラメータ

パラメータ 説明

retention

リテンション期間を日数で指定します。少なくともこの日数は、リフレッシュ履歴が保持されます。有効範囲は1から365,000です。

次の値を特定の目的に使用できます。

  • -1: リフレッシュ履歴はPREPARE_REFRESHによってパージされません。

  • 0: 古いリフレッシュ履歴は保存されません。PREPARE_REFRESHは、リフレッシュ履歴をすべて削除します。

  • NULL: リフレッシュ履歴のリテンションをデフォルト値に変更します。

168.3.3 CAN_SYNCREF_TABLEプロシージャ

このプロシージャは、表およびその依存マテリアライズド・ビューの同期リフレッシュを処理できるかどうかをアドバイスします。その分析についての説明も行います。処理できない場合、その理由を調べて、可能な場合は適切なアクションを実行できます。

このプロシージャは、表のすべての依存マテリアライズド・ビューと、それらが同期リフレッシュ可能かどうかを表示します。元表の同期リフレッシュが不可能な場合でも、マテリアライズド・ビューの同期リフレッシュは可能な場合があります。

同期リフレッシュにおけるマテリアライズド・ビューの適格性ルールの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

CAN_SYNCREF_TABLEは、2つの方法で起動できます。1つは表を使用する方法、もう1つはVARRAYを作成する方法です。

構文

DBMS_SYNC_REFRESH.CAN_SYNCREF_TABLE (
    schema_name    IN VARCHAR2,
    table_name     IN VARCHAR2,
    statement_id   IN VARCHAR2);

DBMS_SYNC_REFRESH.CAN_SYNCREF_TABLE (
    schema_name    IN VARCHAR2,
    table_name     IN VARCHAR2,
    output_array   IN OUT Sys.CanSyncRefTypeArray);

CAN_SYNCREF_TABLEに渡す必要があるのは、statement_idoutput_arrayのどちらか一方であることに注意してください。

パラメータ

表168-4 CAN_SYNCREF_TABLEプロシージャのパラメータ

パラメータ 説明

schema_name

元表のスキーマの名前。

table_name

元表の名前。

statement_id

ユーザーのスキーマ内にあるSYNCREF_TABLE表への出力の送信時に、CAN_SYNCREF_TABLEの起動に関する行を識別する文字列(VARCHAR2(30))。

output_array

同期リフレッシュにおける元表およびその依存マテリアライズド・ビューの適格性に関する情報を含む出力配列(CAN_SYNCREF_TABLEによって記録される)。

SYNCREF_TABLEの使用方法

CAN_SYNCREF_TABLEの出力は、表SYNCREF_TABLEに送信できます。SYNCREF_TABLEは、ユーザーが作成する必要があります。これは不要になったら削除できます。この構造は次のとおりです。

CREATE TABLE SYNCREF_TABLE (
   statement_id    VARCHAR2(30),
   schema_name     VARCHAR2(30),
   table_name      VARCHAR2(30),
   mv_schema_name  VARCHAR2(30),
   mv_name         VARCHAR2(30),
   eligible        VARCHAR2(1),
   seq_num         NUMBER,
   msg_number      NUMBER,
   message         VARCHAR2(4000));

VARRAYの使用方法

CAN_SYNCREF_TABLEの出力はPL/SQLのVARRAYに保存できます。この配列の要素はCanSyncRefMessageタイプで、SYSスキーマで次のように事前定義されています。

TYPE CanSyncRefMessage IS OBJECT (
   schema_name     VARCHAR2(30),
   table_name      VARCHAR2(30),
   mv_schema_name  VARCHAR2(30),
   mv_name         VARCHAR2(30),
   eligible        VARCHAR2(1),
   seq_num         NUMBER,
   msg_number      NUMBER,
   message         VARCHAR2(4000));

配列タイプCanSyncRefArrayTypeは、CanSyncRefMessageオブジェクトのVARRAYで、SYSスキーマで次のように事前定義されています。

TYPE CanSyncRefArrayType AS VARRAY(256) OF CanSyncRefMessage;

CanSyncRefMessageレコードは、同期リフレッシュに対する実表または依存マテリアライズド・ビューの適格性に関するメッセージを提供します。フィールドのセマンティクスは、SYNCREF_TABLEの対応するフィールドと同じです。ただし、SYNCREF_TABLEには、CanSyncRefMessageにはないstatement_idフィールドがあります。これは、CAN_SYNCREF_TABLEVARRAYパラメータを指定して呼び出されたときにstatement_idが提供されない(不要であるため)からです。

168.3.4 EXECUTE_REFRESHプロシージャ

このプロシージャは、DBMS_SYNC_REFRESH.PREPARE_REFRESHによって準備された同期リフレッシュ・グループに対して同期リフレッシュを実行します。これらのグループは、そのグループIDで識別されます。

このプロシージャは、同期リフレッシュ用に登録されたマテリアライズド・ビューのみでリフレッシュを実行します。その他のマテリアライズド・ビューは、このプロシージャの終了後に失効します。

2つの同期リフレッシュ操作、PREPARE_REFRESHEXECUTE_REFRESHのステータスを監視する方法および発生したエラーをカタログ・ビューの情報を使用してトラブルシューティングする方法は、『Oracle Databaseデータ・ウェアハウス・ガイド』の同期リフレッシュ操作のトラブルシューティングに関する項を参照してください。

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

構文

DBMS_SYNC_REFRESH.EXECUTE_REFRESH (
   group_id   IN NUMBER);

DBMS_SYNC_REFRESH.EXECUTE_REFRESH (
   group_id_list  IN DBMS_UTILITY.NUMBER_ARRAY);

パラメータ

表168-5 EXECUTE_REFRESHプロシージャのパラメータ

パラメータ 説明

group_id

同期リフレッシュ・グループのグループID。

group_id_list

同期リフレッシュが実行される同期リフレッシュ・グループのグループIDの配列。

使用上のノート

このプロシージャは、PREPARE_REFRESHプロシージャによって同期リフレッシュ・グループ内の表にかけられたロックも解放します。これらのロックの説明は、「PREPARE_REFRESHプロシージャ」を、DBMS_SYNC_REFRESH.EXECUTE_REFRESH実行後のリフレッシュ操作のステータスの詳細は、『Oracle Databaseリファレンス』をそれぞれ参照してください。

168.3.5 GET_ALL_GROUP_IDSファンクション

このファンクションは、データベース内のすべての同期リフレッシュ・グループのグループIDを戻します。

構文

FUNCTION DBMS_SYNC_REFRESH.GET_ALL_GROUP_IDS
           RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表168-6 GET_ALL_GROUP_IDSファンクションのパラメータ

パラメータ 説明

get_all_group_ids

データベース内のすべての同期リフレッシュ・グループのグループIDを戻します。

168.3.6 GET_GROUP_IDファンクション

このファンクションは、マテリアライズド・ビューのグループIDを戻します。グループIDは、表が属している同期リフレッシュ・グループを識別します。同期リフレッシュ・グループとは、整合性と正確性を確保するために一緒にリフレッシュする必要がある、関連表とその依存マテリアライズド・ビューのグループのことです。

構文

DBMS_SYNC_REFRESH.GET_GROUP_ID (
   object_name_list   IN VARCHAR2)
RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表168-7 GET_GROUP_IDファンクションのパラメータ

パラメータ 説明

object_name_list

マテリアライズド・ビューの名前。この名前はスキーマで修飾できます。

168.3.7 GET_GROUP_ID_LISTファンクション

このファンクションは、オブジェクト(マテリアライズド・ビュー)の指定したリストにある表のグループIDを戻します。

構文

DBMS_SYNC_REFRESH.GET_GROUP_ID_LIST (
   object_name_list   IN VARCHAR2)
RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表168-8 GET_GROUP_ID_LISTファンクションのパラメータ

パラメータ 説明

object_name_list

オブジェクト名(マテリアライズド・ビュー)のカンマ区切りリスト。それぞれの名前はスキーマで修飾できます。

168.3.8 PREPARE_REFRESHプロシージャ

このプロシージャは、入力のグループIDにより識別された同期リフレッシュ・グループをリフレッシュするための準備をします。

同期リフレッシュ・グループは、一連の関連表およびそれらの元表に依存するすべてのマテリアライズド・ビューから構成されます。このプロシージャは、同期リフレッシュ用に登録済の依存マテリアライズド・ビューのみをリフレッシュのために準備することに注意してください。

2つの同期リフレッシュ操作、PREPARE_REFRESHEXECUTE_REFRESHのステータスを監視する方法および発生したエラーをカタログ・ビューの情報を使用してトラブルシューティングする方法は、『Oracle Databaseデータ・ウェアハウス・ガイド』の同期リフレッシュ操作のトラブルシューティングに関する項を参照してください。

構文

DBMS_SYNC_REFRESH.PREPARE_REFRESH (
   group_id   IN NUMBER)
RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表168-9 PREPARE_REFRESHプロシージャのパラメータ

パラメータ 説明

group_id

同期リフレッシュが準備される同期リフレッシュ・グループのグループID。

使用上のノート

このプロシージャは、同期リフレッシュ操作の3つのフェーズを計画し、準備フェーズ自体に関連付けられたステップを実行します。これらのステップには、ファクト表とマテリアライズド・ビューの変更された各パーティションの識別、および変更結果を反映した新しい値の計算が含まれます。パーティションの新しい値は、EXECUTE_REFRESHの実行時に対応するパーティションに交換される外側の表と呼ばれる表に格納されます。

このプロシージャを実行する前に、ユーザーは、グループのすべての表に対してPREPARE_STAGING_LOGを実行する必要があります。これは、変更がないステージング・ログに対しても必須です。ユーザーは、REGISTER_PARTITION_OPERATIONを使用して、グループの表に対するパーティション操作を登録する必要もあります。

このプロシージャの副作用の1つは、準備される表が次のようにロックされてしまうことです。すなわち、表のステージング・ログは、DMLの発生を防ぐためにロックされます。その結果、パーティション操作の登録が無効になります。これらのロックは、EXECUTE_REFRESH文が発行されるまで有効です。または、ABORT_REFRESH操作を発行してこれらのロックを解除することもできます。このプロシージャの別の副作用は、以前の同期リフレッシュ操作のカタログ・レコードをパージすることです。カタログ・レコードは、リテンション期間より古いときにパージされます。

リフレッシュ準備ジョブの並列性の程度は、ALTER SESSION文によって制御可能なセッション・パラメータから継承されます。

表のグループIDは、GET_GROUP_ID(table_name)を使用して検出できます。表のリストのグループIDは、GET_GROUP_ID_LIST(table_name_list)を使用して検出できます。表のすべてのリストのグループIDは、GET_ALL_GROUP_IDSを使用して取得できます。

デフォルトの同期リフレッシュでは、同期リフレッシュ・グループの表およびマテリアライズド・ビューに属しているグローバル索引は保持されません。保持するには、イベント31904、レベル64を設定してからPREPARE_REFRESHを実行します。これにより、PREPARE_REFRESHによって生成されるパーティション交換DDL文にUPDATE INDEXES句が追加されます。この句をEXECUTE_REFRESHで実行すると、グローバル索引が保持されます。

168.3.9 PREPARE_STAGING_LOGプロシージャ

このプロシージャは、元表のステージング・ログのデータに関する統計情報を収集し、ログのデータを検証します。

これは、データの厳格なチェックが行われる強制モードからチェックが行われない信頼モードまで、いくつかの異なるモードで実行できます。このプロシージャは、ステージング・ログのロード後、およびPREPARE_REFRESHの実行前に実行する必要があります。

強制モード(デフォルト)では、このプロシージャは、削除または更新される行の列の欠落値を入力します。ステージング・ログ・ルールの違反が見つかった場合、エラーがスローされます。ビューUSER_SR_STLOG_EXCEPTIONSを問い合せることで、例外の詳細を取得できます。

ステージング・ログ・キーの概念については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

強制モードでは、ステージング・ログの行の削除または更新が、次のように処理されます。

  • キーを使用して元表に行があるかどうかを確認します。

  • 削除される行では(DMLTYPE$$'D')、このキーを持つ行が元表にあることを確認します。NULLではないキー以外の値がステージング・ログに提供された場合、この値が元表の対応する列と一致していることを確認します。そうでない場合は、例外が例外表に記録されます。キー以外の列の値が欠落している場合、元表の行からその値が入力されます。

  • 更新される行では(DMLTYPE$$'UO'または'UN')、このキーを持つ行が元表に存在することを確認します。古い値の行では(DMLTYPE$$'UO')、削除される行と同様のチェックおよび処理が実行されます。新しい値の行では(DMLTYPE$$'UN')、少なくとも1つの列の値がその古い値とは異なることをチェックします。そうでない場合は、例外が記録されます。

  • 新しい値の行では(DMLTYPE$$'UN')、列のNULL値は、列の古い値と同じ値であると解釈されます。ただし、古い値がNULL以外で新しい値がNULLの場合は、例外的に列の新しい値がNULLであると解釈されます。ユーザーは、NULLに更新される列の古い値を提供する必要があります。

デフォルトの強制モードでは、削除操作または更新操作で各キーが1回のみ指定されていることが確認されます。したがって、ユーザーは、変更を統合する際に、同じ行の削除-挿入を 'UO'行と'UN'行を使用して更新操作に統合し、複数の更新を1つの更新に統合し、同じ行の挿入-更新-削除のようなNull変更がステージング・ログに表示されないようにする必要があります。

強制モードで実行されるチェックには時間がかかる場合があります。データの整合性を確信できる場合は、低いレベルのチェックを選択できます。次のいずれかを選択できます。

  • DBMS_SYNC_REFRESH.INSERT_TRUSTEDpsl_modeを選択して、すべての挿入行(DMLTYPE$$'I')を信頼する

  • DBMS_SYNC_REFRESH.DELETE_TRUSTEDpsl_modeを選択して、すべての削除行(DMLTYPE$$'D')を信頼する

  • DBMS_SYNC_REFRESH.UPDATE_TRUSTEDpsl_modeを選択して、すべての更新行(DMLTYPE$$'UO'または'UN')を信頼する

  • DBMS_SYNC_REFRESH.TRUSTEDpsl_modeを選択して、DMLの3つのタイプすべてを信頼する

さらに、psl_modeを前述のフラグのビットマスクとして指定できます。たとえば、DBMS_SYNC_REFRESH.INSERT_TRUSTED + DBMS_SYNC_REFRESH_DELETE_TRUSTEDは、挿入と削除を信頼して処理しますが、更新は信頼して処理しません。

構文

DBMS_SYNC_REFRESH.PREPARE_STAGING_LOG (
   schema_name      IN VARCHAR2,
   base_table_name  IN VARCHAR2,
   psl_mode         IN NUMBER DEFAULT
   DBMS_SYNC_REFRESH.ENFORCED);

パラメータ

表168-10 PREPARE_STAGING_LOGプロシージャのパラメータ

パラメータ 説明

schema_name

元表のスキーマの名前。

base_table_name

元表の名前。

psl_mode

ステージング・ログの準備を実行する必要があるモード。有効な値は、次のとおりです。

  • DBMS_SYNC_REFRESH.ENFORCED(デフォルト)

  • DBMS_SYNC_REFRESH.INSERT_TRUSTED

  • DBMS_SYNC_REFRESH.DELETE_TRUSTED

  • DBMS_SYNC_REFRESH.UPDATE_TRUSTED

  • DBMS_SYNC_REFRESH.TRUSTED

168.3.10 PURGE_REFRESH_STATSプロシージャ

このプロシージャは、BEFORE_TIMESTAMPパラメータで指定した値の前に実行した同期リフレッシュのリフレッシュ履歴をパージします。

このプロシージャでは、これを実行する権限に加えてSYSDBA権限が必要です。

構文

DBMS_SYNC_REFRESH.PURGE_REFRESH_STATS (
   before_timestamp IN TIMESTAMP WITH TIME ZONE);

パラメータ

表168-11 PURGE_REFRESH_STATSプロシージャのパラメータ

パラメータ 説明

before_timestamp

このタイムスタンプの前に保存された同期リフレッシュのレコードがパージされます。NULLの場合、自動パージによるパージ・ポリシーを使用します。自動パージによって、(現在の時刻-リフレッシュ-履歴リテンション)よりも古いすべての履歴が削除されます。リフレッシュ履歴のリテンション値は、ALTER_REFRESH_STATS_RETENTIONを使用して変更できます。デフォルトは31日です。

168.3.11 REGISTER_MVIEWS

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

これは、リスト内のマテリアライズド・ビューを個別にチェックして、それぞれが属する同期リフレッシュ・グループに配置します。同期リフレッシュ・グループは、関連する表とその上に定義されたマテリアライズド・ビューのセットです。2つの表の間に参照制約が存在する場合、その2つの表は関連するとみなされます。

同期リフレッシュにおけるマテリアライズド・ビューの適格性ルールの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。主要な要件は、マテリアライズド・ビューをパーティション化する必要があるということと、そのパーティション・キーをそのファクト表のパーティション・キーから導出する必要があるということです。同期リフレッシュは外部キーと主キーのリレーションシップを信頼して様々なリフレッシュ最適化を行うため、マテリアライズド・ビューの定義ではUSING TRUSTED CONSTRAINTS句を指定する必要があります。マテリアライズド・ビューのリフレッシュ・ポリシーはON DEMANDとして指定する必要があります。

表に関連付けられているマテリアライズド・ビューの一部のみを登録し、その他を未登録にするオプションもあります。オラクル社ではこれをお薦めしておりません。このオプションを使用する場合、ユーザーはPCTを使用して未登録のビューのメンテナンスを行うか、リフレッシュ・メソッドを完了する必要があります。

マテリアライズド・ビュー・リスト(mv_list)の各マテリアライズド・ビューのベース表ごとに、ステージング表を作成しておく必要があります。そうしない場合、エラーがスローされます。

マテリアライズド・ビューのなかに同期リフレッシュに適格でないものがある場合、エラーがスローされて、マテリアライズド・ビュー・リストのすべてのマテリアライズド・ビューの登録が失敗します。

構文

DBMS_SYNC_REFRESH.REGISTER_MVIEWS (
   mv_list   IN VARCHAR2);

パラメータ

表168-12 REGISTER_MVIEWSプロシージャのパラメータ

パラメータ 説明

mv_list

登録するマテリアライズド・ビューのカンマ区切りリスト。これらの名前はオプションとしてスキーマで修飾されます。

168.3.12 REGISTER_PARTITION_OPERATIONプロシージャ

このプロシージャは、元表のパーティションのパーティション・メンテナンス操作(PMOP)を登録します。

構文

DBMS_SYNC_REFRESH.REGISTER_PARTITION_OPERATION (
   partition_op                IN VARCHAR2,
   schema_name                 IN VARCHAR2,
   base_table_name             IN VARCHAR2,
   partition_name              IN VARCHAR2,
   outside_partn_table_schema  IN VARCHAR2,
   outside_partn_table_name    IN VARCHAR2);

パラメータ

表168-13 REGISTER_PARTITION_OPERATIONプロシージャのパラメータ

パラメータ 説明

partition_op

パーティション操作(DROPEXCHANGEまたはTRUNCATE)の名前。

schema_name

元表のスキーマの名前。

base_table_name

元表の名前。

partition_name

変更するパーティションの名前。外部パーティション表と交換されるか、削除または切捨ての対象になります。

outside_partn_table_schema

外部パーティション表のスキーマの名前(EXCHANGEの場合にのみ必要)。

outside_partn_table_name

外部パーティション表の名前(EXCHANGEの場合にのみ必要)。

使用上のノート

パーティションに対して指定される3種類の変更操作は、DROPTRUNCATEおよびEXCHANGEです。

DROPが指定された場合、パーティションはEXECUTE_REFRESHのときに元表から削除されます。TRUNCATEが指定された場合、パーティションのデータは削除されますが、パーティション自体は削除されません。これらの操作では、ステージング・ログで行を個別に指定するよりも効率的にパーティションのすべての行の削除を指定できます。

EXCHANGEが指定された場合、外部表の内容がEXECUTE_REFRESHで指定したパーティションの内容と交換されます。これにより、元表に変更を適用する別の方法(ステージング・ログにデータを移入する以外)が提供されます。

168.3.13 UNREGISTER_MVIEWS

このプロシージャは、マテリアライズド・ビューのリストを同期リフレッシュから登録解除します。マテリアライズド・ビューが登録解除されると、ユーザーはcomplete、PCT、refreshなどの標準的なリフレッシュ・メソッドを使用して、そのマテリアライズド・ビューのメンテナンスを行うことができます。

構文

DBMS_SYNC_REFRESH.UNREGISTER_MVIEWS (
   mv_list   IN VARCHAR20;

パラメータ

表168-14 UNREGISTER_MVIEWSパラメータ

パラメータ 説明

mv_list

登録解除するマテリアライズド・ビューのカンマ区切りリスト。これらの名前はオプションとしてスキーマで修飾されます。

168.3.14 UNREGISTER_PARTITION_OPERATIONプロシージャ

このプロシージャは、REGISTER_PARTITION_OPERATIONで以前に元表に登録されたパーティション・メンテナンス操作(PMOP)を登録解除します。パーティションで指定可能な3種類の変更操作は、DROPTRUNCATEおよびEXCHANGEです。

構文

DBMS_SYNC_REFRESH.UNREGISTER_PARTITION_OPERATION (
   partition_op     IN VARCHAR2,
   schema_name      IN VARCHAR2,
   base_table_name  IN VARCHAR2,
   partition_name   IN VARCHAR2);

パラメータ

表168-15 UNREGISTER_PARTITION_OPERATIONプロシージャのパラメータ

パラメータ 説明

partition_op

パーティション操作(DROPEXCHANGEまたはTRUNCATE)の名前。

schema_name

元表のスキーマの名前。

base_table_name

元表の名前。

partition_name

変更するパーティションの名前。外部パーティション表と交換されるか、削除または切捨ての対象になります。