將表從一個表空間遷移到另外一個表空間

fiona8953發表於2014-11-04

預設情況下,匯入試圖在與匯出相同的表空間中建立物件。如果使用者不具有那個表空間的許可權,或者那個表空間不存在時,Oracle在使用者帳戶的預設表空間中建立資料庫物件。這些特性可以用於使用匯出與匯入在表空間之間移動資料庫物件。要為USER_A將TABLESPACE_A的所有物件移動到TABLESPACE_B,應遵循以下步驟:

1 為USER_A匯出TABLESPACE_A中的所有物件。

2 執行REVOKE UNLIMITED TABLESPACE ON TABLESPACE_A FROM USER_A;以收回任何授予使用者帳戶的無限制表空間許可權。

3 執行ALTER USER USER_A QUOTA 0 ON TABLESPACE_A;以使USER_A帳戶不能在TABLESPACE_A上建立任何物件。

4 刪除TABLESPACE_A中USER_A擁有的所有物件。

5 執行ALTER USER USER_A DEFAULT TABLESPACE TABLESPACE_B;以使TABLESPACE_B成為USER_A使用者帳戶的預設表空間。Oracle試圖將物件匯入TABLESPACE_A,因為這些物件是從TABLESPACE_A匯出的。注意使用者不具有TABLESPACE_A上的配額。然後將檢視使用者的預設表空間。在Oracle可以將資料匯入TABLESPACE_B之前,必須給予USER_A使用者該表空間上足夠大的配額,如下步驟所示。

6 執行ALTER USER USER_A QUOTA UNLIMITED ON TABLESPACE_B;

7 匯入被匯出的資料庫物件。預設情況下,匯入工具試圖將它們匯入到TABLESPACE_A中,然而,因為使用者不具有這個表空間的配額,所以所有的物件將被建立在USER_A的預設表空間TABLESPACE_B中。

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

相關文章