Oracle --- 使用數據泵對不同用戶和不同表空間的數據遷移

expdp和impdp

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

如果是多實例

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

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

SQL> conn  / as sysdba
SQL> create directory dir as 'D:\oraclexe\app\oracle\oracleData';
SQL> grant read,write on directory dir to system;

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

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

SQL> conn sys / as sysdba
SQL> create directory dir as 'D:\oraclexe\app\oracle\oracleData';
SQL> grant read,write on directory dir to system;

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

需要創建對應文件夾,不然會報錯。如本人創建文件夾爲D:\oraclexe\app\oracle\oracleData

 

解釋:

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

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

 

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

 

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

此種方法只限於支持oracle10g以上版本。

 

轉自:http://blog.sina.com.cn/s/blog_490a0c990100u3p9.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章