説明
このステートメントは、マテリアライズドビューのログを作成するために使用されます。
マテリアライズドビューのログ(Materialized View Log、mlog)は、ベーステーブル(通常のテーブルまたはマテリアライズドビュー)の増分更新データを記録し、マテリアライズドビューの高速リフレッシュ機能をサポートします。mlog は、ベーステーブルの変更を追跡し、これらの変更を対応するマテリアライズドビューに適用して高速なリフレッシュを実現するためのレコードテーブルです。
説明
OceanBaseデータベースでは、mlog でパーティションを指定することは現在サポートされておらず、mlog のパーティションはベーステーブルのパーティションとバインドされています。
権限要件
マテリアライズドビューのログを作成するには、CREATE TABLE とベーステーブルに対する SELECT 権限が必要です。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
構文
CREATE [OR REPLACE] MATERIALIZED VIEW LOG ON [schema.] table
[parallel_clause]
[with_clause]
[mv_log_purge_clause];
parallel_clause:
NOPARALLEL
| PARALLEL integer
with_clause:
WITH [ {PRIMARY KEY | ROWID | SEQUENCE}
[ { , PRIMARY KEY | , ROWID | , SEQUENCE }]... ]
(column_name [, column_name]...)
[new_values_clause]
new_values_clause:
{INCLUDING | EXCLUDING} NEW VALUES
mv_log_purge_clause:
PURGE {IMMEDIATE [ SYNCHRONOUS ]
| START WITH datetime_expr [NEXT datetime_expr]
| [START WITH datetime_expr] NEXT datetime_expr
}
パラメータの説明
| パラメータ | 説明 |
|---|---|
| OR REPLACE | オプション。OR REPLACE を指定すると、対応する mlog が既に存在する場合、定義に基づいて新しい mlog を作成し、既存の mlog を新しい mlog に置き換えます。mlog の再作成処理は、マテリアライズドビューおよびベーステーブルの通常の読み書きに影響を与えません。
説明OceanBaseデータベースV4.3.5では、V4.3.5 BP3バージョンから |
| schema. | オプション。マテリアライズドビューログのベーステーブルが属するスキーマを指定します。schema. を省略した場合、デフォルトでベーステーブルは自身のスキーマ内に存在します。 |
| table | マテリアライズドビューログに対応するベーステーブル名を指定します。 |
| parallel_clause | オプション。マテリアライズドビューテーブルの作成時に使用するDOPを指定します。これは、マテリアライズドビューログの並列処理レベルを指定するために使用されます。詳細については、以下のparallel_clauseを参照してください。 |
| with_clause | オプション。マテリアライズドビューログに含まれる補助列を指定します。ベーステーブルに変更があった場合の主キー(PRIMARY KEY)と行識別子(ROWID)を記録するかどうかを指示するために使用されます。また、この句を使用してシーケンス(SEQUENCE)を追加することで、マテリアライズドビューログに追加のソート情報を提供することもできます。詳細については、以下のwith_clauseを参照してください。 |
| column_name | オプション。変更されたすべての行のマテリアライズドビューログにその値を記録する列名を指定します。 |
| new_values_clause | オプション。更新操作における古い値と新しい値をマテリアライズドビューログに同時に記録するかどうかを指定します。詳細については、以下のnew_values_clauseを参照してください。 |
| mv_log_purge_clause | オプション。マテリアライズドビューログ内のデータのクリーンアップ時間を指定します。詳細については、以下のmv_log_purge_clauseを参照してください。 |
parallel_clause
NOPARALLEL:デフォルト設定で、並列度は1です。PARALLEL integer:並列度を指定します。integerの値は1以上です。
with_clause
PRIMARY KEY:マテリアライズドビューのログがベーステーブルの主キー列を記録することを示します。主キーを持つテーブルに対してのみ有効です。指定しない場合、システムはマテリアライズドビューのログにこのプロパティを自動的に追加します。つまり、マテリアライズドビューのログにはデフォルトで主キー列が含まれます。ROWID:マテリアライズドビューのログがベーステーブルの行識別子(ROWID)を記録することを示します。指定しない場合、システムはマテリアライズドビューのログにこのプロパティを自動的に追加します。つまり、マテリアライズドビューのログにはデフォルトでM_ROW$$列が含まれます。SEQUENCE:マテリアライズドビューのログがトランザクション内の複数行の更新シーケンス番号(seq_no)を記録することを示します。システムはマテリアライズドビューのログにこのプロパティを自動的に追加します。つまり、マテリアライズドビューのログにはデフォルトでSEQUENCE$$列が含まれます。
new_values_clause
INCLUDING:デフォルト設定で、マテリアライズドビューのログに新旧値を保存できることを示します。マテリアライズドビューが迅速なリフレッシュをサポートするようにしたい場合は、INCLUDING NEW VALUESを指定する必要があります。EXCLUDING:マテリアライズドビューのログに新しい値を記録することを無効にすることを示します。EXCLUDING NEW VALUESを使用しないでください。そうしないとエラーが発生します。
mv_log_purge_clause
注意
マテリアライズドビューのログから対応するデータが削除されるのは、マテリアライズドビューが正常にリフレッシュされた後だけです。
IMMEDIATE:マテリアライズドビューのリフレッシュが完了するたびに、対応するマテリアライズドビューのログを直ちに削除することを示します。デフォルト値はSYNCHRONOUSです。SYNCHRONOUS:オプションで、同期実行での削除を示します。
START WITH datetime_expr [NEXT datetime_expr]:START WITH datetime_expr:マテリアライズドビューのログの最初の削除時間を示します。[NEXT datetime_expr]:オプションで、次回のマテリアライズドビューのログの削除時間を示します。次回のマテリアライズドビューのログの削除時間を設定するために使用します。
[START WITH datetime_expr] NEXT datetime_expr:START WITH datetime_exprパラメータを指定せず、NEXT datetime_exprパラメータのみを指定した場合、マテリアライズドビューのログの最初の削除時間はNEXT datetime_exprパラメータの値に設定されます。
注意
START WITH datetime_expr と NEXT datetime_expr の2つの日付時刻式が将来の時点に設定されていることを確認してください。そうでない場合、エラーが発生します。
現在のタイムゾーンの時間を表すために current_date を使用することを推奨します。日付時刻式の例は以下のとおりです:
現在の時間(
current_date)から始まり、10秒ごとに期限切れのマテリアライズドビューのログレコードをクリーンアップします。START WITH current_date NEXT current_date + INTERVAL '10' SECOND現在の時間(
current_date)から始まり、10時間ごとに期限切れのマテリアライズドビューのログレコードをクリーンアップします。START WITH current_date NEXT current_date + INTERVAL '10' HOUR現在の時間(
current_date)から始まり、1日ごとに期限切れのマテリアライズドビューのログレコードをクリーンアップします。START WITH current_date NEXT current_date + 1
例
テーブル
test_tbl1を作成します。CREATE TABLE test_tbl1 (col1 NUMBER PRIMARY KEY, col2 VARCHAR2(20), col3 NUMBER);test_tbl1テーブルにマテリアライズドビューのログを作成します。マテリアライズドビューのログをパラレル処理するパラレル度を5に指定し、マテリアライズドビューのログがcol2列の変更情報を記録するように設定します。また、変更前後の新しい値も記録されます。さらに、マテリアライズドビューのログは現在の日付から始まり、1日ごとに期限切れのマテリアライズドビューのログレコードをクリーンアップするように設定します。CREATE MATERIALIZED VIEW LOG ON test_tbl1 PARALLEL 5 WITH SEQUENCE(col2) INCLUDING NEW VALUES PURGE START WITH current_date NEXT current_date + 1;テーブル
test_tbl1のマテリアライズドビューのログ情報を確認します。DESC mlog$_test_tbl1;実行結果は次のとおりです:
+------------+--------------+------+------+---------+-------+ | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA | +------------+--------------+------+------+---------+-------+ | COL1 | NUMBER | NO | PRI | NULL | NULL | | COL2 | VARCHAR2(20) | YES | NULL | NULL | NULL | | SEQUENCE$$ | BIGINT(20) | NO | PRI | NULL | NULL | | DMLTYPE$$ | VARCHAR2(1 ) | YES | NULL | NULL | NULL | | OLD_NEW$$ | VARCHAR2(1 ) | YES | NULL | NULL | NULL | +------------+--------------+------+------+---------+-------+ 5 rows in settest_tbl1テーブルのマテリアライズドビューのログを変更して、col2とcol3列の変更情報を記録するようにします。CREATE OR REPLACE MATERIALIZED VIEW LOG ON test_tbl1 PARALLEL 5 WITH SEQUENCE(col2, col3) INCLUDING NEW VALUES PURGE START WITH current_date NEXT current_date + 1;テーブル
test_tbl1のマテリアライズドビューのログ情報を確認します。DESC mlog$_test_tbl1;実行結果は次のとおりです:
+------------+--------------+------+------+---------+-------+ | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA | +------------+--------------+------+------+---------+-------+ | COL1 | NUMBER | NO | PRI | NULL | NULL | | COL2 | VARCHAR2(20) | YES | NULL | NULL | NULL | | COL3 | NUMBER | YES | NULL | NULL | NULL | | SEQUENCE$$ | BIGINT(20) | NO | PRI | NULL | NULL | | DMLTYPE$$ | VARCHAR2(1 ) | YES | NULL | NULL | NULL | | OLD_NEW$$ | VARCHAR2(1 ) | YES | NULL | NULL | NULL | +------------+--------------+------+------+---------+-------+ 6 rows in set