Oracle JDBC:恢复数据库更改通知注册

时间:2012-03-21 14:26:03

标签: oracle jdbc

我正在查看Oracle的DBCN API(连续查询通知),并使用它实现指示数据库中新行和/或修改行的事件流。

我关心的是:如果我配置并启动更改侦听器,然后我的Java客户端失败,服务器端仍在累积更改以进行传递。但是,当我的Java客户端恢复时,我的选项似乎有限:

  1. 开始新的注册。我不想这样做,因为它只会启动一个新的注册(旧的注册仍在运行“无客户端”)并且我的新注册将不会被发送到之前注册的积压。< / LI>
  2. 我可以查询 USER_CHANGE_NOTIFICATION_REGS 表,找到之前的注册并取消注册,但仍然没有收到我积压的未投递通知。
  3. 那么如何恢复现有注册的会话? 或者,我可以从哪里找到并检索积压的通知?

    感谢。

    //尼古拉斯

1 个答案:

答案 0 :(得分:2)

您可以实现将所有更改放入队列的服务器端解决方案(PL / SQL)(Oracle Advanced Queue)。然后,您的Java客户端可以连接此队列并获取更改。

如果您的客户端失败,更改仍将写入服务器上的队列。当你恢复你的客户端时,它将从队列中获得所有更改,从你收到的最后一个恢复。

相关问题