需將用戶 OA 所有表從表空間 A 遷移至 B,且表已含大量資料,傳統「刪表→重建」需備份/還原資料,耗時風險大。
exp oa/pwd@server FILE=/d/oa.dmp LOG=/d/oa.logSET HEAD OFF SPOOL drop_tabs.sql SELECT 'DROP TABLE '||table_name||';' FROM user_tables; SPOOL OFF @drop_tabs.sql
imp oa/pwd@server FULL=Y FILE=/d/oa.dmp INDEXFILE=/d/struct.sql LOG=/d/imp.log編輯
struct.sql:
CREATE TABLE 註釋符號。A 批次替換為 B。CREATE INDEX 加上註釋。@struct.sql 建立新表空間為 B 的空表。imp oa/pwd@server FULL=Y FILE=/d/oa.dmp IGNORE=Y INDEXES=N LOG=/d/imp2.log
IGNORE=Y 忽略「表已存在」錯誤,資料直接導入步驟 3 建立的表。struct.sql,註釋 CREATE TABLE、取消註釋 CREATE INDEX,執行完成遷移。TABLES=...)。CONSISTENT=Y。B 需預先建立且配額足夠。