首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

一周以来的工作总结-oracle分区的迁徙

2012-11-05 
一周以来的工作总结--oracle分区的迁移这周很平静,没有客户的纷纷扰扰。前一阵子写了一些有关数据表的压缩

一周以来的工作总结--oracle分区的迁移

     这周很平静,没有客户的纷纷扰扰。

     前一阵子写了一些有关数据表的压缩的东西,我现在感觉把数据压缩了迁移走,或者直接迁移走也是一种不错的办法。

     现在有这样一张表:

     

一周以来的工作总结-oracle分区的迁徙
CREATE TABLE TABLE_1 (   MONTH_ID VARCHAR2(10),   AREA_ID VARCHAR2(10),   SERI NUMBER)PARTITION BY RANGE(MONTH_ID)subpartition by list (AREA_ID)  subpartition template(      subpartition subpart_290 values ('290'),      subpartition subpart_919 values ('919'),      subpartition subpart_917 values ('917'),      subpartition subpart_910 values ('910'),      subpartition subpart_913 values ('913'),      subpartition subpart_916 values ('916'),      subpartition subpart_915 values ('915'),      subpartition subpart_914 values ('914'),      subpartition subpart_911 values ('911'),      subpartition subpart_912 values ('912'),      subpartition subpart_default values (default)  )(   PARTITION PART_1 VALUES LESS THAN('201210'),   PARTITION PART_2 VALUES LESS THAN('201211'),   PARTITION PART_3 VALUES LESS THAN('201212'))
一周以来的工作总结-oracle分区的迁徙

       数据是这样的:

       

一周以来的工作总结-oracle分区的迁徙

一周以来的工作总结-oracle分区的迁徙

       现在可以将这个表的month_id为“201209”的数据迁移到users表空间去:

       

ALTER TABLE table_1 MOVE PARTITION part_1 TABLESPACE USERS;

      

一周以来的工作总结-oracle分区的迁徙

      出错了,在网上查了一下应该要先把子分区移走。

      

一周以来的工作总结-oracle分区的迁徙
ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_290 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_910 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_911 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_912 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_913 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_914 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_915 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_916 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_917 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_919 TABLESPACE USERS;
一周以来的工作总结-oracle分区的迁徙

     然后在执行下面的:

     

ALTER TABLE table_1 MODIFY DEFAULT ATTRIBUTES FOR PARTITION part_1TABLESPACE USERS;

     这是结果:

     

一周以来的工作总结-oracle分区的迁徙

      现在这个分区被转移到了users中。

      如果没有子分区会是什么样?重建这个表,这次不要子分区,只是按照month_id分区,然后执行转移语句:

ALTER TABLE table_1 MOVE PARTITION part_1 TABLESPACE USERS;

      直接成功。这就说明了转移带有子分区的分区表的时候,应该从最低级的子分区开始转移,然后转移上一级的分区。

      那么压缩呢,将上面这个表的part_1压缩,语句如下:

ALTER TABLE table_1 MOVE PARTITION part_1 COMPRESS;

      结果如下:

      

一周以来的工作总结-oracle分区的迁徙

       建立有子分区的表,然后执行刚才的语句:

       

一周以来的工作总结-oracle分区的迁徙

       相同的问题再次出现。也就是说得把子分区先压缩了。但是我今天看到了一个更好用的语句:

       

ALTER TABLE table_1 MODIFY PARTITION part_1 COMPRESS;

     执行以后结果: 

一周以来的工作总结-oracle分区的迁徙

       这样就好了。

       

       今天建立表分区的时候有点忘了语句的写法,这是不对的,这里记录一下:

       

CREATE TABLESPACE data_warehouse  DATAFILE 'D:\app\user\oradata\PC1\STORAGE2.DBF'  SIZE 50M AUTOEXTEND ON NEXT 50M  MAXSIZE 2048M;

     将用户默认表空间改成刚才建立的表空间:

      

ALTER USER wings DEFAULT TABLESPACE data_warehouse;

一周以来的工作总结-oracle分区的迁徙

      欢迎各位oracle爱好者加入我们的交流群:120244471。

热点排行