天天看點

Oracle資料泵詳解

資料泵與正常方式對比: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;