exp/imp采用不同的表空間


導出與導入后對象采用不同表空間的實現方法

如果是整個表空間的 導出導入,則可直接采用可傳輸的表空間特性,具體步驟如下:

1.先檢測要導出的表空間:即檢查該表空間的所有對象是否都在這個表空間中,如果有部分對象在別的表空間,則無法導出該表空間。

  采用sys.dbms_tts.transport_set_check過程進行檢測

    BEGIN sys.dbms_tts.transport_set_check('bgmapdata',TRUE);END;

  執行好后,查看表transport_set_violations是否有記錄,若有則表明有對象存在於別的表空間中

    select * from sys.transport_set_violations;

總結:如果該表有記錄,則必須對該表指出的這些對象重新置於本表空間中,否則會提示ora-29341:可傳送集不是自包含的。

 檢測成功后,在執行第二步

2.將表空間置於只讀狀態

 

alter tablespace bgmapdata READ only;
3.執行導出操作

 

 

EXP transport_tablespace=y tablespaces=(bgmapdata) file=d:\dd.dmp

執行后提示輸入用戶,此時輸入:sys/change_on_install@fd as sysdba

注:1)執行可傳輸的表空間導出,必須采用sys用戶,否則提示:

          EXP-00044: 必須以 'SYSDBA' 身份連接, 才能進行時間點恢復或可傳輸的表空間導入
          EXP-00000: 導出終止失敗

      2)sys/change_on_install@fd as sysdba 該用戶名密碼不能直接在exp導出語句中寫,如果寫成          

         EXP userid=\'sys/change_on_install@fd as sysdba\' transport_tablespace=y tablespaces=(bgmapdata) file=d:\dd.dmp

         則提示 LRM-00112: 參數 'userid' 不允許有多個值

4.拷貝dmp文件到需要導入的機器,如放在d盤下

5.執行導入

   imp file=d:\dd.dmp  transport_tablespace=y datafiles=/home/oradba/ff.dbf

   同樣會提示輸入用戶名,與導出的一樣,采用sys用戶

 

但如果只是想導出表空間某幾個表,而表空間又不一樣,則執行步驟如下

1.導出

  exp username/password@sid file=d:\xx.dmp tables=(table1,table2)

 

2.拷貝dmp文件到目的機器

3.在准備導入的庫上先創建好要導入的表

   可以采用將源庫上的創建表腳本導出后修改下表空間先創建好

4.執行導入,導入時將錯誤忽略 ignore=y

  imp username/password@sid fromuser=username touser=username file=d:\xx.dmp ignore=y

 

 

 

 


 


免責聲明!

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



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