【问题标题】:Materialized View Not Updating when committing through Application通过应用程序提交时物化视图未更新
【发布时间】:2013-09-11 15:50:55
【问题描述】:

我在生产环境中面临一个主要问题,我引入了带有视图日志的物化视图,以便在提交到主表时刷新。我用 sql developer 对此进行了测试,效果很好。

但是,当使用我使用 iBatis 提交到表的应用程序更新基础表时,物化视图不会使用新值更新。

谁能告诉我这里可能是什么问题?

感谢您在这方面的帮助

【问题讨论】:

  • 首先看Determining the Fast Refresh Capabilities of a Materialized View。这表明有哪些类型的快速刷新可用。然后找到两个上下文使用的确切 SQL 语句,比较它们并查看它们的差异是否与 MV_CAPABILITIES_TABLE 中的任何 POSSIBLE = 'N' 行有关。这是一个疯狂的猜测:在 SQL Developer 中,您使用的是单个 INSERT 语句,但 iBatis 使用的是 INSERTUPDATE 的组合。 REFRESH_FAST_AFTER_INSERT = Y,但 REFRESH_FAST_AFTER_ANY_DML = N。
  • @jonearles 谢谢你的建议。我相信你在这种情况下可能是正确的。让我在你提出的道路上对此进行调查。我还想知道一件事。完全刷新会减慢速度吗?我只是想知道,因为如果无法快速刷新,那么完全刷新的唯一可能性不是吗?
  • 是的,完全刷新会比增量刷新慢。只有这两种可能性。
  • 嗨@jonearles。你是对的。您能否发表您的评论作为答案,我会接受。再次感谢您,抱歉更新晚了。

标签: sql oracle plsql materialized-views


【解决方案1】:

首先,查看Determining the Fast Refresh Capabilities of a Materialized View。这表明有哪些类型的快速刷新可用。

然后找到两个上下文使用的确切 SQL 语句,比较它们并查看它们的差异是否与 MV_CAPABILITIES_TABLE 中的任何 POSSIBLE = 'N' 行有关。

这是一个疯狂的猜测:在 SQL Developer 中,您使用的是单个 INSERT 语句,但 iBatis 使用的是 INSERTUPDATE 的组合。 REFRESH_FAST_AFTER_INSERT = Y,但 REFRESH_FAST_AFTER_ANY_DML = N。

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 2013-12-04
    • 2013-12-04
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2015-09-27
    相关资源
    最近更新 更多