物化视图的部分刷新

use*_*416 6 oracle refresh materialized-views partial

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

我们希望每周或每月刷新物化视图.

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

现在我们正在考虑在其中设置一个标志列TB_1.通过清除物化日志并更新标志,我们认为我们可以实现这一目标.

无论如何有效的方式比特定标准的部分刷新过程?

J. *_*mel 3

我们这里有一个类似的案例:我们找到的解决方案是按月对物化视图进行分区(使用PCT)。如果您的许可中有此选项,那么这可能是一个解决方案。然后,您必须对“详细信息表”TB_1以及的“详细信息表”MV_1进行分区。

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

关于Is it possible to Partial刷新Oracle中的物化视图还有其他解决方案?。

编辑:

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

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

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

实时 mview 概念

@use416,请随时向我们通报对您的案例实际有效的方法。