曠日持久的資料遷移總結

dawn009發表於2014-03-08

     下午完成了曠日持久的單例項跨版本oracle資料遷移任務,本來是兩個schema逐步在分類指令碼中進行(expdp表結構,再是資料,再是索引約束,再是其他資料庫物件),由於沒有使用並行,兩個任務一起處理,出現了不少問題(無故出現impdp表資料翻倍現象,索引約束違背問題,還有cluster引起的問題).其實資料不是很大,兩個schema加起來就20G的樣子,針對上面出現的繁瑣離奇問題處理時真心糾結,有點拆東牆補西牆的窘境。

    後來,看到網上有朋友就分兩步,先是資料和其他DB物件,然後是索引約束,其建議是如果想提升速度,最好將資料與索引約束分開,由於我們資料不是很大,就一起expdp了,結果這樣下來幾乎沒遇到什麼問題,就是由於資料庫版本差異,導致幾個package body失效的問題,最後查明是由於db_link的問題,後來也輕鬆處理了。

接著,遷移完成後的善後工作:重新編譯schema資訊,重新收集DB統計資訊。

最後,總結這次遷移心得體會如下:

(1)遷移前的流程得事先想明白,會遇到的問題需要儘可能多的有預見性處理,還有就是效率和最佳化的問題;

(2)一條路走不通時可以換個思路嘗試新的方法,說不定可以高效解決你的問題,當然一切都是在實踐前提下進行;

(3)最後,感覺遷移完成後的善後三項工作很重要也很實用,貼出來,分享給大家:

       ---&gt>遷移後對比目標庫和源庫資料庫物件類別和資料:

    SQL> select object_type,count(*) cnt from dba_objects where owner='AAA' GROUP BY OBJECT_TYPE;

 

外網14環境統計資訊                      RAC環境統計資訊 

 

OBJECT_TYPE                CNT          OBJECT_TYPE                CNT     

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

TABLE SUBPARTITION         850          TABLE SUBPARTITION         850   

INDEX PARTITION             72          INDEX PARTITION             72   

TABLE PARTITION             98          TABLE PARTITION             98   

SEQUENCE                    47          SEQUENCE                    47                             

PROCEDURE                    1          PROCEDURE                    1   

DATABASE LINK                1          DATABASE LINK                1   

PACKAGE                     15          PACKAGE                     15   

PACKAGE BODY                13          PACKAGE BODY                13   

TRIGGER                     38          TRIGGER                     38   

INDEX                      116          INDEX                      116   

TABLE                      131          TABLE                      130   

VIEW                        11          VIEW                        11   

FUNCTION                     7          FUNCTION                     7   

SYNONYM                     40          SYNONYM                     40   

CLUSTER                      3          CLUSTER                      3   

TYPE                         3          TYPE                         3   

       

                                                                    

16 rows selected                      16 rows selected              

----&gt>遷移後重新編譯schema資訊:

begin

dbms_utility.COMPILE_SCHEMA(AAA);

end;

/

----&gt>遷移後查詢失效DB物件:

SQL> select t2.owner,t2.object_name,t2.object_type from all_objects t2 where owner in (AAA) and status='INVALID';

 

OWNER                          OBJECT_NAME                    OBJECT_TYPE

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

FLTF                            FLT_PSF                         PACKAGE BODY

FLTF                           FLT_STATF                       PACKAGE BODY

FLTF                            FLT_DATA_STAT_PROXYF            PACKAGE BODY

-----&gt>遷移後重新收集schema統計資訊:

BEGIN

  DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME          => 'FFF',

                                 ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,

                                 METHOD_OPT       => 'FOR ALL COLUMNS SIZE 1',

                                 DEGREE           => 32);

END;

(4)貼出expdpimpdp指令碼供參考:

Expdp_all_bus.sh-----&gt>

expdp aaa/bbb DIRECTORY=expdp_dir DUMPFILE=expdp_all_man%U.dump filesize=6G CONTENT=all  logfile=expdp_all_bus_parallel.log parallel=3 SCHEMAS=AAA version=10.2.0.1.0  exclude=table_statistics,index_statistics;

 

Impdp_all_bus.sh-----&gt>

impdp BBB/CCC DIRECTORY=impdp_dir DUMPFILE=expdp_all_bus%U.dump  CONTENT=all  logfile=impdp_all_bus_parallel.log parallel=3 SCHEMAS=DDD version=10.2.0.1.0;

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

相關文章