0

我在一个表中有一些大数据,在另一个表中有一些小数据,有没有办法运行金门的初始加载,这样两个表中的相同数据不会被更改,其余数据从一个表转移到另一个表。

4

3 回答 3

1

初始加载通常用于设置复制环境时;但是,您也可以在单个表上执行此操作。Oracle 数据库中的所有内容都由系统更改编号/更改系统编号 (SCN/CSN) 驱动。

通过使用 SCN/CSN,您可以确定表中的起点应该是什么,并从那里启动 CDC。SCN/CSN 之前的任何数据都不会被捕获,并且需要您以某种方式手动移动该数据。这可以通过使用 Oracle 数据泵(导出/导入)来完成。

Oracle GoldenGate 还提供了一个名为 SQLPredicate 的参数,允许您对表使用“where”子句。这对于初始加载提取很方便,因为您会执行 TABLE .、SQLPredicate “as of”之类的操作。然后将捕获之前的数据并将其移动到目标端,以便复制应用到表中。你可以在这里参考:

https://www.dbasolved.com/2018/05/loading-tables-with-oracle-goldengate-and-rest-apis/

Oracle 官方文档:https ://docs.oracle.com/en/middleware/goldengate/core/19.1/admin/loading-data-file-replicat-ma-19.1.html

在复制方面,您将使用 HANDLECOLLISIONS 踢出任何重复项。然后一旦加载完成,将其从参数文件中删除。

很多细节,但我相信这对你来说是一个很好的起点。

于 2019-12-19T17:15:53.150 回答
0

那将需要用java编程。1)首先您将读取您的数据库 2)根据读取的数据决定哪些数据必须添加到哪个表中。3) 执行更新/数据输入查询以将数据提交到表。

于 2014-09-15T16:42:51.067 回答
0

如果您想使用 GoldenGate 运行初始加载:

  • 目标表应为空

数据:确保目标表为空。否则,现有行与正在加载的行之间可能存在重复行错误或冲突。链接到 Oracle 文档

  • 如果不为空,则必须处理冲突。例如,如果您要插入的行已经存在于目标表 (INSERTROWEXISTS) 中,那么您应该丢弃它,如果这是您想要做的。链接到 Oracle 文档
于 2016-01-22T15:54:35.617 回答