2009-09-14 101 views
5

我想創建一個需要將本地數據庫與遠程數據庫同步的項目。本地數據庫中所做的更改必須反映到遠程數據庫。這必須同步完成。我有用java/jpa寫的本地數據庫的CRUD操作的應用程序。同步應該從Java代碼中觸發。 我想到了數據庫的每個表上的觸發器,它將維護本地數據庫中的更改。但我懷疑它的安全與否。 谷歌搜索後,我發現oracle lite數據庫最適合同步兩個數據庫,但我需要快速入門。 我使用的操作系統是Windows Xp。數據庫大小約爲2GB。如何同步兩個Oracle數據庫?

我沒有創建線程來實現同樣的事情在Java中,但從suggetion我重新啓動數據庫上下文中相同的線程。

+0

同步數據庫的目標是什麼?遠程數據庫應該只讀嗎?如果是這樣DataGuard是一個選項。 – 2009-09-14 11:45:37

回答

5

首先,我建議你重新考慮你的設計。回覆您的數據的最簡單方法是通過視圖as suggested in this SO。您可以在兩個DB之間創建一個DATABASE LINK,並在遠程站點創建查詢本地數據庫的視圖。這將是實時同步的最簡單方法(代碼少,維護少)。

如果你真的想要同步複製你的數據,你應該閱讀Replication Guide。你可以使用物化視圖。您需要在主站點的桌面上定義materialized view logs。在遠程站點,您將創建ON COMMIT REFRESH materialized views

+0

問題,我們需要爲此擁有Enterprise嗎? – Worthy7 2016-07-13 02:41:47

1

我一直在研究這個問題幾天,因爲我們需要與運行測試的QA並行進行開發。我們確實有兩個獨立的Oracle實例,但手動保持同步會非常痛苦。我不是DBA,只是看着複製的東西讓我害怕逃跑。

取而代之,我啓動了Navicat for Oracle,(ab)使用了數據傳輸功能 - 使物理上獨立的數據庫中的兩個模式保持同步非常輕鬆。一個非常該死的有用工具! (我不爲他們工作,就像他們的工具一樣。)

1

你指的是複製。同步是不同的。

如果您有多個設備需要數據子集,例如某個地區的銷售人員只需要反映他/她所服務區域的數據,則Oracle數據庫精簡版移動服務器就是您要查找的內容。基本上,你有一箇中央的Oracle數據庫,你想要把一些數據推送到客戶端。該客戶端將更新/插入/刪除設備,然後他們將同步。服務器上的新信息將被推送到他們的設備,而他們的更改將被上傳到服務器。您將需要衝突解決(服務器/客戶端勝利... Oracle移動服務器還允許定製構建衝突解決方案)。 Oracle Mobile Server也可用於遠程配置應用程序軟件和管理設備。該工具的設計使您只需要一箇中央DBA。遠程機器不需要任何DBA類型的活動。