oracle sqldeveloper選擇性複製備份資料庫

aoaa發表於2018-12-01

有時需要複製的資料庫比較大,複製太慢,或容易出錯。

資料庫小,簡單的 就沒這麼複雜了,直接匯出dmp或用工具都可以。這篇是針對比較大,選擇性複製,且複製總是失敗的情況。

方法如下。

工具 sqldeveloper.

思路:先複製表和資料(選擇性複製表資料),再複製檢視,觸發器序列等。以免觸發器序列等對複製資料時造成干擾,導致複製失敗。

1.

例:從A複製到B

建立源資料庫連線 A 

建立目標連線B        

2.點選工具:資料庫複製。

在此之前可以先在源資料庫上查詢下資料量比較大的表,

select segment_name, round(bytes/1024/1024/1024,3) g,segment_type
from user_segments
where segment_type = 'TABLE' or  segment_type = 'TABLE PARTITION' order by g desc

,或者自己知道哪些表大,沒有必要copy,心中有數就行

3.

選擇好A , 和 B 連線,

點選下一步

4.

只選擇表,其它全部取消掉。

尤其是觸發器和序列不要選,以免後邊複製資料的時候 生成新的id(造成跟源資料id不一致)等等。

點選下一步。

5.這一步是複製上一步選擇的項,表結構需要傳輸的資料量很小,可以直接下一步,當然也可以按名稱模糊搜尋選擇性複製。

6.指定資料。根據前邊sql查到的結果,結合實際情況可以把一些不想要的資料表排除掉。物件where字句可以指定複製符合where語句的資料。

7.確認一下源和目標資料庫有沒有選錯,然後下 一步。直到複製完成(進度框最好不要點後臺執行),中間若出是否繼續提示框,一般直接選擇是。

8.以上是第一大步。

下邊複製剩餘的DDL.

重複第一步,將複製資料選項去掉

9.選擇除表以外的選項。資料庫連線可能會通過觸發器等的呼叫對連結目標資料庫有影響,需小心,或複製下來後,處理下。

然後直接下一步直到最後複製完成。

注意事項:

1.源和目標連線不要搞反了。

2.複製資料過程中不要點後臺執行,再彈出的進度框裡可以檢視進度。有的表複製特別慢,或複製不下來,那就要重新複製  在6步的時候 要將其排除除掉或特殊處理下。 (第一步的查詢表大小的sql語句,基本可用。但有些表依然複製太慢,具體原因沒細究。)

相關文章