不同表空间导入数据
在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间。
本例举例说明解决这个问题:
1.如果缺省的用户具有DBA权限
那么导入时会按照原来的位置导入数据,即导入到原表空间
2://回收用户unlimited tablespace权限 这样就可以导入到用户缺省表空间
//创建表空间
SQL>create tablespace hollydm logging
2 datafile 'D:/oracle/oradata/icm/hollydm.dbf'
3 size 100m
4 autoextend on
5 next 32m maxsize 2048m
6 extent management local;
创建用户
SQL>create user hollydm_ln identified by hollydm_ln
2 default tablespace hollydm temporary tablespace temp;
//给予普通权限
SQL> grant connect,resource to hollydm_ln;
//给予管理员权限
SQL> grant dba to hollydm_ln;
//如果用户已经具有sysdba角色的话就只需要执行以下3步就可以啦!
SQL> revoke unlimited tablespace from hollydm_ln(用户);
SQL> alter user hollydm_ln(用户) quota 0 on users;
SQL> alter user hollydm_ln(用户) quota unlimited on hollydm(表空间);
User altered.
//退出生效
SQL> exit
//重新导入语句
imp hollydm_ln/hollydm_ln@icm file=d:/hollydm.dmp fromuser=hollydm touser=hollydm_ln grants=n
//查看表空间
select table_name,tablespace_name from user_tables;