请教关于ORACLE数据泵导入数据的问题

我用expdp system/123456@ORCL DIRECTORY=DUMP_EXP DUMPFILE = NC.DMP LOGFILE = NC.LOG SCHEMAS = NC,将与用户名NC相关的数据后,需要具备什么条件才可以导入数据库?根据我的实验,光是创建一个空白的数据库是不可以导入的,必须要创建与用户名NC关联的空白的表空间,以及创建用户NC才以,因此知道NC与哪些表空间有关联就非常重要。用NC登录SQLPLUS后,执行SELECT AT.OWNER,AT.TABLE_NAME,AT.TABLESPACE_NAME FROM ALL_TABLES AT WHERE OWNER = 'NC',经过整理,可以得知用户名NC与哪些表空间有关联,但是查询出来的信息有几千行,整理起来非常麻烦。另外要说明的是,我的实验得到的结论不一定是正确的,所以在这里就请教大家了,谢谢!

第1个回答  2014-03-12
NNC_DATA01
NNC_DATA02
NNC_DATA03
NNC_INDEX01
NNC_INDEX02
NNC_INDEX03
nc总共是有六个表空间的,你导入之前先创建这六个表空间,再导入的时候就不用考虑表空间的设置问题了追问

关键是,你怎么知道NC总共有六个表空间的?

追答

我怎么就不知道啊,我现在在用nc啊

第2个回答  2014-03-11
可以添加 REMAP_TABLESPACE=TABLESPACE1:TABLESPACE2 做一下表空间对应。
这个可以把数个源表空间对应到1个目标表空间。当然,如果表空间需要分开管理的话,还是不要了。
另:用
SELECT distinct (AT.TABLESPACE_NAME)
FROM ALL_TABLES AT
WHERE at.owner = 'NC'
查看有哪些表空间跟用户有关系。追问

这条命令是不是只能查到用户默认的表空间?我测试了一下,只能查到NNC_DATA01,实际上还有另外一个表空间NNC_INDEX01与表空间NNC_DATA01有关联,因为我导出数据后再导入,我故意先不创建空白表空间NNC_INDEX01,这样数据就无法导入。

追答

这条语句只是在你的语句基础上去掉了重复的表空间名,别的没有动。
不知道你的目的是什么,如果表空间分开管理的话,你导入新的库肯定要按照原来的创建,如果是要搭建测试库,不需要分开管理表空间,直接remap到一个表空间就完了。

追问

我的目的就是把ORACLE中用户NC所有的数据、对象全部导出来,然后原原本本的导入到另外一个数据库中,当然也有可能是导入到同一操作的数据库中,比如重装系统。我现在不太理解,等待导入数据的数据库,需要具备什么样的条件,数据才能正确导入,比如,是建一个空白的数据库?还是不光建立空白数据库,且还要建立对应的表空间,以及用户?如果要建立空白表空间,我怎么知道我原来导出数据的时候,都包含了哪些表空间?

第3个回答  2014-03-12
你在做 impdp 的时候试一下
Impdp system/123456@ORCL DIRECTORY=DUMP_EXP DUMPFILE = NC.DMP

应该就可以直接汇入了