利用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格式),执行即可。

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