imp/EXP 表空間轉換問題

wengtf發表於2012-02-24
有時候使用者匯出(exp)資料發現資料存在tbs1,但之後想匯入(imp)tbs2,其實
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。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22907091/viewspace-717049/,如需轉載,請註明出處,否則將追究法律責任。

相關文章