oracle - 物化视图的部分刷新
问题描述
我们有一个表TB_1
,其中包含按月和周列划分的月度和周度数据。我们还MV_1
从表中继承了物化视图TB_1
。
我们希望按周或按月刷新物化视图。
不确定我们如何从物化日志中捕获的所有更改中过滤掉每周或每月的更改以进行部分刷新。
现在我们正在考虑在TB_1
. 通过清除物化日志和更新标志,我们认为我们可以实现这一点。
有没有比根据特定标准进行部分刷新的过程更有效的方法?
解决方案
我们这里有一个类似的案例:我们找到的解决方案是逐月对物化视图进行分区(使用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 引入了实时物化视图的概念,它允许对陈旧的物化视图进行语句级的回风,使数据对语句来说显得新鲜。这种前风基于使用物化视图日志计算的更改,类似于传统的快速刷新,但该操作仅影响当前语句。更改不会保留在物化视图中,因此在某些时候仍需要进行常规刷新。
@use416,请随时向我们发布对您的案例实际有效的信息。
推荐阅读
- docker - 如何在 Bitbucket Pipelines 中运行的 Docker 容器中使用 sbt 和 ivy2 缓存
- django - 如何将更改保存到 docker
- selenium - 如何在不使用 Headless 的情况下在 Jenkins 上运行我的自动化(测试)
- python - 如何控制根节点中惰性约束的数量?
- reporting-services - 如何始终显示每个月的第二个日期?
- java - 将一个 JKS 文件导入另一个会导致 java.security.UnrecoverableKeyException:无法恢复密钥
- string - SpringBoot @RequestParam MultipartFile 将在字符串连接中翻译@RequestParam String
- c# - 可以在没有构造函数中引用的情况下实例化已注册的注入类吗?
- java - Mapbox 动态创建标记
- mysql - 如何使用 Eloquent 选择每个值的最后一条记录?