缺省情況下,導入試圖在與導出相同的表空間中創建對象。如果用戶不具有那個表空間的權限,或者那個表空間不存在時,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中。
Top
REVOKE UNLIMITED TABLESPACE ON itmpspace FROM itmp ;
ALTER USER itmp QUOTA 0 ON itmpspace ;
ALTER USER itmp DEFAULT TABLESPACE idmp;
ALTER USER itmp DEFAULT TABLESPACE idmp;
ALTER USER itmp QUOTA UNLIMITED ON idmp;