我有一个Oracle数据库,其中有两个相同的模式。一个基本上是“on”模式,另一个是“off”模式。我们更新off模式中的数据,然后将模式切换到生产服务器使用的别名后面。不是一个很好的解决方案,但这是我给予的工作。
我的问题是,有一个单独的应用程序,现在将数据流传输到数据库(也交给我),目前只更新别名,这意味着它只在任何给定时间更新“on”模式。这意味着当模式被切换时,来自这个单独应用程序的所有数据都会从生产中消失(它所处的模式现在是“关闭”模式)。
此应用程序正在使用Hibernate 3.3.2更新数据库。混合中还有Spring 3.0.6,但不适用于数据库更新。最后,我们在Java 1.6上运行。
有人能指出我同时更新“on”和“off”模式的方向,不涉及使用Spring JDBC重写整个DAO层来加载两个独立的连接池吗?我还没有找到任何关于让hibernate这样做的事情。提前谢谢!
答案 0 :(得分:0)
您不应该以这种方式更新两个单独的数据库,尤其是从应用程序的角度来看。所有它应该知道/关心的是数据是否存在,而不必混淆两个单独的数据库。
坦率地说,这听起来像您可能需要购买ETL工具。即使你无法让它从'off'更新'on'架构(速度足够实用),你可能能够使用它来保持两者同步(镜像从'开'变为'关')。
答案 1 :(得分:0)
HA-JDBC是我们调查过一段时间的复制JDBC驱动程序。它将自动复制所有插入和更新,并分发所有选择。还有其他数据库特定的主从解决方案。
另一方面,我不建议这样做4-8小时。最好先锁定数据库,更新一个数据库,然后备份 - 恢复副本,然后再次解锁。