首页 > Linux操作系统 > Linux操作系统 > oracle数据 imp 问题
本地有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下
revoke resource from test2;
alter user test2 quota 0m on test1;
alter user test2 quota unlimited on test2;
---------------------------------------------
--去掉用户在表空间的权利
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权限,迁移完成后再进行收回
--------------------haozhu------------------------
参照红色部分
SQL> create user hao2 identified by hao2;
User created.
SQL> alter user hao2 default tablespace HAOTBS;
User altered.
SQL> grant dba to hao2;
Grant succeeded.
imp hao2/hao2 file=hao.dmp fromuser=hao touser=hao2
hao2 user:
SQL> select TABLESPACE_NAME from user_tables;
TABLESPACE_NAME
------------------------------------------------------------------------------------------
DATA01
sys user:
SQL> revoke unlimited tablespace from hao2;
Revoke succeeded.
imp hao2/hao2 file=hao.dmp fromuser=hao touser=hao2
IMP-00003: ORACLE error 1950 encountered
ORA-01950: no privileges on tablespace 'HAOTBS'
Import terminated successfully with warnings.
SQL> alter user hao2 quota unlimited on haotbs;
User altered.
imp hao2/hao2 file=hao.dmp fromuser=hao touser=hao2
SQL> select TABLESPACE_NAME from user_tables;
TABLESPACE_NAME
------------------------------------------------------------------------------------------
HAOTBS
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13165828/viewspace-607380/ ,如需转载,请注明出处,否则将追究法律责任。