我们希望将数据(插入、更新)从Oracle (11g)同步到PostgreSQL (10)。我们的做法如下:
我们现在有以下问题:
对于我们的用例,是否有更好的方法来避免数据丢失的问题?
发布于 2018-06-20 13:54:02
ORA_ROWSCN (链接)返回。这是按编号表示的提交时间。默认情况下,会跟踪数据块的SCN,但可以在行级别(关键字rowdependencies)上启用跟踪。因此,您必须用这个关键字重新创建您的表。在同步过程启动时,通过函数调用dbms_flashback.get_system_change_number获取当前scn,然后扫描所有表where ora_rowscn between _last_scn_value_ and _current_scn_value_。缺点是这个伪列没有索引,所以您将进行完整的表扫描,这对于大表来说是缓慢的。希望这能有所帮助。
发布于 2018-06-20 13:42:56
这纯粹是一个数据项目,还是您这里有客户端。如果您有一个中间层,您可以使用ORM抽象其中的一些内容,并对两者进行写入。你关心这些序列是否相同吗?可以做一些事情,比如收集所有数据来同步,因为一个特定的时间戳(每个表都必须有一个UTC时间戳),然后对所有数据进行散列,并与Postgres中的数据进行比较。
如果有更多的数据同步要求,以及在此背后的推理,这可能是有用的。
对于这两种环境,键需要相同吗?为什么?谁看的数据,是同一个消费者看这两个来源。为什么不使用ORM只针对一个db,为什么需要oracle和postgres?
发布于 2019-07-03 22:45:50
我也见过类似的设置。Postgres上的应用程序主要用于报告和其他次要任务,而主应用程序则在Oracle上。
为了方便起见,一些主要的应用程序表被缓存在Postgres中。但是这种设置带来了同步问题。
折中解决方案是白天增量式基于序列的同步和一夜之间全表副本的混合。
关于这里提出的其他解决办法:
我不知道如何做到这一点,因为我知道它需要甲骨文金门应用程序(+许可证)
https://stackoverflow.com/questions/50949354
复制相似问题