首页 > 解决方案 > 物化视图的部分刷新

问题描述

我们有一个表TB_1,其中包含按月和周列划分的月度和周度数据。我们还MV_1从表中继承了物化视图TB_1

我们希望按周或按月刷新物化视图。

不确定我们如何从物化日志中捕获的所有更改中过滤掉每周或每月的更改以进行部分刷新。

现在我们正在考虑在TB_1. 通过清除物化日志和更新标志,我们认为我们可以实现这一点。

有没有比根据特定标准进行部分刷新的过程更有效的方法?

标签: oraclerefreshpartialmaterialized-views

解决方案


我们这里有一个类似的案例:我们找到的解决方案是逐月对物化视图进行分区(使用PCT)。如果您在许可中将此作为选项,这可能是一个解决方案。然后你必须对“详细信息表”进行分区,TB_1并且可能还有.MV_1

execute dbms_mview.refresh( 
   list => 'your_partitioned_mview'
 , method => 'P'                -- this is where PCT is specified
 , atomic_refresh => false 
);

还有其他解决方案是否可以在 Oracle 中部分刷新物化视图?.

编辑:

我想说使用“待刷新”标志进行快速刷新的解决方案值得一试。不确定您是否需要事先清除 Mview 日志。只需更改要更新的记录的标志值即可。这是我发现的一个很好的方法。

如果您有Oracle 12.2,他们引入了实时 Mviews,这可能是您正在寻找的...

Oracle 12.2 引入了实时物化视图的概念,它允许对陈旧的物化视图进行语句级的回风,使数据对语句来说显得新鲜。这种前风基于使用物化视图日志计算的更改,类似于传统的快速刷新,但该操作仅影响当前语句。更改不会保留在物化视图中,因此在某些时候仍需要进行常规刷新。

实时 mview 概念

@use416,请随时向我们发布对您的案例实际有效的信息。


推荐阅读