2011-09-06 66 views
1

我們需要在幾個Oracle數據庫實例之間遷移數據。Oracle - 通過同義詞在兩個實例之間傳輸記錄?

我們希望在一個實例中轉儲一個表中的記錄,並將其導入另一個實例中的相同表中。

複雜性在於我們使用的Oracle用戶名不能直接訪問表 - 這些表由一個單獨的用戶擁有。我們看不到任何表格,我們只有權查看錶格的同義詞。我看過的兩個工具,Oracle SQL Developer和Toad for Oracle將允許您從表中轉儲數據(我們可以做的是我們可以訪問所有者帳戶),還可以創建一個腳本來重新創建腳本,自己創建同義詞(如DROP SYNONYMY XYZ; CREATE SYNONYM XYZ FOR ABC;);然而,他們似乎沒有讓你指定一個同義詞,並按照該鏈接轉儲所有的數據。

有沒有什麼辦法可以調整上述任何一種,或者我們可以使用工具來通過同義詞轉儲數據的解決方法?

如果失敗了,下一個最好的事情是編寫一些SQL和腳本的轉儲/重新導入。任何建議,警告,最佳實踐?

回答

1

我的一個同事發現了Oracle的SQLPlus COPY命令,這似乎做的工作:

COPY FROM username/[email protected]:port/SERVICENAME TO username_owner/[email protected]:port/SERVICENAME APPEND TABLE1 USING SELECT * from TABLE1; 

它將複製所有的值,在這種情況下追加(雖然你也可以創建表,或者插入到表中)這些值添加到單獨的Oracle數據庫實例的表中。

唯一需要注意的是SQLPlus手冊說它將被廢棄(不知道爲什麼),但是,我剛剛檢查了11G,並且命令肯定還在那裏。

乾杯, 維克多

1

DB Link對您有幫助嗎?

+0

不幸的是我們沒有權限創建鏈接=(。 – victorhooi

0

您確實需要與您的DBA討論此問題並獲得對數據所有者的正確訪問權限,或讓DBA按照Chin Boon的建議創建數據庫鏈接。

從一個實例到另一個實例的數據的粗略和非常粗糙的方法,除了選擇源之外,沒有其他訪問權限的方法是將輸出從源文件假脫機到分隔文件,然後將該數據導入到目標數據庫(使用外部表或者如果你的訪問不允許你創建外部表,然後使用java或其他類似的定製應用程序)。

我對上述解決方案的保留意見(如果可以這麼稱呼的話)是,如果您的數據量非常大,分隔文件將很快變得笨拙。所以我的初衷可能是您最好的選擇,請您的DBA爲您做這件事,因爲他們的訪問將使他們能夠非常有效地執行操作。

相關問題