Oracle Expdp/Impdp 進行資料遷移的 幾點注意事項

dawn009發表於2014-02-27

轉載於---&gt>http://blog.csdn.net/tianlesoftware/article/details/7191916
關於Expdp/Impdp 命令的具體使用,在之前的blog裡有說明,參考:

Oracle expdp/impdp 使用示例

http://blog.csdn.net/tianlesoftware/article/details/6260138

 

exp/imp 與 expdp/impdp 對比 及使用中的一些最佳化事項

http://blog.csdn.net/tianlesoftware/article/details/6093973

 

Oracle 客戶端 使用expdp/impdp 示例 說明

http://blog.csdn.net/tianlesoftware/article/details/7075188

 

 

這裡列幾點注意事項:

 

1.根據使用者來進行遷移

只需要把相關的表空間建立好就可以了。不需要建立使用者,資料泵在匯入的過程中會自動的建立相關的使用者,及賦權,即使我們不知道使用者的密碼,資料泵也能把原始的密碼匯入。這個可以簡化我們的工作。

 

如:

expdp directory=backupdumpfile=dave.dmp logfile= dave.log schemas= user1,user2,user3;

impdp directory=backupdumpfile=dave.dmp logfile=dave.log schemas= user1,user2,user3;

 

 

2.  使用資料泵時,如果使用它的並行特性,那麼並行數就要和對應的dump 檔案數一致。

如:

  expdp full=ydirectory=backup dumpfile=dave_%U.dmp parallel=4

  那麼expdp將為parallel 建立4個檔案:dave_01.DMP,dave _02.DMP,dave _03.DMP,dave _04.DMP。 每個程式一個檔案。 這樣的話,每個檔案的大小會因程式而不同。 可能某個檔案很大,某個檔案卻很小。 要解決這個問題,就是設定filesize 引數。 來指定每個檔案的最大值。 這樣當一個檔案達到最大值的之後,就會建立一個新的檔案。

 

如:

expdp full=ydirectory=dump dumpfile=dave_%U.dmp parallel=4 filesize=1G

 

匯出的dump檔案和paralle有關係,那麼匯入也有關係。 paralle要小於dump檔案數。 如果paralle 大於dump檔案的個數,就會因為超過的那個程式獲取不到檔案,就不能對效能提高。

 

 

3.  在遷移中,注意2種型別的物件

一般來說,在遷移之前要注意一下資訊:

(1)    待遷移物件的總數和具體資訊

SQL>select count(*) from all_objectswhere owner in ('user1',’user2’)

 

SQL> select object_type,count(1) as"NUM" from all_objects where owner in ('user1’,’user2’) group byobject_type;

 

OBJECT_TYPE                NUM

------------------- ----------

SEQUENCE                    85

PROCEDURE                   74

PACKAGE                      6

PACKAGE BODY                 6

TRIGGER                      5

TABLE                      219

INDEX                      229

SYNONYM                      1

VIEW                         4

FUNCTION                     3

TYPE                         2

 

11 rows selected.

 

 

(2)無效物件資訊

SQL> select count(*) from all_objectswhere owner in ('user1','user2') and status='INVALID';

SQL> select owner,object_name fromall_objects where owner in ('user1','user2') and status='INVALID';

 

  遷移完成後,比較一下遷移前後的物件數和無效物件數。這裡要注意的2種物件就是DBLINK 和 JOB。在我的測試中,這2類物件基本是不會自動匯入,需要在匯入完成後,手工的重新建立這些物件。

 

檢視DBLINK 資訊:

SQL> select owner,object_name,object_type from dba_objects where object_type='DATABASELINK';

 

檢視JOB 資訊:

SQL>select count(*) from dba_jobs where schema_user in ('user1',’user2’);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1093919/,如需轉載,請註明出處,否則將追究法律責任。

相關文章