程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 將EXP出來的數據IMP進不同的表空間

將EXP出來的數據IMP進不同的表空間

編輯:關於Oracle數據庫

  經常有人會問:原來的數據在USERS表空間裡面,我想把它IMP進APP表空間,我已經修改了目的用戶的默認表空間,為什麼結果還是IMP到USERS表空間中了呢。

   關於此問題,作如下解釋:

   Oracle並沒有提供什麼參數來指定要導入哪個表空間,數據默認將導入到原本導出時數據所在的表空間中,但是我們可以通過以下的方法來實現導入到不同的表空間。

   1.在IMP時候使用INDEXFILE參數

   當給此參數指定了某一文件名,IMP的時候所有的index將不會直接導入到表空間中,而是在指定的文件中生成創建index的腳本。
  
   然後用文本編輯器打開此文件,直接編輯腳本中的storage參數,修改為想要導入的表空間名稱。
  
   然後重新執行IMP,使用INDEXS=n參數將除Index之外的Objects導入。
  
   最後進入SQL*PLUS,直接運行剛才編輯的腳本,生成索引。
  
   該方法適用於將index以及constraints導入指定的表空間。
  
   2.改變目的用戶的默認表空間
  
   這就是上面說的經常有人提問的方法。但是上述的問題之所以沒有成功,是因為缺少了下面的幾步。
  
   首先,收回目的用戶的"UNLIMITED TABLESPACE"權限:
  
   revoke unlimited tablespace from username;
  
   其次,取消目的用戶在原數據導出表空間中的配額,這樣才能迫使IMP把數據導入到用戶的默認表空間中去。
  
   然後,將希望導入的表空間設為目的用戶的默認表空間,並添加配額。

   最後,執行IMP。
  
   3.使用TOAD
  
   TOAD是強大的Oracle數據庫管理軟件,是Quest出品的第三方軟件,我們可以使用其中的Rebuild Multi Objects工具來實現將多個Object轉移到指定的表空間。
  
   於是我們可以不管三七二十一,先IMP,然後再用TOAD作事後的修改。
  
   關於TOAD的使用,此處不作詳細解釋。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved