我要向oracle中导入一个imp文件。必须知道导出这个imp的用户名吗?就是命令中的fromuser
不知道这个可以导吗

解决方案 »

  1.   

    那为什么我导入的时候报错啊
    警告:这些对象由nc232_demo导出,而不是当前用户。
    结果就什么都没导进去
      

  2.   

    那就好办了 fromuser=nc232_demo
      

  3.   

    imp username/password@servername file=d:\test.dmp fromuser=nc232_demo touser=username
    --看看这个报什么错误?另外你这两个用户所在的表空间名称是一样的吗?
      

  4.   

     我命令就是这么写的。。就报我上面说的那个警告。然后就听见主机“滴滴滴”的响。。就导入失败了。表空间名称不一样。。我就用ue打开dmp文件把里面tablespace后面的东西全改成了我当前这个username的表空间名
      

  5.   

    根据你的描述,我觉得你必须搞清楚一件事情,其他的都好说.
    这件事情就是这个dmp文件包含了哪些对象,是全库?一个用户下的所有对象?还是几个表?这个搞清楚以后我想就很容易了:
    如果导出的是全库,你要导全库,那么使用full=y.
    如果导出是全库,你要导用户,那么使用fromuser/touser
    如果全出是全库,你要导表,那么使用tables=table_name1, table_name2如果导出是用户下的所有对象,你要导全库,那么不可能,就像你取1000,你要花2000样,oracle是不透支的.
    如果导出是用户下的所有对象,你正好要导用户,可以使用full=y或者fromuser  touser.
    如果导出是用户下的所有对象,你要导表,那么可以使用tables=table_name1, table_name2.如果导出几个表,你要导全库,依然不可能
    如果导出几个表,你要导用户,也不可能,
    如果导出几个表,你要导几个表,可以使用full=y或者tables=....至于其他的信息,比如导出表空间\用户名\权限等可以根据报错信息来获得:
    导入时表空间如果不存在,它会报错,你建个表空间就可以了.
    导入时如果用户名不知道,你又要导用户,它依然会提示,上面你已经试出来了.但是它报错了,你尝试把userid 
      的属性设置为系统管理员来导入,如:userid=system/oracle file=.. fromuser= touser=.
      或者你赋予你现在的用户imp_full_database角色.
      导入时,如果出现权限问题,那么通常是导出的用户是DBA,导入的不是DBA,那么可以给导入的用户赋予一个  
      imp_full_database角色或者直接赋予DBA角色即可以了.  请楼主仔细阅读这篇短文,它包含着exp/imp的思想,你规律搞清楚了以后其他的方式就很容易了.
      

  6.   

    注:如果表空间存在,但是你又不想导入到这个表空间,你可以尝试把导入用户的unlimited tablespace权限去掉,然后使用alter user user_name quota 1024M on tablespace_name来设置到想导入的表空间中.
      

  7.   

    imp help 吧你的dmp文件是什么类型的表空间 用户 表 还是full
      

  8.   

    十分万分的感谢你。。确实要理解才行啊。
    这个DMP是组长给我的。让我发布一个系统用的。。我确实不知道它是全库还是用户下的所有对象还是表。。
    不过我感觉是全库吧。。
    我之前用ue打开dmp文件把里面tablespace后面的东西全改成了我当前自己创建的这个username的表空间名。。导入不成功。。
    现在我没有改,直接把组长给我发过来的dmp导入。。确成功了。。
      

  9.   

    强人。还能用UE改dmp中的表空间。呵呵
      

  10.   

    我是听同事说的要改,其实我都不知道为啥改,他说那个dmp文件里面的表空间名要和我要导进去的表空间名一致,所以要改,结果就是因为改这个出错了。。不改直接导反而能导进去