oracle匯入匯出之expdp/impdp

花花蘑菇發表於2016-11-07
資料泵裡匯入匯出有幾個常用的引數,記錄如下:
parallel:  指定並行度,提高匯入匯出的效率
cluster: 該引數預設為y。為n時,表示僅在一個資料庫例項上進行匯入/匯出操作。主要是在RAC環境下,會使用此引數。
compression:設定compression為all時,表示開啟轉儲檔案壓縮功能。注意,該功能要求compatible初始化引數至少為11.0.0
full:設定full=y,表示為完全模式匯出,包含所有的使用者業務資料。
reuse_dumpfiles:設定為y時,表示如果存在同名的泵出檔案時,會對其進行覆蓋。
nologfile:為y時,表示不生成日誌檔案。
tablespaces:匯出指定的表空間。
schemas:匯出指定的使用者模式。
tables:匯出指定表。
query:匯出符合刪選條件的行。
flashback_time或者flashback_scn:匯出與閃回時間點查詢相一致的資料。
exclude:排除指定的物件
content:有三個值:all,data only,metadata_only。為all時,匯出物件定義以及所有的資料;為data only時,只匯出物件資料;為metadata_only時,只匯出物件定義。
以下的幾個引數是在匯入時被用到的:
table_exists_action:該引數有幾個值,分別是skip(預設值),append,truncate,replace。
(skip:表示匯入的表如果已經存在,會直接跳過。如果該表的表結構發生改變,也一樣跳過,不會報錯。
   append:表示匯入的表如果已經存在,就將資料直接插入。當然如果該表上有唯一性約束條件存在時,會報錯並匯入失敗。
  truncate:表示匯入的表如果已經存在,就將原表中的資料清空,然後重新匯入。如果有外來鍵約束,則報錯,並匯入失敗。
  replace:表示匯入的表如果已經存在,就先將表以及一切依賴該表的物件全部刪除,然後重建表。至於依賴該表的物件是否也會被重建,取決於匯入的資料包裡有沒有這個物件,比如表上的索引等。

如果被匯入的表的結構發生了變化,那麼用append方式和truncate方式時,均會報錯ORA-00600。
remap_table:匯入時,更換資料包中的表名。
remap_schema:匯入時,更換資料包中的模式名

示例:
impdp system/oracle tables=hr.employees dumfile=EX%U.DMP remap_table=employees:employees_other exclude=constraint,ref_constraint
將匯入的表employees重新命名為employees_other,同時就算匯入的檔案中有employees表的主鍵、唯一、檢查和外來鍵約束,也不用匯入。因為如果有約束和現有約束同名,也會導致employees表建立失敗。
注意:exclude引數無法排除非空約束。
impdp system/oracle tables=hr.employees dumfile=EX%U.DMP remap_schema=HR:HR2
將匯入檔案裡的表hr.employees匯入到HR2模式下。注意:這個HR2必須已經提前存在。
impdp system/oracle schema=hr dumfile=EX%U.DMP remap_schema=HR:HR2
將匯入檔案中所有屬於HR模式的物件在匯入時切換至HR2模式。注意:這裡HR2模式資料庫會自動建立。但是這裡面的匯入檔案必須是在匯出時使用full=y或者schema=hr語句生成的。

expdp/impdp的執行方式:
除了常見的在命令列介面直接輸入expdp/impdp語句以外,還可以利用parfile引數:
[root@single2 test]#cat exp_data.txt
userid='/ as sysdba'
DIRECTORY=DUMP
DUMPFILE=EXP_%u.dmp
LOGFILE=EXP_data.log
TABLES=(
hr.employees
)
[root@single2 test]#$nohup expdp parfile=exp_data.txt &

exclude=STATISTICS,表示排除統計資訊。如果沒有統計資訊,會導致SQL執行計劃不對。可以手動重新收集統計資訊。


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

相關文章