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
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命令:
1>常用參數:
content :匯入資料還是只匯入中繼資料(表和索引建立語句等),選項有:ALL、DATA_ONLY、METADATA_ONLY
directory:dumpfile和logfile的目錄對象
dumpfile/logfile
include:匯入指定的對象,eg:exclude=table:"like'DBA_%'"
job_name:定義匯入作業的名稱
attach:附加到已經在啟動並執行現有作業,用於管理作業
full:預設值為n,full=y表示匯出所有對象
nologfile:=y表示不寫expdp的記錄檔,預設值為n
tables/tablespaces:運行匯出指定表/資料表空間,包括與這個表/資料表空間有依賴關係的所有對象
table_exists_action:定義當表已經存在時執行的操作,可選項:
=skip(預設值)不載入資料直接跳過當前對象並處理下一個
=append追加在當前表的資料之後寫入
=replace先刪除表,再建立表並載入資料
=truncate先清除所有資料行,再寫入
2>舉例:
--建立匯入目錄及相關使用者賦權
create or replace directory pumpdir as '/data/backup';
grant all on directory pumpdir to system;
grant IMPORT FULL DATABASE to system;
--匯入全庫:匯入資料庫所有對象
impdp system/pwd@ip/ORACLE_SID dumpfile=pumpdir:db_01.dmp logfile=pumpdir:db_imp_%U.log job_name=imp_db full=y
--匯入指定資料表空間:匯入指定資料表空間的對象
impdp system/pwd@ip/ORACLE_SID tablespaces=tbs dumpfile=pumpdir:tbs_01.dmp logfile=pumpdir:tbs_imp_01.log job_name=exp_tbs table_exists_action=truncate
--匯入特定對象:匯入指定對象(如下例的function、procedure和XT開頭的表)
impdp system/pwd@ip/ORACLE_SID include=function include=procedure include=table:"like'XT%'" dumpfile=pumpdir:tab_01.dmp nologfile=y job_name=imp_tab
--匯入表:匯入指定表的對象
impdp system/pwd@ip/ORACLE_SID tables=XTCS,XTDW dumpfile=pumpdir:tab_02.dmp nologfile=y job_name=imp_tab01
Linux-6-64下安裝Oracle 12C筆記
RHEL6.4_64安裝單一實例Oracle 12cR1
Oracle 12C新特性之翻頁查詢
解讀 Oracle 12C 的 12 個新特性