鄙人遇到实际问题如下:
现有表a:列表分区key(week);
需要改表a:复合分区(range-list)range_key(week),list_key(month)所以遇到关于改变分区规则的问题,因为原表中数据量巨大,所以不能用删表重建的办法!
怎么将简单规则分区改为复合分区?
怎么将列表分区改为范围分区?
请给力赐教啊~~~~
拜求大虾~~
现有表a:列表分区key(week);
需要改表a:复合分区(range-list)range_key(week),list_key(month)所以遇到关于改变分区规则的问题,因为原表中数据量巨大,所以不能用删表重建的办法!
怎么将简单规则分区改为复合分区?
怎么将列表分区改为范围分区?
请给力赐教啊~~~~
拜求大虾~~
------使用联机重定义可以实现,不过两张表必须有主键,操作如下
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>