linux下用數據泵導入導出(impdp、expdp)


expdp和impdp

expdp
假設a用戶的默認表空間是a,導出用戶a所有數據:

如果是多實例

需要在命令行或終端手工指定實例

set ORACLE_SID=實例名 否則回報ORA-12560: TNS: 協議適配器錯誤

SQL> conn  / as sysdba
SQL> create directory dir as '/home/oracle/';
SQL> grant read,write on directory dir to system;

$expdp system/oracle directory=dir dumpfile=data.dmp schemas=a logfile=data.log

impdp
導入a用戶所有數據到b,並且轉換表空間a為b:

SQL> conn sys / as sysdba
SQL> create directory dir as '/home/oracle/';
SQL> grant read,write on directory dir to system;

$impdp system/oracle directory=dir dumpfile=data.dmp remap_tablespace=a:b remap_schema=a:b logfile=data.log

 

解釋:

    remap_schema=a:b            將數據的schema從a 轉換為b

    remap_tablespace=a:b        將數據的tablespace 從a 轉換為b

 

1.導入的數據庫中已經有相同的用戶名和老舊的表

可以在后邊加上參數table_exists_action=replace

2.導入新的用戶中

需要加入參數remap_schame=原用戶名:新用戶名
例如
impdp estate/estate@orcl schemas=estate directory=zhxt dumpfile=ESTATE20160812LAOLING.DMP logfile=estate.log table_exists_action=replace remap_schame=原用戶名:新用戶名

注意:如果oracle是10g的,要加參數 EXCLUDE=TABLE_STATISTICS 選項將 table_statistics 對象過濾。    否則會出現數據泵導入中table_statistics長時間等待、用impdp 導入,檢查 table_statistics 時等待了N長時間

 

總結:執行impdp時無需創建b用戶,在導入時會自動創建並改名用戶a為b(擁有a的所有權限等),自動設置默認表空間為轉換后的表空間b。如果有多個表空間需要轉換,則使用多個remap_tablespace=源:目標字段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM