首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Materialized View:更新远程数据库中的MV?

Oracle Materialized View:更新远程数据库中的MV?
EN

Stack Overflow用户
提问于 2013-01-03 13:12:09
回答 1查看 1.1K关注 0票数 0

我使用如下语法在远程数据库中创建了一个快速刷新MV:

代码语言:javascript
复制
CREATE MATERIALIZED VIEW  MV_TAB1 
REFRESH FAST WITH PRIMARY KEY 
START WITH SYSDATE NEXT SYSDATE+(5/1440) /* 5 MINUTES */ 
FOR UPDATE AS 
SELECT * FROM TAB1@SOURCE_DB;

现在,在创建MV_TAB1的远程数据库中,是否可以更新MV_TAB1并在刷新后保持更新?我的测试显示,每次刷新后,我在MV_TAB1上的更新都会消失。有没有办法保持这个本地更新?如果是,是如何实现的?

谢谢,阿莫斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-03 14:52:14

MV_TAB1是TAB1@SOURCE_DB的镜像,所以你不能像TAB1和TAB1一样同时拥有它。

如果在目标表上更新一些行,然后在源中更新它们,则刷新将覆盖这些行。如果你不在源代码中更新它们,只有在你使用快速刷新的情况下,它们才会保持更新。刷新完成将删除/截断远程表,并重新插入所有行。

UPDATE:如果您希望远程表上的更新优先于刷新,您可以使用一些技巧:

1)保持MV原样,并在具有相同DDL的姊妹表上执行更新(和插入)。查询将使用这两个表,而不是MV,如下所示:

代码语言:javascript
复制
select nvl(a.key, b.key), decode(a.key, null, b.col, a.col)
from tab1_sister a 
full join mv_tab1 b on (a.key = b.key);

2)将列添加到MV_TAB1中(复制它们,除了键),并对这些列进行更新( MV可能必须具有预构建表)。如果其他列已完成,请使用它们,否则使用通过刷新更新的原始列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14133398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档