2009-09-14 142 views
5

我想创建一个需要将本地数据库与远程数据库同步的项目。本地数据库中所做的更改必须反映到远程数据库。这必须同步完成。我有用java/jpa写的本地数据库的CRUD操作的应用程序。同步应该从Java代码中触发。 我想到了数据库的每个表上的触发器,它将维护本地数据库中的更改。但我怀疑它的安全与否。 谷歌搜索后,我发现oracle lite数据库最适合同步两个数据库,但我需要快速入门。 我使用的操作系统是Windows Xp。数据库大小约为2GB。如何同步两个Oracle数据库?

我没有创建线程来实现同样的事情在Java中,但从suggetion我重新启动数据库上下文中相同的线程。

+0

同步数据库的目标是什么?远程数据库应该只读吗?如果是这样DataGuard是一个选项。 – 2009-09-14 11:45:37

回答

5

首先,我建议你重新考虑你的设计。回复您的数据的最简单方法是通过视图as suggested in this SO。您可以在两个DB之间创建一个DATABASE LINK,并在远程站点创建查询本地数据库的视图。这将是实时同步的最简单方法(代码少,维护少)。

如果你真的想要同步复制你的数据,你应该阅读Replication Guide。你可以使用物化视图。您需要在主站点的桌面上定义materialized view logs。在远程站点,您将创建ON COMMIT REFRESH materialized views

+0

问题,我们需要为此拥有Enterprise吗? – Worthy7 2016-07-13 02:41:47

1

我一直在研究这个问题几天,因为我们需要与运行测试的QA并行进行开发。我们确实有两个独立的Oracle实例,但手动保持同步会非常痛苦。我不是DBA,只是看着复制的东西让我害怕逃跑。

取而代之,我启动了Navicat for Oracle,(ab)使用了数据传输功能 - 使物理上独立的数据库中的两个模式保持同步非常轻松。一个非常该死的有用工具! (我不为他们工作,就像他们的工具一样。)

1

你指的是复制。同步是不同的。

如果您有多个设备需要数据子集,例如某个地区的销售人员只需要反映他/她所服务区域的数据,则Oracle数据库精简版移动服务器就是您要查找的内容。基本上,你有一个中央的Oracle数据库,你想要把一些数据推送到客户端。该客户端将更新/插入/删除设备,然后他们将同步。服务器上的新信息将被推送到他们的设备,而他们的更改将被上传到服务器。您将需要冲突解决(服务器/客户端胜利... Oracle移动服务器还允许定制构建冲突解决方案)。 Oracle Mobile Server也可用于远程配置应用程序软件和管理设备。该工具的设计使您只需要一个中央DBA。远程机器不需要任何DBA类型的活动。