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

物化视图通过oracle网关从异构数据库快速刷新

askTom 2017-10-23
417

问题描述

奥拉·马斯特斯,
我们使用Oracle网关 (12.2.0) 通过远程数据库链接将大量数据从源数据库 (MySQL) 提取到Oracle数据库 (11.2.0.3)。

但是问题是,当尝试刷新MV时,我们收到以下错误

*) ORA-28511: 使用异构远程代理丢失RPC连接
*) [MySQL][ODBC 5.3(a) 驱动程序] 在查询期间失去与MySQL服务器的连接

我们不断重试,有时会通过。

低于MV定义
=== 选择 “pom”。“id1”
,“pom”。“ver”
,“pom”。“编码”
,“pom”。“电子”
,“pom”。“信 _ 标题”
,“pom”。“_ type”
,“pom”。“股票”
,“pom”。“is_split_pmo”
,"pom"。"品牌类型"
,“pom”。“crediton”
“pom"."paym_value”
,“pom”。“venlist”
,"pom"。"vendor_name"
,“pom”。“批准日期”
,“pom”。“批准者”
,“pom”。“创建”
,“pom”。“创建 _ 在哪里”
,“pom”。“last_on”
,“pom”。“estime”
,“pom”。“状态” 为状态
,“pom_add_det”。“值” 作为引脚
来自 “pom” @ myodbc33
左外连接 “pom_contact” @ MYODBC36
on (“pamin_address”。“id” = “pom”。“ven_addr”)
其中1 = 1
和 (“pom”。“st”!= '价值'
或 “pom”。“storigin” 为NULL)
和 (“pom”。“prition”!= '消耗品'
或 “pom”。“prio_on” 为NULL)
还有 “pom”。“commer”!= '消耗品'
并存在 (从xx_cor_v grnmv中选择1
其中grnmv.po_id = "pom"."id")"
===================

1.如query中所述,我们通过数据库链接连接了两个远程表,并且where谓词也引用了本地MV。
这是建议的方法吗?连接了指向不同数据库的两个远程数据库链接。它在MV间歇性刷新时起作用,但是失败的数字更多

2.我们可以在源表上即在MySQL数据库表上创建MV日志吗?

3.这个问题有没有更好的解决方案?即除了使用MV进行增量数据提取 (以减少数据量) 之外

请建议。谢谢!

-Vk

专家解答

根据我的经验,* 跨 * 数据库 (异质或非异质) 的具体化视图是性能挑战的秘诀。

你能探索以下几点吗:

mview1: 从 “pom” @ myodbc33中选择 *
mview2: 从 “pom_contact” @ MYODBC36中选择 *

所以你会刷新这两个简单的mview,然后你的第三个mview变成:

选择 ..
从mview1左外连接mview2
...
并存在 (从xx_cor_v grnmv中选择1
其中grnmv.po_id = "pom"."id")"

您可以在刷新前2个后刷新。
因此,所有 “繁重的工作” 都是在单个数据库中本地完成的。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论