IMP 默認將對象導入原導出時所在表空間,無參數直接指定目標表空間。需通過間接手段實現遷移。
IMP user/pwd FILE=exp.dmp INDEXFILE=idx.sql FULL=Y → 生成創建索引/約束的 SQL 腳本,不導入數據。idx.sql,將 TABLESPACE old_ts 替換為 TABLESPACE new_ts。IMP user/pwd FILE=exp.dmp INDEXES=N FULL=Y → 導入除索引外所有對象(表、數據、視圖等)。@idx.sql → 在新表空間創建索引/約束。適用:需精確控制索引、主鍵、外鍵表空間的場景。
REVOKE UNLIMITED TABLESPACE FROM target_user;ALTER USER target_user QUOTA 0 ON source_ts;ALTER USER target_user DEFAULT TABLESPACE new_ts QUOTA UNLIMITED ON new_ts;IMP → 數據無法寫入源表空間(配額 0),被迫寫入默認表空間 new_ts。注意:若用戶擁有 UNLIMITED TABLESPACE 系統權限,配額限制失效,必須先撤銷。
IMP 導入(對象落在舊表空間)。Database → Rebuild Multi Objects → 選中需遷移對象 → 指定目標表空間 → 執行重構。ALTER TABLE MOVE、ALTER INDEX REBUILD 等 DDL,處理依賴關係。優勢:圖形化、批量、支援約束/觸發器/權限同步遷移,適合事後補救。
PARALLEL、NOLOGGING 加速 MOVE/REBUILD。