2013-07-23 97 views
0

相同的模式合併數據,我們有兩個Oracle服務器,olaolb如何與甲骨文

他們都贏Server 2003上運行,安裝相同的Oracle11.2克,並且具有相同的Oracle服務orcl

儘管orcl擁有擁有大量表的相同用戶login_by,但每個表都有一個主鍵。

現在,您可以看到olb作爲ola的克隆(副本)。

現在login_by的表已經插入到數據日誌中。數據在olaolb中有所不同。

現在我們想將這些數據導入從olbola。我們已將用戶login_by的數據導出到olb中的dmp文件中。但是我們不能在ola中導入這個dmp,因爲ola具有相同的模式(具有相同的用戶,表),導入將失敗。

然後我想知道是否還有其他想法?

順便說一句,oraorb可以不通過網絡互相訪問。


更新(我做了什麼):從olb

1導出數據:

exp login_by/[email protected] file=c:\olb.dmp 

2導入數據到ola

imp login_by/[email protected] fromuser=login_by touser=login_by file=c:\olb.dmp 

這將失敗怎麼一回事,因爲兩個原因:

1 OLA用戶login_by具有相同的表。

2對於命名爲「相同的表table1 ,in OLA it may contain a record with ID = 1 , and the same table table1的in OLB may contain a record with the same ID = 1個where the id`是主鍵。

+0

有什麼錯誤? – Ravi

+0

您可以將所有數據從login_by複製到olb中不存在的olb中的某個新表。然後將它導入ola? –

+0

我發表了這篇文章。 – hguser

回答

0

首先,我建議您切換到expdpimpdp而不是expimp

我想:

  1. 導入dmp文件到一個新的模式,例如clone,在ola實例上。例如imp clone/[email protected] fromuser=login_by touser=clone file=c:\olb.dmp
  2. 上的所有 clone表來 login_by
  3. 授予SELECT。
  4. 作爲login_by,從clone查詢新行,並將其插入到login_by表。
  5. 沖洗並重復其他情況。

#3如何完成取決於所涉及的數據量以及確定目標表中尚不存在哪些行的難易程度。

例如,你可能只是做一個簡單的INSERT INTO login_by.thetable SELECT * FROM clone.thetable WHERE id IN (SELECT id FROM clone.thetable MINUS SELECT id FROM login_by.thetable);

或者,如果IDS可以匹配,你可以使用一個MERGE,使具有相同id行都將被更新,新行會被插入。

+0

事實上,我們在這裏有14個oracle服務器,而我們試圖將所有數據複製到第一個服務器'ola'。 – hguser

+0

已更新的答案。 –

+0

謝謝,我會試一試。 – hguser