資料泵與正常方式對比:Oracle 10g開始引入資料泵,與傳統exp/imp相比,資料泵可以作業分離,允許挂起和恢複導入導出任務,可以從失敗點重新啟動失敗的作業,還可以控制導入導出的版本(version)
1、expdp指令:
1>常用參數:
content :導出資料還是隻導出中繼資料(表和索引建立語句等),選項有:ALL、DATA_ONLY、METADATA_ONLY
directory:dumpfile和logfile的目錄對象
dumpfile/logfile
exclude:不導出指定的對象(與這些對象有依賴的也不會導出)eg:exclude=table:"like'DBA_%'"
include:導出指定的對象,與exclude功能相反,用法相同
job_name:定義導出作業的名稱
attach:附加到已經在運作的現有作業,用于管理作業
full:預設值為n,full=y表示導出所有對象
nologfile:=y表示不寫expdp的日志檔案,預設值為n
parallel:定義線程數的最大值,這些線程可以代表導出作業來運作
tables/tablespaces:運作導出指定表/表空間,包括與這個表/表空間有依賴關系的所有對象
version:限制要導出的對象到指定版本的資料庫
2>舉例:
--建立導出目錄及相關使用者賦權
create or replace directory dumpdir as '/data/backup';
grant all on directory dumpdir to system;
grant EXPORT FULL DATABASE to system;
--導出全庫:導出資料庫所有對象
expdp system/pwd@ip/ORACLE_SID dumpfile=dumpdir:db_%U.dmp logfile=dumpdir:db_exp_%U.log job_name=exp_db full=y
--導出指定表空間:導出指定表空間的對象
expdp system/pwd@ip/ORACLE_SID tablespaces=tbs dumpfile=dumpdir:tbs_01.dmp logfile=dumpdir:tbs_exp_01.log job_name=exp_tbs
--導出特定對象:導出指定對象(如下例的function、procedure和XT開頭的表)
expdp system/pwd@ip/ORACLE_SID include=function include=procedure include=table:"like'XT%'" dumpfile=dumpdir:tab_01.dmp nologfile=y job_name=exp_tab
--導出表:導出指定表的對象
expdp system/pwd@ip/ORACLE_SID tables=XTCS,XTDW dumpfile=dumpdir:tab_02.dmp nologfile=y job_name=exp_tab01
2、 impdp指令:
content :導入資料還是隻導入中繼資料(表和索引建立語句等),選項有:ALL、DATA_ONLY、METADATA_ONLY
include:導入指定的對象,eg:exclude=table:"like'DBA_%'"
job_name:定義導入作業的名稱
parallel:定義線程數的最大值,這些線程可以代表導入作業來運作,預設值是1
table_exists_action:定義當表已經存在時執行的操作,可選項:
=skip(預設值)不加載資料直接跳過目前對象并處理下一個
=append追加在目前表的資料之後寫入
=replace先删除表,再建立表并加載資料
=truncate先清除所有資料行,再寫入
--建立導入目錄及相關使用者賦權
create or replace directory pumpdir as '/data/backup';
grant all on directory pumpdir to system;
grant IMPORT FULL DATABASE to system;