利用EXP/IMP進行數據遷移,如何轉換表空間操作(完整版)

網上搜索相關主題,90%都不可實際操作,通過實驗,終於找到了可行的辦法,發佈在這裏和大家分享。

注意:適用與oracle 10g+以上的版本。

如果目標表空間爲TS-D,源表空間爲TS-S,使用imp命令導入源表空間導出的dmp文件,會出現以下提示:

IMP-00003: 遇到 ORACLE 錯誤 959
ORA-00959: 表空間 'TS-S' 不存在

如果不知道源表空間名,可以通過上面的導入日誌發現。

下面是處理過程。

1、在目標數據庫,以system登錄後,執行

ALTER TABLESPACE TS-D RENAME TO TS-S;

2、再執行imp命令;

3、執行完成後,執行

ALTER TABLESPACE TS-S RENAME TO TS-D;

附1:單個移動表或索引到新的表空間

另附,把表或索引從一個表空間移動到另一個表空間的腳本,前提是以該表或索引的owner用戶登錄。

ALTER INDEX SYS_C007673 REBUILD TABLESPACE zjkfq;
ALTER TABLE website MOVE TABLESPACE zjkfq;

附2:批量移動表或索引到新的表空間,對於大表,速度較慢

將表批量移動到另一個表空間

1)表
執行以下sql生成批量的sql語句,控制檯結果輸出爲sql語句
select 'alter table '||table_name||' MOVE TABLESPACE ZJMZ;' from user_tables;
2)複製上一步生成的輸出(sql格式),執行即可。

將索引批量移動到另一個表空間
1)執行以下sql生成批量的sql語句,
select 'ALTER INDEX ' ||index_name || ' REBUILD TABLESPACE ZJMZ;' from user_indexes;
2)複製上一步生成的輸出(sql格式),執行即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章