我有兴趣使用Oracle DB并将其“复制”到hsqldb中 - 非常快,接近实时。并且希望也要注意哪些领域发生了变化。 (我需要这个来提高查询持续时间 - 并且看到嵌入式内存模式的HSQLDB比甚至缓存的Oracle快得多。但是,因为oracle授予我持久性,故障转移等等。我仍然想使用它。)
所以,我想了几个可能的方法:
在我的oracle db中的每个可能的表上使用触发器。触发器将更改写入辅助表。非常糟糕的表现&在我的意见中练习。
定期为每个表选择所有最新更新(从T中选择*,其中ora_rowscn>?)。 ?=最新的最大行scn。这样做的缺点是不知道删除(即使我们可以通过其他方式删除)。这样做的缺点是必须使用新记录来区分先前的记录以了解更改。该表可以是100个字段,只有一个变化。
使用自11 / 10g以来可用的Oracle通知 - 使用简单的JDBC链接 - 尽管这有一些限制,例如:您可以获得的已更改的字段数。
使用“2”方法以及查询sql_text表,以查看哪些字段在最新更新中受到影响,并仅区分最后1分钟内的字段。这实际上也有助于找出删除。
使用timesten而不是HSQLDB,但这需要花钱。
谢谢
答案 0 :(得分:1)
您应该探索现有工具,尤其是SymmetricDS(http://www.symmetricds.org),看看是否可以配置或修改它们以支持此功能。
另一种方法是在数据发生变化时在HSQLDB中编写触发器以更新Oracle后端。