Sql 带子分区的分区语法
我的表结构是这样的,我是分区新手,需要从2021年3月开始为表添加新分区几个月,需要正确的语法,我尝试过谷歌,但没有找到添加分区和子分区的例子。Database 10g因为您有一个模板,所以添加分区对子分区是透明的:Sql 带子分区的分区语法,sql,oracle,Sql,Oracle,我的表结构是这样的,我是分区新手,需要从2021年3月开始为表添加新分区几个月,需要正确的语法,我尝试过谷歌,但没有找到添加分区和子分区的例子。Database 10g因为您有一个模板,所以添加分区对子分区是透明的: col1 .... col2 .... col3 .... col4 .... PARTITION BY RANGE(DATE_KEY) SUBPARTITION BY LIST(REGION_KEY) SUBPARTITION TEMPLATE (SUBPARTITION A
col1 ....
col2 ....
col3 ....
col4 ....
PARTITION BY RANGE(DATE_KEY)
SUBPARTITION BY LIST(REGION_KEY)
SUBPARTITION TEMPLATE
(SUBPARTITION A VALUES (1) TABLESPACE X,
SUBPARTITION B VALUES(3) TABLESPACE X,
SUBPARTITION C VALUES (8) TABLESPACE X)
(PARTITION MON_JAN_2012 VALUES LESS THAN (1000)
TABLESPACE X
PCTFREE 10
INITRANS 1
MAXTRANS 255
NOLOGGING
(SUBPARTITION A VALUES (1) TABLESPACE X,
SUBPARTITION B VALUES(3) TABLESPACE X,
SUBPARTITION C VALUES (8) TABLESPACE X),
PARTITION MON_FEB_2012 VALUES LESS THAN (2000)
TABLESPACE X PCTFREE 10
INITRANS 1
MAXTRANS 255
NOLOGGING
(SUBPARTITION A VALUES (1) TABLESPACE X,
SUBPARTITION B VALUES(3) TABLESPACE X,
SUBPARTITION C VALUES (8) TABLESPACE X)
(这将自动为新分区创建子分区)
编辑:如果您没有模板,您应该手动创建子分区:
alter table your_table add partition mon_mar_2012 values less than (3000);
如果您使用以月命名的分区按日期进行分区,为什么RANGE VALUES子句指定为数字而不是日期?表结构就是这样,我们为每个日期生成一个unqiue值。它是日期的整数值。工作起来很有魅力。若模板不可用,那个么每次我都需要定义子分区,对吗?@FlorinGhita若我有250个范围分区怎么办。包含250条alter语句并向这些分区添加相同的子分区不是最佳解决方案?@SomeJavaGuy您尝试过修改模板吗?(添加250个子分区不是问题。只需添加一次,而不是每天。)
ALTER TABLE your_table MODIFY PARTITION partition
ADD SUBPARTITION subpartition_name ...