2010-05-27 53 views
1

我正在使用Oracle 10G。如何同步兩個DataBase架構Oracle 10G?

讓我給你解釋一下。我有一個名爲(DB1)的源數據庫和名爲(DB2)的目標數據庫。

  • 我在源數據庫(DB1)中有2個架構的名爲dbs1和dbs2。

  • 我已經在源數據庫(DB1)中導出了兩個數據庫模式並將其成功導入到目標數據庫(DB2)中。

  • 現在我每次從源數據庫(DB1)同步到目標數據庫(DB2)時都面臨着同步這些數據庫模式的挑戰。

任何人都可以請幫助讓我知道如何實現這種同步?

回答

0

您可以使用「數據庫變更管理」等工具LiquiBase

+0

能否請您進一步解釋我對Oracle很新。通過改變選項,我們可以通過exp和imp命令實現相同的效果。請幫忙先生/女士 – NareshKumar 2010-05-27 10:07:24

10

甲骨文有自己的內置函數來處理這種情況:這就是所謂的流。 Find out more。還有複製,但它使用物化視圖而不是目標數據庫中的表。 Find out more

不考慮第三方產品或試圖手動執行自己的實現,直到您考慮到您已有的功能爲止。 Oracle許可證很貴:一定要讓你的錢值得。

設置數據庫之間的數據集成是一個複雜的主題,而不是我選擇交給初學者的。但是,如果使用Oracle的標準功能,則會更容易啓動。這同樣適用於在這裏或其他論壇尋求幫助。

,你必須在決定三個關鍵問題是:

  1. 同步你想要的目標DB是完全跟上時代的與源數據庫?或者是否足以異步地應用更新,甚至可能是分批?在極端情況下,同步更新會導致分佈式事務,其中兩階段提交意味着對源數據庫中數據的更改也必須作爲同一事務的一部分應用於目標數據庫。

  2. 結構變化這足以傳播DML從一個模式改變到另一個,但對於DDL容易 - 新列,新表等

  3. 方向性將所有的變化總是從去源數據庫到目標數據庫?數據變化的前景有沒有向另一個方向傳播?在相關問題中,目標數據庫中的數據可以獨立於源數據庫中的更改進行更改嗎?或者目標數據庫是隻讀的?

編輯

棄用的IMP/EXP實用程序和更現代的數據泵功能旨在用於一次性操作。也就是說,將結構和數據導入空模式,或將數據導入空對象。它們不適合在滾動同步操作中使用,在這種操作中必須應用漸進式更改。用於該任務的適當工具是我已經列出的工具:流或複製。

EDIT 2

「能否請你舉一個例子爲 一樣的。我會很thanful到 你。」

複製的示例流?這需要大量的時間,坦率地說,我懷疑你能負擔得起我的小時費率。我可以做的是指出你在Das Interwebs上的一些便利資源。 Martin Zahn寫了a Replication Survival Guide,這很不錯。 Tim Hall在他的Oracle-Base站點上有an introduction to Streams;這是9i,但它仍然是一個體面的底漆。這些都不能替代文檔,但它們可以幫助您處理不同的技術。

您將自己描述爲「對Oracle數據庫來說新的和非常天真的」。所以你必須明白,這不是一項簡單的任務。不幸的是,你不能只是削減一些示例代碼,並期望它能夠工作。你有很多規劃,設計和配置。從回答上面列出的問題開始。在做出關於如何到達的決定之前,您需要確切地知道您想要達到的目標。

+0

嗨,先生/女士,我希望對源數據庫中的模式進行全面更改以與目標數據庫同步。您能否告訴我們是否可以通過oracle中的emp/imp命令來實現。感謝納什 – NareshKumar 2010-05-27 12:14:47

+0

+1讓你的錢值得。我還要補充一點,就像APC所提到的那樣,即使是Oracle提供的功能也不是一件繁雜的工作。與APC提到的文檔一起,如果您有權訪問Oracle的支持站點(https://support.oracle.com),那麼值得查看Streams入門文檔。 – 2010-05-27 13:28:02

+0

先生/女士,你能舉個相同的例子嗎?我會非常感激你。 – NareshKumar 2010-05-28 04:20:20