ORACLE导入数据库时表空间名字不一样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE导入数据库时表空间名字不一样相关的知识,希望对你有一定的参考价值。

我有一个DMP文件,要导入到我的库里面,但是要导入的和DMP文件导出时的表空间和用户名字不一样,怎么办?现在我的做法,只有建立一个和DMP文件一样的表空间和用户去导,如果要导入到自己命名的表空间里,应该怎么弄?求教,尽量把步骤说清楚一些,谢谢

首先,收回目的用户的"UNLIMITED TABLESPACE"权限:    revoke unlimited tablespace from username;     其次,取消目的用户在原数据导出表空间中的配额,这样才能迫使IMP把数据导入到用户的默认表空间中去。    然后,将希望导入的表空间设为目的用户的默认表空间,并添加配额。   最后,执行IMP 参考技术A 如果imp时指定tables=的话,就会导入到用户默认表空间。
如果不指定的话,导出的用户和导入的用户不一样会报错,需要指定from_user, to_user追问

可不可以给个例子呢?from_user,to_user是用户,那表空间名字不一样呢

追答

会导入到to_user指定用户的默认表空间里。
所以你把to_user的默认表空间设定为你想导入到的表空间就行了。

参考技术B 10g以后,使用EXPDP/IMPDP工具做导入导出,有一个选项,remap_tablespace追问

能不能说的具体一点?谢谢

追答

IMPDP HELP=Y
remap_tablespace=tbs1:tbs2

追问

这种方法要用empdp的方法导出吧,我试了一下,导入之后,数据还有些问题,还要具体研究一下,谢谢了

本回答被提问者采纳

oracle导入数据库是出现表空间不存在怎么解决?

表空间和用户以创建都是EMR_WS_TEST,
导入命令是:
IMPDP USERID='EMR_WS_TEST/EMR_WS_TEST@ORCL' schemas=EMR_WS_TEST directory=DATA_PUMP_DIR dumpfile=EMR_WS_TEST.dmp logfile=EMR_WS_TEST.log version= 11.1.0.2.0
执行结果如图:

导入空间是EMR_WS_TEST,与EMR_EMPTY无关,只是之前在PL\SQL中使用过EMR_EMPTY,这次导入EMR_WS_TEST为什么会出现“EMR_EMPTY不存在”?

    exp命令导出dmp文件

    exp备份数据库中表结构

    PL/SQL导出

    、imp命令导入dmp文件

    mp命令导入表结构

    导入csv文件

执行命令:sqlldr username/userpasswd@orcl control=F:/test.ctl log=F:/test.log

这个表示导入成功的数据行数。excel数据格式的数据可以通过更换数据格式为csv文件格式,再进行导入操作。

执行imp语句

导入成功后,执行改回原来表空间的名称

参考技术A IMPDP命令可以指定导入的表空间。比如你原来的表空间是A,想导入到表空间B中,可以用remap_tablespace=A:B来指定。

你出的这个错误可能是因为你导出的数据中有部分是保存在EMR_EMPTY表空间中的,你新的数据库中没有这个表空间。我建议:
1.你先确定你源数据库中的表空间,然后在目标数据库中创建相同的表空间。
2.或者用remap_tablespace参数来改变目标数据库的表空间。本回答被提问者采纳
参考技术B 比如你原来的表空间是A,想导入到表空间B中,可以用remap_tablespace=A:B来指定。
你出的这个错误可能是因为你导出的数据中有部分是保存在EMR_EMPTY表空间中的,你新的数据库中没有这个表空间。我建议:
1.你先确定你源数据库中的表空间,然后在目标数据库中创建相同的表空间。
参考技术C 1.创建一个同名的表空间。
2. 用tablespaces参数来指定导入的表空间。
参考技术D 创建一个表空间

以上是关于ORACLE导入数据库时表空间名字不一样的主要内容,如果未能解决你的问题,请参考以下文章

导入数据库时表名前面有都有用户名 如何解决??

导入dump包时表结构会自动导入吗

ora-00959表空间 不存在 oracle imp 导入问题

oracle中怎样把表、表空间导入或导出?

oracle 导入不同表空间方案

sql不同的数据库如何导入, 数据库1 名字为a 数据库2 名字为b 表结构一样,如何导入