expdp 和 impdp

(一)       導出scott用戶下的emp表到test用戶下

1.1      創建DIRECTORY,用sys用戶創建

create directory DATA_PUMP_DIR as 'D:\dir_dp';

 

1.2      在該目錄上對scott用戶授讀寫權限
Grant read,write on directory DATA_PUMP_DIR to scott;

--查看目錄及權限
 select * from dba_directories;
 select * from user_tab_privs where table_name = 'DATA_PUMP_DIR';

 

1.3      執行導出

expdp scott/tiger@orcl tables = empdirectory=DATA_PUMP_DIR dumpfile=expdp_emp.dmplogfile=expdp_emp.log

--這裏將scott用戶下的emp表導出到DATA_PUMP_DIR目錄中,保存文件爲:expdp_emp.dmp,生成日誌文件:expdp_emp.log。若要以其它模式導出,修改參數即可。

1.4      導入之前準備

如果導入的數據庫與導出的數據庫不是同一個庫,導入之前要重複1、2兩步操作,並將導出文件上傳到要導入的服務器

 

1.5      執行導入

impdp test/test@orcl tables =scott.emp directory= DATA_PUMP_DIR dumpfile=expdp_emp.dmplogfile=expdp_imp.log TABLE_EXISTS_ACTION = REPLACE REMAP_SCHEMA=scott:test

 

(二)       附錄

1      

2      

2.1     更換表空間

  採用remap_tablespace參數
  --導出gwm用戶下的所有數據
expdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp SCHEMAS=gwm
注:如果是用sys用戶導出的用戶數據,包括用戶創建、授權部分,用自身用戶導出則不含這些內容
--以下是將gwm用戶下的數據全部導入到表空間gcomm(原來爲gmapdata表空間下)下
impdp system/orcl directory=data_pump_dir dumpfile=gwm.dmpremap_tablespace=gmapdata:gcomm

 

2.2      更換用戶名

REMAP_SCHEMA
該選項用於將源方案的所有對象裝載到目標方案中.
REMAP_SCHEMA=source_schema:target_schema

 

impdp test/test@orcl tables = scott.empdirectory= DATA_PUM

P_DIR dumpfile=expdp_emp.dmplogfile=expdp_imp.log TABLE_EXISTS_ACTION = REPLACE  remap_schema=scott:testremap_tablespace=users:example

 

2.3      expdp導出模式

a、按表導出:
expdp scott/tiger@orcl  tables=scott.emp dumpfile =expdp_test2.dmplogfile=expdp_test2.log directory=dir_dp job_name=my_job

b、按查詢條件導出:
expdp scott/tiger@orcl  tables=lttfm.b$i_exch_info dumpfile=expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_jobquery='"where rownum<11"'

c、按表空間導出:
Expdp scott/tiger@orcl dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBFlogfile=expdp_tablespace.log directory=dir_dp job_name=my_job

d、導出方案
Expdp scott/tiger@orcl  DIRECTORY=dir_dpDUMPFILE=schema.dmp SCHEMAS=lttfm,gwm

e、導出整個數據庫:
expdp scott/tiger@orcl dumpfile =full.dmp full=y logfile=full.logdirectory=dir_dp job_name=my_job

 

f、按用戶導出

expdp scott/tiger@orcl schemas=scottdumpfile=expdp.dmp DIRECTORY=dpdata1;

 

2.4     impdp導入模式:

a、按表導入

p_street_area.dmp文件中的表,此文件是以gwm用戶按schemas=scott導出的:
impdp test/test@orcl  dumpfile =scott.dmp logfile=imp_scott.log directory= data_pump_dir tables=emp job_name=my_job

b、按用戶導入(可以將用戶信息直接導入,即如果用戶信息不存在的情況下也可以直接導入)
impdp test/test@orcl schemas=scott dumpfile =expdp_test.dmplogfile=expdp_test.log directory= data_pump_dir job_name=my_job

