2012-07-23 83 views
0

我一直试图理解物化视图概念很长一段时间,但无法获得它的确切功能,除了它是不同服务器中的表的物理表(副本)。刷新物化视图

我曾尝试以下

CREATE MATERIALIZED VIEW TEMP_MV 
BUILD DEFERRED 
REFRESH COMPLETE 
ON DEMAND 
AS 
SELECT C1,C2,C3 FROM TAB; 

在这里,我已经使用BUILD DEFERRED,这样我将只得到了基表的结构 后来我可以用REFRESH得到记录,但如何执行REFRESH

我甚至试过BUILD IMMEDIATE,这样它就会显示记录,但如果我已经在基表中插入新记录,我无法在MV中获得这些新记录。

CREATE MATERIALIZED VIEW TEMP_MV 
BUILD IMMEDIATE 
REFRESH COMPLETE 
ON DEMAND 
FOR UPDATE 
AS 
SELECT C1,C2,C3 FROM TAB; 

我使用Oracle 10g。 请帮助我更好地理解MV。

感谢

回答

2

如果不指定你的物化视图的定义和物化视图的时间表没有定义,刷新提交,你需要调用DBMS_MVIEW.REFRESH以刷新物化视图中的数据。这就是REFRESH COMPLETE ON DEMAND提到的“需求” - 当你想要刷新时你必须告诉物化视图。

0

首先创建登录基础关系。
我使用emp表作为基础关系,并且我想在提交1秒后更新物化视图。
因此,使用此查询创建登录基关系
在emp上创建物化视图日志;
然后
创建物化视图测试
刷新快速
开始与SYSDATE
下SYSDATE +(1 /(24 * 60 * 60))
作为
SELECT * FROM EMP;

+0

请首先看到[如何回答](https://stackoverflow.com/help/how-to-answer) – 2017-07-12 03:25:36