Oracle dmp文件導入(還原)到不同的表空間和不同的用戶下

Oracle dmp文件導入(還原)到不同的表空間和不同的用戶下


一、exp/imp解決方法:

1、dmp文件包含導出時候表空間的信息,導入時候如果沒有創建相應的表空間會提示表空間不存在
2、如果幾個表導出,導入時將錯誤忽略 ignore=y即可

3、用transport_tablespace參數,transport tablespace將一個表空間下的數據移到另一個表空間

3.1、使用transport_tablespace導出數據
    exp 用戶名 transport_tablespace=y tablespaces=(TEST_TS) file=/opt/b.dmp
    exp test1 file=test1.dmp(導出不加transport_tablespace參數也可以的)

3.2、在另外一臺服務器上將數據移到test1相同用戶名下的不同表空間test2
    imp test1 transport_tablespace=y file=a.dmp datafiles=/u01/app/oracle/
    oradata/gbksl/test2.dbf ignore=y full=y;

3.3、在另外一臺服務器上將test1導出dmp文件數據移到test2用戶下(此方法已經驗證過用exp導出,imp導入到不同用戶不可行)
    imp test1 transport_tablespace=y file=/opt/test1.dmp fromuser=test1 
    touser=test2 datafiles='/u01/app/oracle/oradata/gbksl/test2.dbf' 
    ignore=y;

image.png



二、impdp解決辦法:

 使用impdp命令進行導入

將數據移到test1相同用戶名下不同表空間test2_data
impdp test1/test123 dumpfile=XXX.dmp directory=dpdata1 remap_tablespace=ts_test1_prod:test2_data


將test1導出dmp文件數據移到test2用戶及表空間test2_data
impdp test1/test123 dumpfile=XXX.dmp directory=dpdata1 
remap_schema=testl:test2 remap_tablespace=ts_test1_prod:test2_data full=y

impdp 已經沒有ignore此參數

  參數說明

  dumpfile:需要導入的dmp文件名稱

  directory:dmp文件所在的目錄文件夾

  REMAP_SCHEMA: 該選項用於將源方案的所有對象裝載到目標方案中。 REMAP_SCHEMA=source_schema:target_schema

  REMAP_TABLESPACE: 將源表空間的所有對象導入到目標表空間中。  REMAP_TABLESPACE=source_tablespace:target:tablespace 

  其中:ts_test1_prod:原先dmp文件的表空間名稱

            test2_data:需要導入到的表空間的名稱


總結:

        EXPDP/IPMDP只能在server上運行,其運行效率完全取決於磁盤I/O,而EXP/IMP不僅可以運行在server上,也可以運行在client上,所以除了磁盤I/O的制約因素,還有網絡方面的因素。

        EXPDP/IMPDP比EXP/IMP性能有很大的提高,其中影響最大的就是paralle,通常設置爲CPU的個數,通過該參數可以並行導出,大大提高導出速度,而EXP/IMP是沒有這個功能的,最多也就只有一個DIRECT=Y,使導出不用經過SELECT到SGA的BUFFER中,提高的速度是有限的,注意他們之間的語法也有不小的區別,參數不可互相替代。

        EXPDP/IMPDP可以通過remap_schema和remap_tablespace直接實現不同用戶和表空間之間的數據遷移;而EXP/IMP則稍微麻煩一點,需要ALTER TABLE xxx MOVE TABLESPACE xxx/ALTER INDEX xxx REBUILD TABLESPACE xxx方式來實現。move相當於把表再重建一次,可以修改storage參數(如initial、pctfree、pctincrease等),還可以move到另外的表空間,如果不指定表空間,則在原來的表空間中move,因此做move操作時,目標表空間需要保證有這個表同樣大小的剩餘空間,整個操作相當於exp/imp(從表空間A導出到表空間B),move完表後要重建索引。

        基於以上幾種原因,現在做數據邏輯遷移都是用EXPDP/IMPDP而很少再使用EXP/IMP了。


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