【问题标题】:Create Materialized view which refresh records on daily创建物化视图,每天刷新记录
【发布时间】:2014-04-24 05:40:13
【问题描述】:

目前我使用 REFRESH ON DEMAND 创建的实体化视图,因此在这种情况下,我需要使用以下命令显式刷新 MV:

BEGIN DBMS_MVIEW.REFRESH('MV_DATA'); END; 

但是现在我需要每天刷新这个 MV,所以请任何人帮忙写这个。我已经看到我们可以通过编写显式 Job 或在 MV 本身中使用 COMPLETE/FAST REFRESH 语句来刷新这个 MV。

提前致谢!

【问题讨论】:

  • 那么如果你已经看到了 MV 的刷新方式,你的具体问题是什么?
  • @YaroslavShabalin:我需要自动刷新而不是手动执行此操作

标签: oracle view refresh materialized-views


【解决方案1】:

您需要使用 START WITH 和 NEXT 子句创建物化视图

create materialized view <mview_name>
refresh on demand 
start with sysdate next sysdate + 1
as select ............

所以如果你想每天刷新mview,你需要让它保持按需刷新,并将下次刷新时间设置为sysdate + 1。不过,您可以设置任何间隔。

完成此操作后,将创建物化视图并在 Oracle 中设置一个作业,该作业将每 24 小时刷新一次 mview (sysdate + 1)

如需了解更多信息,请关注this link

【讨论】:

  • 如果计划自动刷新,那为什么要按需刷新?
  • On Demand 是默认模式,计划刷新(自动)也是on demand 模式的一部分。除此之外,您可以提及on commit,当基础表上发生 DML 并触发提交时,mview 将被刷新。
【解决方案2】:

如果您只需要一个 SQL 查询来简单地刷新 12 AM,那么下面的查询就足够了。

CREATE MATERIALIZED VIEW MV_DATA
BUILD IMMEDIATE 
REFRESH FAST START WITH (SYSDATE) NEXT (SYSDATE + 1) WITH ROWID
ON COMMIT
DISABLE QUERY REWRITE
AS SELECT * FROM <YOUR TABLE>

如果您需要在6 AM 附近刷新它,请使用以下脚本。您可以将其他逻辑视为+ 6 / 24。如果您需要更改为4 AM,请使用+ 4 / 24的逻辑。

CREATE MATERIALIZED VIEW MV_DATA
BUILD IMMEDIATE 
REFRESH FAST START WITH (SYSDATE) NEXT (SYSDATE + 1) + 6 / 24 WITH ROWID
ON COMMIT
DISABLE QUERY REWRITE
AS SELECT * FROM <YOUR TABLE>

【讨论】:

  • 立即而不是立即
  • 7:30 你会怎么做?
【解决方案3】:

我已经编辑了 Sarath 的脚本,让它在特定时间(即早上 6 点)运行。

CREATE MATERIALIZED VIEW MV_DATA
BUILD IMMEDIATE 
REFRESH FAST START WITH (SYSDATE) NEXT (TRUNC(SYSDATE) + 1) + 6 / 24 WITH ROWID
ON COMMIT
DISABLE QUERY REWRITE
AS SELECT * FROM YOURTABLE

【讨论】:

    【解决方案4】:

    每天凌晨 1 点刷新 mv

    创建物化视图测试1 立即建造 使用索引 REFRESH COMPLETE ON DEMAND START WITH sysdate+0 NEXT (trunc(sysdate)+1)+1/24 使用默认的本地回滚段 使用强制约束禁用查询重写 “您的查询”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2021-10-14
      • 2014-07-11
      • 2017-11-13
      • 1970-01-01
      相关资源
      最近更新 更多