データ・ディクショナリ

DBA_MVIEWSでマテリアライズド・ビュー一覧

DBA_MVIEWS でマテリアライズド・ビュー一覧

マテビューはDBA_MVIEWSにて確認できます。

マテビュー一覧出力SQL
select t.OWNER,t.MVIEW_NAME,t.MASTER_LINK,t.REFRESH_MODE,t.REFRESH_METHOD
,t.FAST_REFRESHABLE,t.LAST_REFRESH_TYPE,t.LAST_REFRESH_DATE
from DBA_MVIEWS t
order by t.LAST_REFRESH_DATE
;
SQL実行例
OWNER    MVIEW_NAME         MASTER_LIN REFRESH_MO REFRESH_ME FAST_REFRESHAB LAST_REFRESH LAST_REFRESH_DATE
-------- ------------------ ---------- ---------- ---------- -------------- ------------ -------------------
SOONI    PREFECTURE_MMV2               COMMIT     COMPLETE   DIRLOAD_DML    COMPLETE     2022-06-26 23:33:30
SOONI    PREFECTURE_MMV                DEMAND     COMPLETE   DIRLOAD_DML    COMPLETE     2022-06-26 23:11:45
SOONI    PREFECTURE_F_MMV              COMMIT     FAST       DIRLOAD_DML    COMPLETE     2022-06-26 23:43:29
SOONI    PREFECTURE_FC_MMV             COMMIT     FAST       DIRLOAD_DML    COMPLETE     2022-06-26 23:18:57
SOONI    PREFECTURE_CP_MMV             NEVER      NEVER      DIRLOAD_DML    COMPLETE     2022-06-26 23:50:54
SOONI    PREFECTURE_NL_MMV             DEMAND     COMPLETE   DIRLOAD_DML    NA

6行が選択されました。

SQL>
項目説明
項目名意味
REFRESH_MODEDEMANDDBMS_MVIEWなどのリフレッシュプロシージャがコールされたタイミング
COMMITマテビュ―のマスターとなるテーブルのひとつがコミットされたタイミング
NEVERリフレッシュされない(補足1)
REFRESH_METHODFAST差分更新
COMPLETE完全リフレッシュ
FORCE可能であれば差分更新をするができない場合は完全リフレッシュ
NEVERリフレッシュしない事をユーザより指定を受けた(補足1)
FAST_REFRESHABLENO複雑で高速リフレッシュできない
DMLDML操作に対してのみ高速リフレッシュ可能
DIRLOAD_DMLダイレクト・ロードおよびDML操作に対して高速リフレッシュ可能
DIRLOAD_LIMITEDDMLDIRLOAD_DMLの範囲内で一部制限あり

補足1:マテビューのリフレッシュ方法はFAST/COMPLETE/FORCEの3種であるが、以下DDLを使って一時的に「リフレッシュをさせない状態」にする事ができます。そしてこの状態になるとそのマテビューに対してDML文を発行する事ができます。(元表への更新はせず一時的にマテビューの値だけ変更したい状況に使える機能だとおもいます。)
参考までにですが、この状態でリフレッシュ用プロシージャを実行すると「ORA-23538: NEVER REFRESHマテリアライズド・ビュー(“PREFECTURE_CP_MMV”)は明示的にリフレッシュできません」とエラーになります。

-- マテビュー(PREFECTURE_CP_MMV)のリフレッシュを一時的に行えないようにする。
ALTER MATERIALIZED VIEW PREFECTURE_CP_MMV NEVER REFRESH
;
-- NEVER の状態を再度リフレッシュ可能状態へ戻す
ALTER MATERIALIZED VIEW PREFECTURE_CP_MMV  REFRESH COMPLETE
;
DBA_MVIEW_COMMENTSと結合してコメントを表示するSQL
select t.OWNER,t.MVIEW_NAME,c.COMMENTS,t.REFRESH_MODE,t.REFRESH_METHOD
,t.FAST_REFRESHABLE,t.LAST_REFRESH_TYPE
,t.REWRITE_ENABLED,REWRITE_CAPABILITY
from DBA_MVIEWS t
left outer join DBA_MVIEW_COMMENTS c
on t.OWNER = c.OWNER and t.MVIEW_NAME = c.MVIEW_NAME
order by t.LAST_REFRESH_DATE
;
SQL実行例
                                                                                                     REWRIT REWRITE
OWNER    MVIEW_NAME       COMMENTS                 REFRESH_MO REFRESH_ME FAST_REFRESHAB LAST_REFRESH ENABLE CAPABIL
-------- ---------------- ------------------------ ---------- ---------- -------------- ------------ ------ -------
SOONI    PREFECTURE_MMV2  都道府県完全リフレッシュ COMMIT     COMPLETE   DIRLOAD_DML    COMPLETE     N      GENERAL
SOONI    PREFECTURE_F_MMV 都道府県差分更新         COMMIT     FAST       DIRLOAD_DML    COMPLETE     N      GENERAL
SOONI    PREFECTURE_MMV   都道府県マスタ           DEMAND     COMPLETE   DIRLOAD_DML    COMPLETE     N      GENERAL

SQL>
SQL*Plusでの表示用
set lin 200
col OWNER for a8
col MVIEW_NAME for a18
col MASTER_LINK for a10
col REFRESH_MODE for a10
col REFRESH_METHOD for a10
col FAST_REFRESHABLE for a14
col LAST_REFRESH_TYPE for a12
col COMMENTS for a24
col REWRITE_ENABLED FORMAT A6
col REWRITE_ENABLED HEADING 'REWRITE|ENABLED'
col REWRITE_CAPABILITY FORMAT A7
col REWRITE_CAPABILITY HEADING 'REWRITE|CAPABILITY'
スポンサーリンク