把分区表导入不同的表空间

导入一般数据,请参考
http://space.itpub.net/8745319/viewspace-580297

昨天我写了怎样把DUMP数据导入到不同的表空间,但对于分区表和分区索引,这个方法不适用。那怎样把分区表和分区索引导入不同的表空间呢,那就要用到分步导入的方法

1.根据http://space.itpub.net/8745319/viewspace-580297方法导入数据到指定的表空间,但注意这里先不要导入数据,使用rows=n这个参数先导入对象的结构。这时候,除了和分区表、分区索引、与分区相关的对象没有导入外,其他对象的结构都可以导入到指定表空间

2.再临时赋予unlimited tablespace权限给用户,然后再次导入数据结构,使用rows=n参数。这时候分区表、分区索引、与分区相关的对象将会导入到相同的表结构中

3.再把这些分区表和分区索引移到指定的表空间,使用以下命令
 alter table move partition tablespace ;
 alter index rebuild tablespace ;
 
4.再把数据导入。在导入时要使用ignore=y来忽略创建对象结构的错误

5.最后检查导入的对象是否有效,赋予相应权限,等等。


下面使用例子来说明操作过程


创建相应表空间和用户,赋予相关权限

SQL> conn /as sysdba
Connected.

SQL> create tablespace mtsbaktestd datafile '/data2/oracle/oradata/mtsdb/mtsbaktestd01.dbf' size 5120m
  2  segment space management auto;

Tablespace created.

SQL> alter tablespace mtsbaktestd add datafile '/data2/oracle/oradata/mtsdb/mtsbaktestd02.dbf' size 5120m;

Tablespace altered.

SQL> create user mtsbaktest
  2  identified by mtsbaktest
  3  default tablespace mtsbaktestd;

User created.

SQL> grant dba to mtsbaktest;

Grant succeeded.

SQL> revoke unlimited tablespace from mtsbaktest;

Revoke succeeded.

SQL> alter user mtstest quota unlimited on mtsbaktestd;

User altered.


导出MTSBAK的数据,并导入到MTSBAKTEST用户

exp system wner=mtsbak compress=y file=mtsbak20090326.dmp statistics=none

imp system fromuser=mtsbak touser=mtsbaktest file=mtsbak20090326.dmp rows=n

导入时使用了rows=n参数,除了和分区相关的结构,其他数据结构将会被导入到MTSBAKTESTD表空间


赋予MTSBAKTEST用户unlimited tablespace系统权限,再次导入数据结构

SQL> conn /as sysdba
Connected.
SQL> grant unlimited tablespace to mtsbaktest;

Grant succeeded.

imp system fromuser=mtsbak touser=mtsbaktest file=mtsbak20090326.dmp rows=n

导入后,分区表、分区索引将会导入到相同的表空间

然后登录MTSBAKTEST用户,把分区表、分区索引移到指定表空间(这部分略)。
可以使用SQL命令来自动批量的生成迁移命令,例如

SQL> select 'alter table '||segment_name||' move partition '||partition_name||' tablespace mtsbaktestd;'
from user_segments
where tablespace_name <> 'MTSBAKTESTD' and segment_type = 'TABLE PARTITION';


导入数据

imp system fromuser=mtsbak touser=mtsbaktest ignore=y file=mtsbak20090326.dmp


最后收回DBA、unlimited tablespace权限,赋予相应权限,检查对象状态,等等

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8745319/viewspace-580309/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8745319/viewspace-580309/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值