c、不通過expdp的步驟生成dmp文件而直接導入的方法:
--從源數據庫中向目標數據庫導入表p_street_area
impdp test/test@orcl directory= DATA_PUMP_DIRNETWORK_LINK=igisdb tables=p_street_area logfile=p_street_area.log job_name=my_job
igisdb是目的數據庫與源數據的鏈接名,dir_dp是目的數據庫上的目錄

 

2.5      CONTENT

EXP和IMP的ROWS參數經常會被用到,而在數據泵中,這個功能被CONTENT參數所取代。同樣,CONTENT參數在EXPDP/IMPDP兩個命令中都可以指定。其中CONTENT參數的ALL選項對應EXP/IMP的ROWS=Y,而CONTENT參數的METADATA_ONLY對應EXP/IMP的ROWS=N。

數據泵還能實現EXP/IMP所不能實現的功能,就是隻導出數據,而不導出表結果即DATA_ONLY參數。

expdp scott/tigerdirectory=d_output dumpfile=yangtk_data.dp content=data_only

當然傳統的EXP/IMP雖然不能實現不導出表結構,但是在IMP的時候使用IGNORE=Y參數,可以忽略表已經存在而導致的建表操作,從這個意義上講,變相實現了只導入數據的功能。

2.6      並行操作(PARALLEL)

您可以通過 PARALLEL參數爲導出使用一個以上的線程來顯著地加速作業。每個線程創建一個單獨的轉儲文件,因此參數 dumpfile 應當擁有和並行度一樣多的項目。您可以指定通配符作爲文件名,而不是顯式地輸入各個文件名,例如:

expdp scott/tiger@orcl schemas=scott directory=DATA_PUMP_DIR

dumpfile=expdp_emp_%U.dmplogfile=expdp_emp.log parallel=4

 

impdp test/test@orcl  directory= DATA_PUMP_DIRdumpfile=expdp_emp_%U.dmp logfile=expdp_imp.log TABLE_EXISTS_ACTION = REPLACEremap_schema=scott:test remap_tablespace=users:example parallel=4


注意:dumpfile 參數擁有一個通配符 %U,它指示文件將按需要創建,格式將爲expCASES_nn.dmp,其中nn 從 01 開始,然後按需要向上增加。

在並行模式下,狀態屏幕將顯示四個工作進程。(在默認模式下,只有一個進程是可見的)所有的工作進程同步取出數據,並在狀態屏幕上顯示它們的進度。

分離訪問數據文件和轉儲目錄文件系統的輸入/輸出通道是很重要的。否則,與維護 Data Pump 作業相關的開銷可能超過並行線程的效益,並因此而降低性能。並行方式只有在表的數量多於並行值並且表很大時纔是有效的。

   1) 對於導出的parallel
     對於導出來說,由於dump文件只能由一個線程進行操作(包括I/O處理),因此如果輸出的DUMP文件只有一個,即使你指定再多的並行,實際工作仍然是一個,而且還會觸發ORA-39095錯誤。因此,建議設置該參數小於或等於生成的DUMP文件數量。那麼,如何控制生成的DUMP文件數量呢?
     EXPDP命令提供了一個FILESIZE參數,用來指定單個DUMP文件的最大容量,要有效的利用parallel參數,filesize參數必不可少。
     舉例:某用戶對象佔用了4G左右的空間,實際導出後的DUMP文件約爲3G,我們嘗試在導出該用戶時指定並行度爲4,設置單個文件不超過500M,則語法如下:
    $ expdp user/pwd directory=dump_filedumpfile=expdp_20100820_%U.dmp logfile=expdp_20100820.log filesize=500Mparallel=4

   2) 對於導入的parallel
     對於導入來說,使用parallel參數則要簡單的多,我認爲導入更能體現parallel參數的優勢。參數設置爲幾,則認爲同時將幾張表的內容導入到庫中。
    舉例:某dmp文件中包含了200張表,我們嘗試在導入該DMP文件時指定並行度爲10,則語法如下:
   $ impdp user/pwd directory=dump_file dumpfile=expdp_20100820.dmplogfile=impdp_20100820.log parallel=10

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章