日期:2014-05-17  浏览次数:20967 次

导入数据的时候表空间的问题
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=TRADE

dmp文件是用户TRADE1导出的,那个用户有两个表空间TRADE和TRADE32

我想导入到当前系统的TRADE表空间里,当前系统有两个表空间TRADE和TRADE32,但是我上面的语句指定的TABLESPACES=TRADE
不起作用,数据还是导入到了TRADE32里

如果我吧当前系统的TRADE32删除,那么倒是可以导入到TRADE表空间里,但是中途会出现TRADE32表空间不存在的错误

另外我的trade用户的默认表空间是TRADE.....

我想默认导入到TRADE该怎么办??



------解决方案--------------------
给用户先revoke 所有表空间的权限,再给这个用户指定一个表空间,就可以了.
------解决方案--------------------
应该会导入到导入用户默认的表空间吧
------解决方案--------------------
TABLESPACES参数是用来做表空间迁移(transport_tablespace=y)时,指定要迁移的表空间的。
与用户模式下的imp无关,imp没有提供作用户模式下修改表空间的方法。

下述网址提供了一种修改表空间的变通方法,楼主可以参考。
http://www.orafaq.com/faqiexp.htm
------解决方案--------------------
没有环境写的,应该没有拼写错误哈

-- 收回无限制的表空间权限
revoke unlimited tablespace from user_name;
-- 设置用户默认的表空间
alter user user_name default tablespace xxx_tablespace;
-- 授予用户默认表空间上的配额
alter user user_name quota unlimited on xxx_tablespace;

然后再倒入就可以了
------解决方案--------------------
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.