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_MODE | DEMAND | DBMS_MVIEWなどのリフレッシュプロシージャがコールされたタイミング |
COMMIT | マテビュ―のマスターとなるテーブルのひとつがコミットされたタイミング |
|
NEVER | リフレッシュされない(補足1) | |
REFRESH_METHOD | FAST | 差分更新 |
COMPLETE | 完全リフレッシュ | |
FORCE | 可能であれば差分更新をするができない場合は完全リフレッシュ | |
NEVER | リフレッシュしない事をユーザより指定を受けた(補足1) | |
FAST_REFRESHABLE | NO | 複雑で高速リフレッシュできない |
DML | DML操作に対してのみ高速リフレッシュ可能 | |
DIRLOAD_DML | ダイレクト・ロードおよびDML操作に対して高速リフレッシュ可能 | |
DIRLOAD_LIMITEDDML | DIRLOAD_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'