本地有2个表空间,2个用户
用户:test1/test1 属于表空间:test1
用户:test2/test2 属于表空间:test2现在有一个dmp文件是从别处(不是本地)的test1用户下导出来的,现在我使用
imp test2/test2@sid file=d:\test1.dmp fromuser=test1 touser=test2
把从别处test1导出dmp文件导入本地的test2用户下,但是我发现虽然连接test2用户能够看到表、存储过程等,但是test2的表空间没增加,反而在test1表空间下增加了相应的大小请问如何操作才能让test2用户占用自己的test2表空间,而不是放在test1下
用户:test1/test1 属于表空间:test1
用户:test2/test2 属于表空间:test2现在有一个dmp文件是从别处(不是本地)的test1用户下导出来的,现在我使用
imp test2/test2@sid file=d:\test1.dmp fromuser=test1 touser=test2
把从别处test1导出dmp文件导入本地的test2用户下,但是我发现虽然连接test2用户能够看到表、存储过程等,但是test2的表空间没增加,反而在test1表空间下增加了相应的大小请问如何操作才能让test2用户占用自己的test2表空间,而不是放在test1下
如果服务器都是10g的话,可以用expdp来导入导出。
我加了一句alter user test2 quota 0m on test1;
为什么还是不行?
你说的不行,是报错,还是又导入到test1下去了。
REMAP_TABLESPACE=source_tablespace:target_tablespace示例:
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01
REMAP_TABLESPACE=source_tablespace:target_tablespaceEXPDP和IMPDP使用说明
http://user.qzone.qq.com/251097186/blog/1245825202
还是导入到了test1下
我在另外论坛也问了下,那边给的答复
我马上来验证下--去掉用户在表空间的权利
revoke unlimited tablespace from test2的默认表空间;
--去掉用户在system表空间的配额
alter user test2 quota 0 on test2的默认表空间;
--给予用户默认表空间不受限制的配额
alter user test2 quota unlimited on 你想迁移的表空间名;
grant unlimited tablespace to 你想迁移的表空间名;
ALTER USER "test2" DEFAULT TABLESPACE "你想迁移的表空间名";
--
导入数据
--
收回相关权限
--去掉用户在表空间的权利
revoke unlimited tablespace from 你想迁移的表空间名;
--去掉用户在system表空间的配额
alter user test2 quota 0 on 你想迁移的表空间名;--
一般我前面都会给用户赋予dba权限,迁移完成后再进行收回刚才突然有人找我处理问题,所以直接将我做迁移的脚本改了一下,没有注意看就发了,现已修改,下次我会注意发帖前先检查一下
EXPDP和IMPDP是10G的新功能,所以需要目标和源都是10G, 他们的命令的OPTION和EXP/IMP很相识,多个S,功能更大,而且由于10G里DATA DUMP引入了DIRECTORY的概念,而不是以前的FILE,所以只能在服务器上保持文件。具体OPTIONS查看EXPDP HELP=Y
你上面说失败,不会是没有把UNLIMITED TABLESPACE收回来吧
现在解决了是表空间和用户建立完后
加了这两句
revoke unlimited tablespace from test2;
alter user test2 quota unlimited on test2;但是为什么呢?
这第一句收回了unlimited,这第二句又给了unlimited能否解释下?
注意这两句的差异revoke unlimited tablespace from test2;
取消test2用户的不限表空间的权限alter user test2 quota unlimited on test2;
给test2(第一个test2的含义)用户 在test2表空间(第二个test2的含义)上不限制配额的权利这里应该还掉了一个
alter user test2 quota 0 on test1;
给test2(第一个test2的含义)用户 在test1表空间上0配额的权利这样才行哟。
非常感谢,不过没加test2用户在test1表空间上0配额的语句也是可以的啊?