数据库导入导出(imp/exp)功能是DBA经常要用到的功能,有时候需要把数据导入到不同的表空间中,而默认导入时会把数据导入到相同的表空间。那怎样把数据导入到不同表空间的功能呢?
其实很简单,只要让用户只能读写这个表空间,那数据就只会导入这个表空间。
这里有个例外,就是分区表,我将在下一篇中讲解怎样把分区表导入不同表空间。
把数据导入不同表空间的方法简单来说只要两步:
1.收回unlimited tablespace表空间,使导入时不能在原表空间中创建对象。
revoke unlimited tablespace from ;
2.赋予用户只能在指定的表空间上创建对象
alter user quota unlimited on ;
下面就使用实验来说明怎样操作
生产数据库上有一个用户MTS,根据要求,在同一下数据库中创建一个测试账号MTSTEST,把MTS数据导入MTSTEST,MTS用户中没有分区表
创建默认表空间和用户
SQL> create tablespace mtstestd datafile '/data2/oracle/oradata/mtsdb/mtstestd01.dbf' size 5120m
2 segment space management auto;
Tablespace created.
SQL> alter tablespace mtstestd add datafile '/data2/oracle/oradata/mtsdb/mtstestd02.dbf' size 5120m;
Tablespace altered.
SQL> alter tablespace mtstestd add datafile '/data2/oracle/oradata/mtsdb/mtstestd03.dbf' size 5120m;
Tablespace altered.
SQL> create user mtstest
2 identified by mytest
3 default tablespace mtstestd;
User created.
为了方便导入数据,临时给MTSTEST用户赋予DBA权限,并且把unlimited tablespace权限收回,只给MTSTEST访问MTSTESTD表空间的权限
SQL> grant dba to mtstest;
Grant succeeded.
SQL> revoke unlimited tablespace from mtstest;
Revoke succeeded.
SQL> alter user mtstest quota unlimited on mtstestd;
User altered.
导出MTS用户下的数据(导出过程略)
exp system wner=mts compress=y file=mts20090326.dmp statistics=none
导入MTSTEST用户,注意我这里不导入权限,权限将在完成导入后手工输入
imp system fromuser=mts touser=mtstest file=mts20090326.dmp grants=n
导入完成后,收加DBA权限,并赋予MTSTEST对象相应的权限,并且检查一下导入的对象是否有效(这部分略)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8745319/viewspace-580297/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8745319/viewspace-580297/
1939

被折叠的 条评论
为什么被折叠?



