Oracle exp/imp:源和目标表空间不同时的处理方法

原创 2016年08月31日 15:50:24

场景描述:

1、做一个从UAT到PRD的Schema迁移,UAT环境有sys用户,PRD环境没有sys用户,由于权限限制,没办法使用expdp/impdp,只好选择exp/imp命令;

2、UAT和PRD环境的TNS已明确,假设UAT环境的TNS配置为:TNS_UAT,PRD环境的配置为:TNS_PRD;

3、PRD环境的DB USER已建好(其他人建好提供的),和UAT环境的是一样的,假设都为user/pwd;

4、UAT和PRD环境,user用户的表空间名不同,假设UAT环境表空间为:TBSP_UAT,PRD环境为TBSP_PRD;

当两个user的表空间不同时无法直接exp/imp(不妨尝试一下),所以找了以下两种解决办法:

方法一:

1、使用exp命令从UAT库导出user用户数据文件Schema_USER_BAK.dmp,命令格式为:

EXP  user/pwd@TNS_UAT  BUFFER=64000  FILE=D:\SCHEMA_USER_BAK.dmp  OWNER=USER(参数按需添加)

2、使用Notepad++等文本工具打开文件,查找出其中的表空间信息,将SCHEMA_USER_BAK.dmp文件中的UAT环境表空间名TBSP_UAT全部替换PRD对应的表空间名TBSP_PRD,修改后的文件另存为SCHEMA_USER.dmp;

3、然后使用imp命令将SCHEMA_USER.dmp文件导入给PRD环境的user用户,命令格式为:

IMP  user/pwd@TNS_PRD   BUFFER=64000   FILE=D:\SCHEMA_USER.dmp FROMUSER=USER  TOUSER=USER

4、OK,方法一完成。

但是,假设UAT环境的user用户的数据量很大,导出的dmp文件通常有3GB、4GB甚至更大,此时就无法通过Notepad++或者UE等编辑器直接去编辑替换表空间信息了,方法一就行不通了,所以这时有了方法二。

方法二:

1、修改UAT环境user用户的表空间名为PRD环境对应的表空间名:(修改之前记得备份)

ALTER TABLESPACE TBSP_UAT  RENAME TO  TBSP_PRD

2、导出UAT环境user用户:

EXP  user/pwd@TNS_UAT  BUFFER=64000  FILE=D:\SCHEMA_USER.dmp  OWNER=USER

3、将导出的dmp文件导入给PRD环境的user用户:

IMP  user/pwd@TNS_PRD   BUFFER=64000   FILE=D:\SCHEMA_USER.dmp FROMUSER=USER  TOUSER=USER

4、还原UAT环境user用户的表空间名:

ALTER TABLESPACE TBSP_PRD  RENAME TO  TBSP_UAT

5、OK,方法二完成。

上述两种方法亲测有效,但是可能会有特殊情况,至于特殊情况是什么,那就不好说了。所谓特殊情况特殊处理,所以还得各位小伙伴多多研究了。


版权声明:本文为博主原创文章,转载请注明出处,多谢。

如何将EXP出来的数据IMP进不同的表空间

Author:KamusMail:kamus@itpub.netDate:2004-1 经常有人会问:原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的用户的默认表空间,...
  • Kamus
  • Kamus
  • 2004年06月10日 10:37
  • 9029

oracle 数据库imp操作导入dmp文件时表空间问题

一: 假设数据用户USER1使用默认表空间TS1,用户USER2使用默认表空间TS2,现在将USER1的数据导入到USER2,要求使用表空间TS2。通过IMP命令参数tablespaces指定表空间...

oracle用exp\imp导出导入,及创建表空间与用户

oracle exp导出表结构: exp username/pwd@sid file=D:\db1.dmp owner=(username) rows=n; 上面命令,将rows=n参数去掉,会将...

Oracle中exp,imp的TableSpace表空间问题

当用EXP导出表,其表的表空间和需要导入的表空间不一致时,有两种处理方法。 1.修改该表的表空间语句。  如有表T1,所在表空间为USER。直接修改其表空间必须先删除此表数据,而且当有几百张表时,...

oracle imp导入库到指定表空间

1.创建表空间 create tablespace example_tablespace datafile 'e:\****.dbf' size 100m reuse autoextend on...

Oracle用imp导入用户表时选择表空间的问题

自己觉得对Oracle还掌握得不错,不过昨天隔壁实验室的同学问了我一个问题让我郁闷了一把。她在一个数据库里把一个用户A的在表空间AA上的表用exp导出到exp.dmp文件中,再把它导入到另一台机器上的...
  • tiger80
  • tiger80
  • 2010年03月01日 11:12
  • 1966

Oracle IMP导出到不同表空间不成功

Oracle IMP导出到不同表空间不成功        一、问题描述:        所用环境:Oracle 11g客户端、Windows 64bit、C#;        具体描述:用户UserA...
  • sean4m
  • sean4m
  • 2016年08月05日 14:25
  • 3887

oracle使用exp/imp导入导出(用户)

实例,从远程机器上导出nxgy用户的所有对象和数据,然后导入到本机数据库的nxgy用户里(用户名可自定义) 如果本机nxgy用户已经存在(数据没用,可以删除),级联删除用户所有对象 首先,从远程机...

ORACEL中使用IMP出现的表空间不一致的问题暂时解决办法

在ORACEL中使用imp charmcar/test file=g:/share/oo.dmp fromuser=gogo118将表由A空间导入B空间,会出现空间不一致的情况。使用下面语句更改,不过...
  • JOE4011
  • JOE4011
  • 2006年11月24日 16:29
  • 1126

oracle 导入(imp)数据时的表空间(tablespace users)问题

imp/exp 用户 表空间 users tablespace 使用exp把用户pwgh的数据导出后,再使用imp把数据导入另外一个数据库时。 发现一个问题,由于数据的导出用户pwgh的一些表建在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle exp/imp:源和目标表空间不同时的处理方法
举报原因:
原因补充:

(最多只允许输入30个字)