ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle dmp文件导入(还原)到不同的表空间和不同的用户下

2022-01-26 15:02:33  阅读:272  来源: 互联网

标签:test1 test2 导出 dmp 空间 导入 tablespace Oracle


 

一、exp/imp 解决方法

1、dmp文件包含导出时候表空间的信息,导入时候如果没有创建相应的表空间会提示表空间不存在
2、如果几个表导出,导入时将错误忽略 ignore=y即可

3、用transport_tablespace参数,transport tablespace将一个表空间下的数据移到另一个表空间

3.1、使用transport_tablespace导出数据
    exp 用户名 transport_tablespace=y tablespaces=(TEST_TS) file=/opt/b.dmp
    exp test1 file=test1.dmp(导出不加transport_tablespace参数也可以的)
 
3.2、在另外一台服务器上将数据移到test1相同用户名下的不同表空间test2
    imp test1 transport_tablespace=y file=a.dmp datafiles=/u01/app/oracle/
    oradata/gbksl/test2.dbf ignore=y full=y;
 
3.3、在另外一台服务器上将test1导出dmp文件数据移到test2用户下(此方法已经验证过用exp导出,imp导入到不同用户不可行)
    imp test2 transport_tablespace=y file=/opt/test1.dmp fromuser=test1 
    touser=test2 datafiles='/u01/app/oracle/oradata/gbksl/test2.dbf' 
    ignore=y;

 

 image.png

 

 

二、impdp解决办法

 使用impdp命令进行导入

将数据移到test1相同用户名下不同表空间test2_data
impdp test1/test123 dumpfile=XXX.dmp directory=dpdata1 remap_tablespace=ts_test1_prod:test2_data


将test1导出dmp文件数据移到test2用户及表空间test2_data
impdp test2/test245 dumpfile=XXX.dmp directory=dpdata1 
remap_schema=testl:test2 remap_tablespace=ts_test1_prod:test2_data full=y
impdp 已经没有ignore此参数

  参数说明

  dumpfile: 需要导入的dmp文件名称

  directory: dmp文件所在的目录文件夹

  remap_schema: 该选项用于将源方案的所有对象装载到目标方案中。 REMAP_SCHEMA=source_schema:target_schema

  remap_tablespace: 将源表空间的所有对象导入到目标表空间中。  REMAP_TABLESPACE=source_tablespace:target:tablespace 

  其中:ts_test1_prod:原先dmp文件的表空间名称(旧表空间名称)

                 test2_data:需要导入到的表空间的名称(新表空间名称)

 

 

总结:

        EXPDP/IPMDP只能在server上运行,其运行效率完全取决于磁盘I/O;

  而EXP/IMP不仅可以运行在server上,也可以运行在client上,所以除了磁盘I/O的制约因素,还有网络方面的因素。

 

        EXPDP/IMPDP 比 EXP/IMP性能有很大的提高,其中影响最大的就是paralle,通常设置为CPU的个数,通过该参数可以并行导出,大大提高导出速度,而EXP/IMP是没有这个功能的,最多也就只有一个DIRECT=Y,使导出不用经过SELECT到SGA的BUFFER中,提高的速度是有限的,注意他们之间的语法也有不小的区别,参数不可互相替代。

 

        EXPDP/IMPDP可以通过remap_schema和remap_tablespace直接实现不同用户和表空间之间的数据迁移;

  而EXP/IMP则稍微麻烦一点,需要ALTER TABLE xxx MOVE TABLESPACE xxx/ALTER INDEX xxx REBUILD TABLESPACE xxx方式来实现。move相当于把表再重建一次,可以修改storage参数(如initial、pctfree、pctincrease等),还可以move到另外的表空间,如果不指定表空间,则在原来的表空间中move,因此做move操作时,目标表空间需要保证有这个表同样大小的剩余空间,整个操作相当于exp/imp(从表空间A导出到表空间B),move完表后要重建索引。

        基于以上几种原因,现在做数据逻辑迁移都是用EXPDP/IMPDP而很少再使用EXP/IMP了。

 

本文引自:https://blog.csdn.net/weixin_33971977/article/details/92987961

标签:test1,test2,导出,dmp,空间,导入,tablespace,Oracle
来源: https://www.cnblogs.com/ggll611928/p/15846558.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有