我想创建一个项目,在该项目中需要将本地数据库与远程数据库同步。必须将在本地数据库中进行的更改反映到远程数据库。这必须同步完成。我有应用程序,它在用java / jpa编写的本地数据库上进行CRUD操作。应该从java代码触发同步。 我想到了每个数据库表上的触发器,它将维护本地数据库的变化。但我怀疑它的安全与否。 谷歌搜索后我发现oracle lite数据库最适合同步两个数据库,但我需要快速入门。 我使用的操作系统是Windows XP。数据库大小约为2GB。
我确实创建了用于在java中实现相同功能的线程但是从suggetion我在数据库上下文中重新启动了相同的线程。
答案 0 :(得分:6)
首先,我建议你重新考虑你的设计。复制数据的最简单方法是通过视图as suggested in this SO。您可以在两个DB之间创建DATABASE LINK,并在远程站点创建查询本地数据库的视图。这将是实现实时同步的最简单方法(代码更少,维护更少)。
如果您确实想要同步复制数据,则应阅读Replication Guide。您可以使用物化视图。您需要在主站点的表上定义materialized view logs。在远程站点,您将创建ON COMMIT REFRESH materialized views。
答案 1 :(得分:2)
您所指的是复制。同步是不同的。
如果您有多个具有数据子集要求的设备,例如区域销售人员只需要反映他/她所服务区域的数据,那么Oracle Database Lite Mobile Server就是您所需要的。基本上,您有一个中央Oracle数据库,并且您希望将一些数据推送到客户端。该客户端将对设备进行更新/插入/删除,然后它们将同步。服务器上的新信息将被推送到他们的设备,同时他们的更改将上传到服务器。您将需要解决冲突(服务器/客户端获胜... Oracle Mobile Server还允许自定义构建的冲突解决方案)。 Oracle Mobile Server还可用于远程配置应用程序软件和管理设备。该工具的设计使您只需要一个中央DBA。远程计算机不需要任何DBA类型的活动。
答案 2 :(得分:1)
我一直在考虑这个问题几天,因为我们需要在运行测试的QA的同时进行开发。我们确实有两个独立的Oracle实例,但是手动保持它们同步将是一个巨大的痛苦。我不是DBA,所以只看复制内容让我害怕逃跑。
相反,我启动了Navicat for Oracle和(ab)使用了数据传输功能 - 使得在物理上独立的数据库中保存两个模式非常轻松。一个非常有用的工具! (我不会为他们工作,就像他们的工具一样。)