imp數據到指定的表空間

環境說明:export在tbs_skate表空間的數據,現在想import到指定的表空間tbs_wyzxg,已經修改了用戶的默認表空間爲tbs_wyzxg


關於此問題,作如下解釋:
  
  Oracle並沒有提供什麼參數來指定要導入哪個表空間,數據默認將導入到原本導出時數據所在的表空間中,但是我們可以通過以下的方法來實現導入到不同的表空間。
  
  1.將index以及constraints導入指定的表空間

  在IMP時候使用INDEXFILE參數  ,當給此參數指定了某一文件名,IMP的時候所有的index將不會直接導入到表空間中,
   
    而是在指定的文件中生成創建index的腳本。然後用文本編輯器打開此文件,直接編輯腳本中的storage參數,修改爲
   
    想要導入的表空間名稱。然後重新執行IMP,使用INDEXS=n參數將除Index之外的Objects導入。
  
  最後進入SQL*PLUS,直接運行剛纔編輯的腳本,生成索引。
  
  該方法適用於將index以及constraints導入指定的表空間。

  
  2.改變目的用戶的默認表空間


  將導出的所有數據都導入到指定的表空間。
   
    操作步驟如下:

SQL> create user skate identified by skate default tablespace  tbs_wyzxg;

SQL> grant resource,connect to skate;

SQL> grant resource,connect to skate;//賦resource,connect權限

SQL> revoke unlimited tablespace from tbs_skate;//撤銷此權限

SQL> alter user myhuang quota 0 on tbs_skate;//將用戶在tbs_skate表空間的配額置爲0

SQL> alter user myhuang quota unlimited on  tbs_wyzxg;//設置在用戶在 tbs_wyzxg表空間配額不受限。

經過上述設置後,就可以用imp導入數據,數據將會進入指定的myhuang表空間:

C:/Users/Administrator>imp userid="sys/aibo as sysdba" fromuser=hpo5  touser=skate

file=d:/hpo520320.dmp log=d:/hpo520320.log buffer=409600000 ignore=y

到現在,你就可以登陸數據庫查詢數據是否都已經導入到指定的表空間了

select  * from user_tables;

select * from user_indexes


SQL> drop tablespace  tbs_skate including contents and  datafiles; 
  
  3。使用TOAD
  TOAD是強大的Oracle數據庫管理軟件,是Quest出品的第三方軟件,我們可以使用其中的Rebuild  Multi  Objects工具來實現將多個Object轉移到指定的表空間。
  
  於是我們可以不管三七二十一,先IMP,然後再用TOAD作事後的修改。


---end------

發佈了22 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章