海量資料處理_使用外部表進行資料遷移

redhouser發表於2011-05-31

問題:
經常需要遷移大表資料,一般使用expdp/impdp、可移動表空間實現,也可以使用外部表。

1,源庫,建立一個外部表
select count(*) from customer t;
22703336

set timing on
create table CUSTOMER_EXT
ORGANIZATION EXTERNAL
(TYPE ORACLE_DATAPUMP
 DEFAULT DIRECTORY dmp_dir
 LOCATION ('cust1.dmp','cust2.dmp','cust3.dmp','cust4.dmp','cust5.dmp','cust6.dmp','cust7.dmp','cust8.dmp')
)
parallel 8
as
select /*+ parallel(c 8) */ * from customer c;
--Executed in 18.656 seconds
注:如果dmp檔案清單隻保留cust1.dmp,則無法並行,所需時間為。

2,在源資料庫上呼叫
select  dbms_metadata.get_ddl('TABLE','CUSTOMER_EXT')   FROM DUAL;

3,目標庫建立
CREATE TABLE CUSTOMER_EXT2
   (    "CUST_ID" NUMBER(*,0),
        ...
   )
   ORGANIZATION EXTERNAL
    ( TYPE ORACLE_DATAPUMP
      DEFAULT DIRECTORY "DMP_DIR"
      LOCATION
       ( 'cust1.dmp',
         'cust2.dmp',
         'cust3.dmp',
         'cust4.dmp',
         'cust5.dmp',
         'cust6.dmp',
         'cust7.dmp',
         'cust8.dmp'
       )
    )
   PARALLEL 8;

select count(*) from customer_ext2 t;
22703336

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

相關文章