2015-01-02 50 views
0

如何獲取更新行的更改通知,如行數據/行描述。我能夠獲取已更新的行ID。基於Oracle JDBC數據庫更改通知更新表

我需要根據行ID來同步Table1和Table2,這是我在更新Table1後得到的通知。我已經閱讀了幾個關於通知的網站,但是找不到有關如何根據通知更新表格的任何信息。請幫忙!!

下面是一些幫助信息,我在Oracle website發現:

應用在中間層需要對緩存副本數據庫對象的 同時保持高速緩存爲當前儘可能在 關係快速訪問數據庫。當事務修改了數據並提交時,緩存的數據變得過時或「過時」 ,從而使應用程序有可能訪問錯誤的結果。如果應用程序 使用數據庫更改通知,則當發生更改時,Oracle數據庫可以發佈 通知,其中更改發生在註冊對象上,具體更改內容爲 。

作爲對此通知的響應,應用程序可以通過從後端數據庫中提取數據來刷新緩存的數據。

+0

'Table1'和'Table2',大概是指數據庫中的表格吧?不是用戶界面中的表格。 Oracle數據庫中的「Table1」和「Table2」都是?他們是否在同一個Oracle數據庫中?還是不同的Oracle數據庫?是否有理由不使用Oracle附帶的內置複製解決方案之一來編寫自己的自定義代碼? –

+0

是的,他們是數據庫中的表格。現在他們在同一個數據庫中,但實際情況將在以後更改爲跨多個平臺的不同類型的數據庫 – kittu

+0

已有複製技術(例如Oracle的Golden Gate) - 我會非常猶豫地嘗試從頭開始建立這種技術。你是否試圖讓'Table2'在非Oracle數據庫上?或者允許'Table1'以及在非Oracle數據庫上? –

回答

0

望着Application Developer's Guide you cited我注意到,關於「使用數據庫更改通知開發應用程序」下的第六段指出:

該通知包含更改的行或對象僅包含元數據,而不是改變數據本身。

所以看起來沒有辦法讓Oracle告訴你FIELD_XDESCRIPTION或其他什麼改變了。一旦收到更改通知,告訴你表和ROWID,你需要出去並獲取被更改的數據(如果適用的話),並更新緩存的副本。

您的里程可能會有所不同。

分享和享受。

+0

如何創建緩存副本? – kittu

+0

如果我正確理解問題的文本,則一個表(在這種情況下,它似乎是Table1)是源表,並且Table2看起來是緩存。在這種情況下,我建議在Table1上創建一個觸發器,它在插入,更新或刪除時觸發,並更新Table2以匹配表1中的現有內容。祝你好運。 –