ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 把对象导入不同表空间

把对象导入不同表空间

原创 Linux操作系统 作者:jason_wang2002 时间:2009-03-26 23:41:50 0 删除 编辑

数据库导入导出(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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-05

  • 博文量
    35
  • 访问量
    42879