1.我在Oracle中分别新建了三个用户:a,b,c.它们的默认表空间分别是:a,b,c,临时表空间都是:TEMP
2.在建立好用户之后,我手中有一个a.dmp文件库,这是我用imp a/123@oral file=D:\a.dmp full=y ignore=y 的语句分别导入到第一步所建立的三个用户中,可现在有一个问题就是在表空间(TableSpace)中去查看的时候,b,c表空间中的table都是空的,却都在a表空间table中出现。出现的形式是:a.表1,a.表2,…… b.表1,b.表2 ……c.表1,c.表2……

解决方案 »

  1.   

    Oracle并没有提供什么参数来指定要导入哪个表空间,数据默认将导入到原本
    导出时数据所在的表空间中,但是我们可以通过以下的方法来实现导入到不同的表空间。 首先,收回目的用户的”UNLIMITED TABLESPACE”权限:
    revoke unlimited tablespace from username;其次,取消目的用户在原数据导出表空间中的配额,这样才能迫使IMP把数据
    导入到用户的默认表空间中去。
    alter user xxx default tablespace 你的目标表空间;然后,将希望导入的表空间设为目的用户的默认表空间,并添加配额。
    alter user xxx quota unlimited on 你的目标表空间;最后,执行IMP。
      

  2.   

    学习了,
    原来只是知道在导入dmp文件时,系统会首先检测导出文件对应的表空间是否存在,在碰到元老的导出文件对应的表空间在导入的数据库中不存在时,会首先创建一个同名的表空间来解决问题。
      

  3.   


    ---------不会创建一个同名的表空间
    在导入DMP的时候,如果指定FROMUSER 和 TOUSER,就是导入到用户的默认表空间
      

  4.   

    full=y这个是最笨的一个参数,怎么大家都喜欢用这个?