我们这里有一个类似的案例:我们找到的解决方案是按月对物化视图进行分区(使用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 引入了实时物化视图的概念,它允许陈旧的物化视图在语句级回滚,使数据对于语句来说显得新鲜。此风向基于使用物化视图日志计算的更改,类似于传统的快速刷新,但该操作仅影响当前语句。更改不会保留在物化视图中,因此在某些时候仍然需要进行常规刷新。
@use416,请随时向我们通报对您的案例实际有效的方法。