CREATE MATERIALIZED VIEW LOG はマテリアライズド・ビュー・ログを作成するSQL文である。マテビューを高速リフレッシュするためには、マテリアライズド・ビュー・ログを作成する必要がある。
マテリアライズド・ビュー・ログとは、マテリアライズド・ビューの基となるマスター表への変更を格納するスキーマ・オブジェクトである。
マテリアライズド・ビュー・ログがある場合、マテリアライズド・ビュー・ログを使用してマテリアライズド・ビューがリフレッシュされる。これを増分リフレッシュまたは高速リフレッシュと呼ぶ。
マテリアライズド・ビューを高速リフレッシュするためには、マテリアライズド・ビュー・ログを作成する必要がある。
自分のスキーマ内にあるテーブルに対して、マテリアライズド・ビュー・ログを作成する。
CREATE MATERIALIZED VIEW LOG ON table
社員表に対して、マテリアライズド・ビュー・ログを作成する。
CREATE MATERIALIZED VIEW LOG ON emp
他人のスキーマ内にあるテーブルに対して、マテリアライズド・ビュー・ログを作成する。
CREATE MATERIALIZED VIEW LOG ON schema.table
社員表に対して、マテリアライズド・ビュー・ログを作成する。
CREATE MATERIALIZED VIEW LOG ON tsuka.emp
マテリアライズド・ビューを作成して、高速リフレッシュするまでの手順を次に示す。
CREATE MATERIALIZED VIEW emp_dept_mv AS
SELECT e.empno, e.deptno, d.dname FROM emp e INNER JOIN dept d ON (e.deptno = d.deptno);
CREATE MATERIALIZED VIEW LOG ON emp;
CREATE MATERIALIZED VIEW LOG ON dept;
DBMS_MVIEW.REFRESH('emp_dept_mv', 'f');
自分のスキーマ内にある表に対してマテリアライズド・ビュー・ログを作成するには、CREATE TABLE システム権限が必要である。
他人のスキーマ内にある表に対してマテリアライズド・ビュー・ログを作成するには、次に示す権限が必要である。
マテリアライズド・ビュー・ログに関するSQL文には、次のものがある。
SQL | 説明 |
---|---|
CREATE MATERIALIZED VIEW LOG | マテリアライズド・ビュー・ログを作成する。 |
ALTER MATERIALIZED VIEW LOG | マテリアライズド・ビュー・ログを変更する。 |
DROP MATERIALIZED VIEW LOG | マテリアライズド・ビュー・ログを削除する。 |
マテリアライズド・ビュー・ログに関するデータディクショナリ・ビューを以下に示す。
次のSQL文を実行することで、自分が所有するマテリアライズド・ビュー・ログの一覧を確認できる。
SQL> SELECT MASTER, LOG_TABLE FROM USER_MVIEW_LOGS;
マテリアライズド・ビュー・ログに関するPL/SQLパッケージを以下に示す。
マテリアライズド・ビュー・ログに関する表を以下に示す。
MV_CAPABILITIES_TABLE テーブルを作成するには、DBMS_MVIEW.EXPLAIN_MVIEW プロシージャを実行する必要がある。
SQL> EXEC DBMS_MVIEW.EXPLAIN_MVIEW('emp_dept_mv');
マテリアライズド・ビューの高速リフレッシュが可能かどうか問い合わせる。
SQL> SELECT CAPABILITY_NAME FROM MV_CAPABILITIES_TABLE WHERE CAPABILITY_NAME = 'REFRESH_FAST';
CAPABILITY_NAME POS REL_TEXT MSGTXT
------------------------------ --- ---------- --------
REFRESH_FAST Y