CREATE TABLE BIG_TABLE_T ( SYNC_RELATION_NO NUMBER(10) NOT NULL, SYNC_ACTION NUMBER(2) NOT NULL, SYNC_WHERE VARCHAR2(1000 BYTE), SYNC_DATE DATA ) partition by range (SYNC_DATE) subpartition by hash (SYNC_RELATION_NO) subpartitions 3 store in (dinya_space07,dinya_space08,dinya_space09) (partition date1 values less than (to_date('20130501','YYYYMMDD')), partition date2 values less than (to_date('20140501','YYYYMMDD')), partition date3 values less than (maxvalue) );如果非要HASH分区并且你还要区分时间段的话 可以创建为复合分区 也就是子分区 小弟也是刚学不知道写错没有 大概就是这样
按照你的说法不适合建hash分区,你要清理14年5月份前的数据,需要建立针对时间的 列表分区或者范围分区比较合适。 hash分区建表语句: CREATE TABLE BIG_TABLE_T ( SYNC_RELATION_NO NUMBER(10) NOT NULL, SYNC_ACTION NUMBER(2) NOT NULL, SYNC_WHERE VARCHAR2(1000 BYTE) ) partition by hash(SYNC_RELATION_NO ) partitions 9; (9代表9个分区,你需要分几个分区,就写成几个)
(
SYNC_RELATION_NO NUMBER(10) NOT NULL,
SYNC_ACTION NUMBER(2) NOT NULL,
SYNC_WHERE VARCHAR2(1000 BYTE)
)
PARTITION BY HASH (SYNC_RELATION_NO)
(
Partition SYNC1,
Partition SYNC2,
Partition SYNC3
);
允许用户对不具有逻辑范围的数据进行分区
通过在分区键上执行HASH函数决定存储的分区
将数据平均地分布到不同的分区
散列分区语法:
PARTITION BY HASH (column_name)
PARTITIONS number_of_partitions;
或
PARTITION BY HASH (column_name)
( PARTITION part1 [TABLESPACE tbs1],
PARTITION part2 [TABLESPACE tbs2],
...
PARTITION partN [TABLESPACE tbsN]);
(
SYNC_RELATION_NO NUMBER(10) NOT NULL,
SYNC_ACTION NUMBER(2) NOT NULL,
SYNC_WHERE VARCHAR2(1000 BYTE),
SYNC_DATE DATA
)
partition by range (SYNC_DATE)
subpartition by hash (SYNC_RELATION_NO)
subpartitions 3 store in (dinya_space07,dinya_space08,dinya_space09)
(partition date1 values less than (to_date('20130501','YYYYMMDD')),
partition date2 values less than (to_date('20140501','YYYYMMDD')),
partition date3 values less than (maxvalue)
);如果非要HASH分区并且你还要区分时间段的话 可以创建为复合分区 也就是子分区 小弟也是刚学不知道写错没有 大概就是这样
列表分区或者范围分区比较合适。
hash分区建表语句:
CREATE TABLE BIG_TABLE_T
(
SYNC_RELATION_NO NUMBER(10) NOT NULL,
SYNC_ACTION NUMBER(2) NOT NULL,
SYNC_WHERE VARCHAR2(1000 BYTE)
)
partition by hash(SYNC_RELATION_NO )
partitions 9; (9代表9个分区,你需要分几个分区,就写成几个)