【问题标题】:materialized view logging exclude deletes物化视图日志排除删除
【发布时间】:2013-12-19 03:52:35
【问题描述】:

我正在使用具有快速刷新功能的 MVIEW 跨网络复制一些表。一切正常,但是在考虑删除/清除过程时遇到了问题。

提供日志表的 MVIEW 源的数据保留期为 7 天。即,我将运行每晚清除过程以删除距当前日期超过 7 天的数据。 然而,目标 MVIEW 位于 ODS 上,并具有 30 天的数据保留策略。此外,这些 MVIEW 当前没有填充另一个模式或一组表。

问题是,当我从源表中删除时,这些删除语句将传播到目标 MVIEW,现在我不再拥有 30 天的数据 - 只有 7 天。

有没有办法为 MVIEW 日志表排除日志记录删除?我注意到在 MLOG$_Table_Name 中有一个列“DMLTYPE$$”。我可以以某种方式从日志表中删除 DMLTYPE$$ = 'D' 的所有记录吗?

谢谢大家,是的,我确实尝试过先在网上研究这个。 问候, 史蒂夫

【问题讨论】:

    标签: sql oracle logging materialized-views


    【解决方案1】:

    我想您可以在运行刷新之前手动从物化视图日志中删除数据。那可能会奏效。但这不是我真正喜欢的解决方案。这将是一个非常定制的解决方案,可能不会得到官方支持。如果可能存在依赖于物化视图日志的另一个物化视图,则必须确保只删除与物化视图的订阅相关的那些行。此外,目标上的物化视图需要可更新,以便您能够通过单独的流程手动删除超过 30 天的行。

    如果这些是业务需求,那么像 Oracle Streams(或 GoldenGate)这样的架构解决方案会更合适。这些产品旨在让您在应用哪些逻辑更改记录 (LCR) 方面具有更大的灵活性。例如,在 Streams 中,创建一个丢弃删除 LCR 的自定义应用处理程序很容易。由于您将 LCR 应用到目标上的表而不是实体化视图,因此您的 30 天清除过程更易于管理。这将是相对常见的 Streams 设置,而不是非常独特的物化视图设置。

    【讨论】:

    • 我们曾考虑使用 Streams 作为一种选择,但 MVIEW 的开发和实施时间如此之短,这似乎是最好的方法。但你说得很好。由于成本,GoldeGate 不是一个选择。也许最好的选择是将保留政策与这两个 30 天保持一致。这不是大量的数据,并且差异是可控的。非常感谢贾斯汀。
    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2019-08-12
    • 2018-04-26
    相关资源
    最近更新 更多