为什么物化视图会中断?

时间:2011-02-21 08:50:42

标签: oracle materialized-views

我创建了一个物化视图:

CREATE MATERIALIZED VIEW "SUPUSERWH"."EXAM_MVIEW" ("CODE","AGE")
As    
(
      select CODE, AGE from  EXAM_TEST
)

这很有用。然后我在表EXAM_TEST中插入了一行,并刷新了我的连接。然后物化视图EXAM_MVIEW破裂了。为什么呢?

enter image description here

2 个答案:

答案 0 :(得分:6)

我不知道“破坏”是什么意思,但是你定义了物化视图的方式,在插入EXAM_TEST之后,Oracle会认为它是陈旧的。登记/> Stale意味着使用物化视图会产生与使用基表不同的结果。

您可以通过以下方式解决此问题:

  • 手动刷新视图。这在定期写入数据(每小时加载一次)时非常有用
  • 在提交时为快速刷新配置它。当数据更频繁地更新时,这很有用,这意味着只要一个会话提交,物化视图就会更新。
  • 接受陈旧数据(将参数query_rewrite_integrity更改为STALE_TOLERATED)。这在处理更高级别的聚合时很有用。从年初开始查看累积数据时,您可以承受不包括第二时间的最新信息。

您可以在materialized views的文档部分阅读有关所有三个内容的信息。 data warehouse guide

中还有很多例子

答案 1 :(得分:0)

对其中一个物化视图的依赖项(DROP,ALTER ...)执行任何DDL操作都会使其无效。您确定在创建MV后没有更改exam_test吗?