【问题标题】:What can cause a materialized view in Oracle 10g to stop fast refreshing?什么会导致 Oracle 10g 中的物化视图停止快速刷新?
【发布时间】:2010-11-26 09:47:22
【问题描述】:

如果我在 Oracle 中定义为 REFRESH FAST ON COMMIT 每 15 分钟的物化视图。它在最初创建并愉快地刷新时工作。什么会导致它停止快速刷新?

我可以看到它已经停止刷新了:

select mview_name, last_refresh_date from all_mviews;

【问题讨论】:

  • 请向我们展示完整的 CREATE MATERIALIZED VIEW 语句。
  • 是啊,你为什么不向我们展示你的create语句和物化视图日志的create语句。

标签: sql oracle plsql oracle10g materialized-views


【解决方案1】:

这取决于物化视图。以下来自 oracle 数据字典的查询将为您提供所有(oracle 用户)物化视图的列表以及它们的刷新速度。

SELECT MVIEW_NAME, FAST_REFRESHABLE FROM USER_MVIEWS;

FAST_REFRESHABLE 列将为您提供以下值之一: 否:物化视图不能快速刷新,因此很复杂。

DIRLOAD:仅直接加载支持快速刷新。

DML:仅对 DML 操作支持快速刷新。

DIRLOAD_DML:直接加载和 DML 操作都支持快速刷新。

DIRLOAD_LIMITEDDML:直接加载和部分 DML 操作支持快速刷新。

过去给我带来麻烦的是 DIRLOAD_LIMITEDDML。如果 MVIEW 查询中有 COUNT、MAX 等,我通常会得到这些。通常这些刷新在插入和删除时而不是在更新时。

【讨论】:

  • 感谢您提供的信息。有问题的是 DIRLOAD_DML。
  • 所讨论的是否依赖于任何其他 MVIEWS?
【解决方案2】:

在我上一份工作中偶尔发生的一件事是,DBA 活动有时会将参数 job_queue_processes 设置为 0。这将停止物化视图刷新,直到参数值设置为大于 0 的值。

【讨论】:

  • 谢谢。这不是这里的情况。它会正确刷新一段时间,然后会导致它停止。
【解决方案3】:

我们发现的一些事情似乎会阻止 MV 刷新: 1. 对基表的 DDL 进行更改 2.如果MV跨DB链接,跨链接获取数据有问题(比如我们这里有一个数据库,一个remote。如果在刷新时,两个数据库之间的连接失败,那么刷新失败)

在 #1 的情况下,刷新失败并且永远不会再次工作,我们必须重新创建 MV。在 #2 的情况下,目前还不清楚刷新是否会再次出现。 事实证明,快速刷新 MV 对我们来说是不可靠的,因此我们在 Windows 调度程序中创建了一个作业来启动我们的刷新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2017-05-18
    • 2011-10-20
    • 2013-12-04
    • 2013-06-28
    • 2018-04-20
    • 2018-09-04
    相关资源
    最近更新 更多