鄙人遇到实际问题如下:
现有表a:列表分区key(week);
需要改表a:复合分区(range-list)range_key(week),list_key(month)所以遇到关于改变分区规则的问题,因为原表中数据量巨大,所以不能用删表重建的办法!
怎么将简单规则分区改为复合分区?
怎么将列表分区改为范围分区?
请给力赐教啊~~~~
拜求大虾~~

解决方案 »

  1.   

    Oracle提供的在线重定义表的功能,不知道行不?
      

  2.   

    参考,涂抹ORACLE http://space.itpub.net/7607759/viewspace-324106我也没有改过。。一般定下来,很少去改了,除非你也该应用程序
      

  3.   


    ------使用联机重定义可以实现,不过两张表必须有主键,操作如下
    SQL> 
    ------建立一张和partition_test的表结构相仿(partition_test_t),在这张表结构上建立好你的复合分区
    SQL> create table tiny.partition_test
      2  (
      3   id number primary key
      4  )
      5  partition by range(id)
      6  (
      7  partition part01 values less than (10),
      8  partition part02 values less than (20),
      9  partition part03 values less than (30),
     10  partition part04 values less than (40),
     11  partition partmax values less than (maxvalue)
     12  )
     13  ;Table createdSQL> 
    SQL> create table tiny.partition_test_t
      2  (
      3   id number primary key
      4  )
      5  partition by hash(id) partitions 12
      6  ;Table createdSQL> execute dbms_redefinition.can_redef_table('TINY','PARTITION_TEST');PL/SQL procedure successfully completedSQL> execute dbms_redefinition.start_redef_table('TINY','PARTITION_TEST','PARTITION_TEST_T');PL/SQL procedure successfully completedSQL> execute dbms_redefinition.finish_redef_table('TINY','PARTITION_TEST','PARTITION_TEST_T');PL/SQL procedure successfully completedSQL> 
      

  4.   

    上面的例子把一个范围分区变为了hash分区。