imp.exe trade/trade@LEDORCL_192.168.88.155 file=D:\20060531.dmp log=D:\20060531.dmp.implog ignore=y fromuser=TRADE1 touser=trade commit=y TABLESPACES=TRADEdmp文件是用户TRADE1导出的,那个用户有两个表空间TRADE和TRADE32我想导入到当前系统的TRADE表空间里,当前系统有两个表空间TRADE和TRADE32,但是我上面的语句指定的TABLESPACES=TRADE
不起作用,数据还是导入到了TRADE32里如果我吧当前系统的TRADE32删除,那么倒是可以导入到TRADE表空间里,但是中途会出现TRADE32表空间不存在的错误另外我的trade用户的默认表空间是TRADE.....我想默认导入到TRADE该怎么办??

解决方案 »

  1.   

    给用户先revoke 所有表空间的权限,再给这个用户指定一个表空间,就可以了.
      

  2.   

    TABLESPACES参数是用来做表空间迁移(transport_tablespace=y)时,指定要迁移的表空间的。
    与用户模式下的imp无关,imp没有提供作用户模式下修改表空间的方法。下述网址提供了一种修改表空间的变通方法,楼主可以参考。
    http://www.orafaq.com/faqiexp.htm
      

  3.   

    没有环境写的,应该没有拼写错误哈-- 收回无限制的表空间权限
    revoke unlimited tablespace from user_name;
    -- 设置用户默认的表空间
    alter user user_name default tablespace xxx_tablespace;
    -- 授予用户默认表空间上的配额
    alter user user_name quota unlimited on xxx_tablespace;然后再倒入就可以了
      

  4.   

       lz 搞混了参数,首先tablespaces,是所原来被导出的数据(也即使通常的dmp文件)被导入的时候,你可以选择这个dmp包含的某个表空间.例如a.dmp包括 表空间 sa,sb,那么你在imp的时候录入tablespaces=sa ,表示只有在sa的对象和数据被导入到目标数据库.
       而不是说要导入到目标数据库.
       如果要达到lz的要求,只能一种方式先导入再移动,alter table xxx move tablespace xxxxx.alter index xxx rebuild tablespace xxxx.