【发布时间】:2014-01-14 12:02:21
【问题描述】:
我有兴趣使用 Oracle 数据库并将其“复制”到 hsqldb - 非常快,接近实时。并希望,也知道哪些领域发生了变化。 (我需要这个来增加查询持续时间 - 并且看到嵌入内存模式的 HSQLDB 甚至比缓存的 Oracle 快得多。但是,由于 oracle 授予我持久性、故障转移等功能。我仍然想使用它)。
所以,我想到了几种可能的方法:
在我的 oracle 数据库中的每个可能的表上使用触发器。触发器会将更改写入辅助表。在我看来,表现和实践非常糟糕。
定期为所有最新更新选择每个表(select * from T where ora_rowscn > ?)。 ?=最新的最大行 scn。这样做的缺点是不知道删除(即使我们可以想出一些其他的删除方式)。这也有一个缺点,即必须将以前的记录与新记录进行比较才能了解更改。该表可能有 100 个字段,并且仅更改一个。
使用 Oracle 通知,自 11/10g 起可用 - 使用简单的 JDBC 链接 - 尽管这有一些限制,例如:您可以获得的字段数量已更改。
在查询 sql_text 表的同时使用“2”方法,以查看哪些字段在最新更新中受到影响,并仅区分最近 1 分钟的那些字段。这实际上也有助于找出删除。
使用 timesten 而不是 HSQLDB,但这需要花钱。
你怎么看?最好的方法是什么?
谢谢
【问题讨论】: