预计算MV基表为远程表的快速刷新-测试

来源:互联网 发布:打字软件赚钱平台 编辑:程序博客网 时间:2024/04/30 04:18

在 复制MV快速刷新限制-测试 中
测试:用于复制功能的物化视图作为预计算物化视图的基表,会导致预计算物化视图无法快速刷新。
是为了解除对以下问题的疑惑:
理解为什么这么做?在远程库中准备好数据然后刷到本地库中,在以上例子中,在oralife准备数据刷到remoteor下。

今天在去同学家的路上,由以上的疑惑想到这么个问题:在我们本地库(remoteor)创建预计算MV,使用的基表为远程表(dblink)时,是否可以建立快速刷新的MV?
如果以上的问题可以解决,就会省去  在远程库中准备好数据  这一步骤。

测试,紧接上一篇 复制MV快速刷新限制-测试

C:\Windows\system32>sqlplus rem/rem@remoteorSQL*Plus: Release 10.2.0.1.0 - Production on 星期六 1月 14 21:15:11 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options--删除这些无用的复制物化视图信息。SQL> DROP MATERIALIZED VIEW LOG ON DIM_A;实体化视图日志已删除。SQL> DROP MATERIALIZED VIEW LOG ON DIM_B;实体化视图日志已删除。SQL> DROP MATERIALIZED VIEW LOG ON FACT;实体化视图日志已删除。SQL> DROP  MATERIALIZED VIEW DIM_A;实体化视图已删除。SQL> DROP  MATERIALIZED VIEW DIM_b;实体化视图已删除。SQL> DROP  MATERIALIZED VIEW FACT;实体化视图已删除。SQL> drop MATERIALIZED VIEW MV_FACT;实体化视图已删除。--由以下可知,预计算MV,当基表为远程表(dblink)时,可以建立快速刷新的MV。SQL> CREATE MATERIALIZED VIEW MV_FACT REFRESH FAST AS  2       SELECT F.ROWID F_ROWID, A.ROWID A_ROWID, B.ROWID B_ROWID, F.ID,  3       A.NAME A_NAME, B.NAME B_NAME, NUM  4       FROM FACT@lau.oralife.cn F, DIM_A@lau.oralife.cn A, DIM_B@lau.oralife.cn B  5       WHERE F.AID = A.ID  6       AND F.BID = B.ID;实体化视图已创建。SQL>  truncate table MV_CAPABILITIES_TABLE;表被截断。SQL> BEGIN  2       DBMS_MVIEW.EXPLAIN_MVIEW('SELECT F.ROWID F_ROWID, A.ROWID A_ROWID, B.ROWID B_ROWID, F.ID,  3       A.NAME A_NAME, B.NAME B_NAME, NUM  4       FROM FACT@lau.oralife.cn F, DIM_A@lau.oralife.cn A, DIM_B@lau.oralife.cn B  5       WHERE F.AID = A.ID  6       AND F.BID = B.ID');  7       END;  8       /PL/SQL 过程已成功完成。SQL>  SELECT CAPABILITY_NAME, POSSIBLE, MSGTXT  2   FROM MV_CAPABILITIES_TABLE  3   WHERE CAPABILITY_NAME LIKE 'REFRESH%';CAPABILITY_NAME                P MSGTXT------------------------------ - ----------------------------------------REFRESH_COMPLETE               YREFRESH_FAST                   YREFRESH_FAST_AFTER_INSERT      YREFRESH_FAST_AFTER_ONETAB_DML  YREFRESH_FAST_AFTER_ANY_DML     YREFRESH_FAST_PCT               N PCT 不可能在实体化视图中的任何从表上已选择6行。SQL> SELECT COUNT(*) FROM MV_FACT;  COUNT(*)----------         6

由以上可知,预计算MV,当基表为远程表(dblink)时,可以建立快速刷新的MV。这只是一个连接型的预计算MV,至于其它类型的预计算MV另行测试。

这篇文章提供了另一种此种情况下的方案:
http://yangtingkun.itpub.net/post/468/207878

其实,http://yangtingkun.itpub.net有很多好文章。


原创粉丝点击