SELECT a.OWNER , --所有者账户 a.MVIEW_NAME , --名称 b.COLUMN_NAME , --列名称 b.COMMENTS --列注释 FROM USER_MVIEW_ANALYSIS a INNERJOIN USER_COL_COMMENTS b ON a.MVIEW_NAME = b.TABLE_NAME;
物化视图引用了哪些基表
1 2 3 4 5 6 7 8 9 10
-- 物化视图关联表 SELECTDISTINCT A.OWNER, --所有者账户 A.MVIEW_NAME ,--物化视图名称 B.COMMENTS ,--视图注释 A.DETAILOBJ_OWNER,--基表所有者账号 A.DETAILOBJ_NAME --基表名称 FROM USER_MVIEW_DETAIL_RELATIONS A INNERJOIN USER_MVIEW_COMMENTS B ON A.MVIEW_NAME = B.MVIEW_NAME WHERE DETAILOBJ_NAME NOTLIKE'BIN%';
-- 物化视图或普通视图引用了什么普通表,视图被哪些存储过程引用 WITH CTE AS ( SELECTDISTINCT A.OWNER, -- 所有者账户 A.MVIEW_NAME , -- 物化视图名称 A.DETAILOBJ_OWNER , -- 被引用表账号 A.DETAILOBJ_NAME -- 被引用表名称 FROM USER_MVIEW_DETAIL_RELATIONS A WHERE A.DETAILOBJ_NAME NOTLIKE'BIN%' UNIONALL SELECT''ASOWNER, NAMEAS MVIEW_NAME, REFERENCED_OWNER AS DETAILOBJ_OWNER, REFERENCED_NAME AS DETAILOBJ_NAME FROM USER_DEPENDENCIES WHERETYPE ='VIEW' ) SELECT A.OWNER ,-- 视图所有者账户 A.MVIEW_NAME AS MV ,-- 视图名称 A.DETAILOBJ_OWNER ,-- 基表所有者账户 A.DETAILOBJ_NAME ,-- 基表/视图 NVL(B.NAME,'-') AS PROC_NAME -- 存储过程名称 FROM CTE A LEFT JOIN (SELECTDISTINCTNAME,REFERENCED_NAME FROM USER_DEPENDENCIES B WHERE B.TYPE = 'PROCEDURE' ) B ON A.MVIEW_NAME = B.REFERENCED_NAME ORDERBY A.MVIEW_NAME,A.DETAILOBJ_NAME,B.NAME ;
批量删除物化视图日志
将结果复制出来执行。
1 2 3
-- 批量删除物化视图日志 SELECT MASTER,'DROP MATERIALIZED VIEW LOG ON ' || MASTER || ' ;'AS DSQL FROM USER_MVIEW_LOGS;
删除没有被引用的基表的物化视图日志
将结果复制出来执行。
1 2 3 4 5 6 7
-- 删除没有被物化视图引用的基表的物化视图日志 SELECT MASTER,'DROP MATERIALIZED VIEW LOG ON ' || MASTER || ';'AS A FROM ALL_MVIEW_LOGS WHERE MASTER NOTIN ( SELECT DETAILOBJ_NAME FROM USER_MVIEW_DETAIL_RELATIONS );
批量修改物化视图刷新方式
将结果复制出来执行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
--修改物化视图为手动增量刷新 SELECT'ALTER MATERIALIZED VIEW ' || MVIEW_NAME || ' REFRESH FAST ON DEMAND;'AS S FROM USER_MVIEWS WHERE MVIEW_NAME LIKE'MV_%'; --手动执行物化视图增量刷新 SELECT'DBMS_MVIEW.REFRESH(''' || MVIEW_NAME || ''',''F'');'AS S FROM USER_MVIEWS WHERE MVIEW_NAME LIKE'MV_%'; --修改物化视图为自动增量刷新 SELECT'ALTER MATERIALIZED VIEW ' || MVIEW_NAME || ' REFRESH FAST ON COMMIT;'AS S FROM USER_MVIEWS WHERE MVIEW_NAME LIKE'MV_%'; --修改引用了某个基表的所有物化视图为手动增量刷新 SELECT'ALTER MATERIALIZED VIEW ' || MVIEW_NAME || ' REFRESH FAST ON DEMAND;'AS S FROM USER_MVIEWS WHERE MVIEW_NAME IN ( SELECTDISTINCTNAME FROM USER_DEPENDENCIES WHERETYPE = 'MATERIALIZED VIEW' AND REFERENCED_NAME LIKE'%table_name%'-- 基表名称 );