暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 替代快速更新物化视图?

ASKTOM 2020-07-13
355

问题描述

由于各种外部限制,无法为某些实体化视图在远程数据库上设置快速刷新。
但是,这些表具有 “上次修改日期” 类型字段 (在插入/更新时更新列的触发器)。这些表中的大多数在正常使用期间也不会获得delete语句。对于那些确实删除了数据的数据,可能有可用的审计表可用于查找这些记录。

是否可以让快速刷新过程进入这些字段,而不是通常使用的任何机制?

如果我们要滚动自己的 “快速刷新” 过程,我们如何保持一个标记为物化视图的表,但允许它更新而不尝试将更改推回去?理想情况下,如果自定义快速刷新过程不同步,我们可以随时强制正常的dbms_mview.refresh (不重置就地实体化视图) 进行完全刷新。

专家解答

我认为您可能会得到的最接近的是 “永不刷新” mview,例如

SQL> create table t1 as select owner, count(*) x from t group by owner;

Table created.

SQL>
SQL> create materialized view t1
  2  on prebuilt table
  3  never refresh 
  4  as select owner, count(*) x from t group by owner;

Materialized view created.


顾名思义,您可以 * 永远 * 刷新此mview,但是 * 可以 * 对基础表进行DML更改,

SQL> delete from t1 where rownum <= 10;

10 rows deleted.



因此,如果曾经想做一个 “重新同步”,你可能需要做一个手动截断/插入追加

但我强调…… 这似乎正走向一个湿滑的斜坡。我希望业务代表同意他们承认数据完整性现在是手动责任,而不是由数据库确保。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论