2012-03-21 66 views
4

我正在查看Oracle的DBCN API(連續查詢通知)並使用它實現指示數據庫中新行和/或修改行的事件流。Oracle JDBC:恢復數據庫更改通知註冊

我所關心的是這樣的:如果我配置和啓動一個變化監聽器,然後我的Java客戶端失敗,服務器端還在不斷增加中交付的變化。但是,當我的Java客戶端恢復時,我的選項似乎是有限的:

  1. 開始新的註冊。我不想這樣做,因爲它只會啓動一個新的註冊(舊的仍在運行「無客戶端」),我的新註冊將不會發送預先註冊的積壓。
  2. 我可以查詢USER_CHANGE_NOTIFICATION_REGS表,找到之前的註冊並取消它,但仍然沒有讓我積壓未送達的通知。

那麼,怎樣才能恢復我與現有註冊一個會話? 或者,我可以從哪裏找到並檢索積壓的通知?

謝謝。

//尼古拉斯

+0

您只能檢測插入,更新,刪除操作。 [實施例票數] [1] [1]:http://stackoverflow.com/questions/21697500/jdbc-oracle-database-change-notification-duplicate-events%20%27example %27 – 2014-02-11 12:21:50

回答

2

您可以實現服務器端解決方案(PL/SQL),將全部投入變成一個隊列(Oracle高級隊列)。然後你的java客戶端可以連接到這個隊列並獲得更改。

如果您的客戶端發生故障,所做的更改仍會寫入服務器上的隊列中。當你恢復你的客戶端時,它會從隊列中獲得所有的改變,從你收到的最後一次恢復。

+0

公平的解決方案。謝謝。 – Nicholas 2012-12-11 19:20:27