物化视图的部分刷新

6
我们有一张表 TB_1,它按月份和周数分区,包含了每月和每周的数据。我们还有一个继承自表格 TB_1 的物化视图 MV_1
我们想通过特定的每周或每月基础来刷新这个物化视图。
不确定如何从所有捕获的物化日志更改中筛选出每周或每月的更改以进行部分刷新。
现在我们考虑在 TB_1 中添加一个标志列。清除物化日志并更新标志,我们认为可以实现这一点。
是否有比特定标准的部分刷新流程更有效的方法?
1个回答

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 
);

还有其他关于在Oracle中如何部分刷新物化视图的解决方案

编辑:

我认为使用“待刷新”标志进行快速刷新的解决方案值得尝试。不确定是否需要事先清除Mview日志。只需更改要更新的记录的标志值即可。这里是一个好的howto

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

Oracle 12.2引入了实时物化视图的概念,允许对过期的物化视图进行语句级别的向前推进,使数据对语句来说看起来是新鲜的。这种向前推进基于使用物化视图日志计算的更改,类似于传统的快速刷新,但该操作仅影响当前语句。更改不会持久保存在物化视图中,因此某个时候仍需要进行传统的刷新。

realtime mview concept

@use416,请随时告诉我们实际上对您的情况起作用了什么。


感谢您的回复。挑战在于我们无法使用包含复杂查询(包括立方体、分组函数和子查询)的物化视图创建PCT。 - user416

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接