標籤:技巧 小技巧 evo 匯出資料 來源 使用 ons 許可權 pac
【博主註:資料庫方面 ITPUB網站及部落格內容非常豐富翔實】
轉載來源 ITPUB 部落格
經常有人會問:原來的資料在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的使用,此處不作詳細解釋。
Oracle小技巧_不同資料表空間不同使用者匯入匯出資料dmp