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

Oracle ora_rowscn-它总是递增的,

askTom 2018-06-27
645

问题描述

你好,

我想每天从我的Oracle 11.2数据库中sqoop数据。但是,我只想做增量提取。显然,由于ORA-08181原因,scn_to_timestamp并不总是起作用: 指定的编号不是有效的系统更改编号。

相反,我可以使用ora_rowscn吗?仅当ora_rowscn始终从其先前的值增加时,才有可能。

第I天: 从gsa.tablename中选择min(ora_rowscn) 进入minoraRowscn;
第1天: 从gsa.tablename中选择 *,其中ora_rowscn> minoraRowscn
第1天: 从gsa.tablename中选择max(ora_rowscn) 到previousOraRowscn中;
第2天: 从gsa.tablename中选择 *,其中ora_rowscn >= 以前的orarowscn
第三天: 继续 ..

如果上面的过程给了我一些重复的行,那就可以了。然而,提取增量数据的方法是可靠的吗?

注意: 如果一个表被截断,我猜ora_rowscn完全重置为一个不同的值。我们将通过阅读整个表格来处理。


谢谢,


专家解答

它 * 可能 * 起作用,但是我的想法是风险状况太高了,因为我们使用SCN编号做任何我们喜欢的事情。这是你无法控制的。

例如,* 已经 * 我们执行以下操作:

-有时,当您进行更改时,我们会在块上标记更改SCN
-有时,当其他人查询该块时,我们会在块上标记更改SCN
-有时我们会在块上贴上 * 完全 * 不同的SCN。

有一天,我们可以轻松地提出10种全新的方式,在这些方式中,我们纯粹为了满足 * 我们 * 的需求而使用/更新/修改行和块上的SCN。

那么你怎么会相信

a) 您已经测试了每个用例?
b) 将补丁应用于数据库不会完全破坏您的解决方案,并且可能使其无法解决?

请查看此线程-这是一个漫长的阅读,但最终会找到一种解决方案,以有效的方式获取增量,而无需锁定表。

https://asktom.oracle.com/pls/asktom/asktom.search?tag=selecting-rows-that-have-changed-via-timestamp-problematic-with-non-blocking-reads




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

评论