Modifiable - ALTER SESSION, ALTER SYSTEM
Query the user_mview to view the staleness of given materialized view.
也就是所,Oracle信任用户声明的数据完整性,MV中数据新旧程度,dimension中定义的关系。同时,当使用prebuilt materialized view时,需要使用这个设置。
回到上一篇中遗留的问题。
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, R_OWNER, R_CONSTRAINT_NAME, STATUS, VALIDATED, RELY
FROM USER_CONSTRAINTS
WHERE table_name='SALES';
可以看到外键关联都是not validated.
select mview_name, build_mode,staleness from USER_MVIEWS;
所有的Prebuilt MV的新旧程度(staleness)都是未知的。
在Query_Rewrite_Integrity=Enforced时,Oracle是不会使用MV来重写该条SQL的。
Alter session set Query_Rewrite_Integrity=trusted;
重新explain plan上一篇中的select语句
对于普通物化视图(非Prebuilt),当Query_Rewrite_Integiry=Enforeced时,nonvalidated rely外键依然支持Query Rewrite。下面给出一个例子:
CREATE MATERIALIZED VIEW MONTHLY_SALES_MV
BUILD IMMEDIATE
REFRESH COMPLETE
ENABLE QUERY REWRITE
AS
SELECT t.calendar_month_desc, SUM(s.amount_sold) AS dollars , COUNT(s.quantity_sold) AS quantity_sold
FROM sales s , times t
WHERE s.time_id = t.time_id
GROUP BY t.calendar_month_desc;
materialized view MONTHLY_SALES_MV created.
SALES_TIME_FK R SH TIMES_PK ENABLED NOT VALIDATED RELY
FROM USER_CONSTRAINTS
WHERE table_name='SALES';
show parameter rewrite;
NAME TYPE VALUE
-------------------------------------------------- ----------- ----------------------------------------------------------------------------------------------------
query_rewrite_enabled string TRUE
query_rewrite_integrity string enforced
我们来执行一条物化视图中的select语句,查看其执行计划:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/638844/viewspace-1062827/ ,如需转载,请注明出处,否则将追究法律责任。