Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带子分区的分区语法_Sql_Oracle - Fatal编程技术网

Sql 带子分区的分区语法

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

我的表结构是这样的,我是分区新手,需要从2021年3月开始为表添加新分区几个月,需要正确的语法,我尝试过谷歌,但没有找到添加分区和子分区的例子。Database 10g

因为您有一个模板,所以添加分区对子分区是透明的:

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 ...