问题
虽然现在oracle的导数我们都尽量使用数据泵,但如果实在是从9i导出,或者是开发人员只给了exp出来的dmp,我们也只能默默使用imp去导入。
exp/imp导数非常不灵活,一个经常遇到的问题就是导入时提示表空间不存在。源库和目标库表空间不一致,导入时我们想导入到指定的表空间中。
处理办法
实现的办法是限制导入目标用户的表空间权限,逼着它只能导入到有权限的表空间。举例,如果要导入到scott用户的默认表空间system中(原本数据在users表空间),
select GRANTEE,PRIVILEGE from dba_sys_privs where grantee='SCOTT';
------------------------------ ----------------------------------------
SCOTT UNLIMITED TABLESPACE
回收Scott在其他表空间的权限:
revoke unlimited tablespace from SCOTT;
alter user SCOTT quota 0 on users; --回收其他表空间权限(不一定要,前面已回收UNLIMITED TABLESPACE)
alter user SCOTT default tablespace system; --修改默认表空间为system
alter user SCOTT quota unlimited on system; --赋予默认表空间system权限
SELECT * FROM DBA_TS_QUOTAS where username = 'SCOTT';
TABLESPACE_NAME USERNAME