首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >物化视图主表

物化视图主表
EN

Database Administration用户
提问于 2011-09-02 18:40:03
回答 1查看 3.6K关注 0票数 0

这个主题是新的--在我当前的环境中,我们不做任何复制,但是我们经常使用物化视图,以便在web应用程序使用的复杂视图上获得性能提高(显然,这些视图只在所涉及的数据不是完全时间敏感的情况下使用,我们每晚刷新物化视图)。请注意,我们正在按照指定的时间表按需刷新完成。

我遇到的问题是,Oracle似乎使用了一些内部进程来确定“主”表,当主服务器上发生DML操作时,MV变得无效。老实说,我们并不关心主表是否有任何插入、更新和删除,因为我们只是想每晚完全刷新MV --不幸的是,当MV失效时,它会阻止刷新。

因此,我的问题是,我是否可以手动将主表设置为类似于SYS.DUAL的东西,这样MV就不会失效,或者还有其他的解决办法吗?

如果没有做到这一点,我想我不会使用MVs,而只是安排一个夜间的CTAS。

编辑:在下面的注释中添加了Oracle注释#-简要说明是,当MV与主表位于同一个数据库中时,主表上的DML将导致MV无效(“需要重新编译”)。当然,我可以安排一个夜间重新编译,但这似乎不优雅。

这是我在这里的第二个问题,你能说出是什么使这个问题如此错误,这样我就不会在未来的帖子中继续丢分了吗?)

EN

回答 1

Database Administration用户

发布于 2011-09-06 00:50:39

从Oracle文档中

当对主表数据进行DML更改时,Oracle将描述这些更改的行存储在物化视图日志中,然后使用物化视图日志根据主表刷新物化视图。1

因此,您应该能够看到什么变化是无效的MV。

接下来,您应该检查警报日志,以查看是否有任何记录。

我想知道你是否有一条复杂的物化观点链?一个人依赖另一个人吗?是否只有一个变得无效,而另一个却没有呢?尝试这个查询,看看什么取决于什么

dbms_snapshot.get_mv_dependencies( VARCHAR2列表,OUT OUT VARCHAR2);

在您了解哪些更改使视图无效之前,我不会推荐您建议的解决方法。

编辑: Metalink备注264036.1说:

“这是预期的行为.当主表上有DML时,基于此表的所有MVs都被标记为无效.虽然状态无效,但您将能够查询mview.但是,对MV的查询将不会返回主表中完成的最新更新,除非MV被刷新.“

从使用物化视图的方式来看,我不确定为什么不能对标记为无效的每个视图进行刷新。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/5357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档