从oracle分区

时间:2017-01-17 08:12:43

标签: sql oracle11g database-partitioning

我想在oracle中使用复合范围列表分区。

使用范围对我来说非常清楚。棘手的部分是在列表分区上,这是我有问题的地方。

我们假设我们有一个与各大洲的专栏。我希望列表分区包含 NOT 欧洲的所有大陆。这里的问题是我不能创建一个列表分区,包括除欧洲以外的所有其他大陆,因为在某些时候我可能会添加新的大陆。

这样的事情可能吗?

1 个答案:

答案 0 :(得分:2)

来自Oracle documentation

  

使用列表分区,之间没有明显的顺序感   分区。您还可以为行指定默认分区   不映射到任何其他分区的映射。

基于以上所述,您可以创建两个分区,一个用于欧洲,另一个用于其他分区,并将后者设置为默认值。 通过这种方式,您可以将欧洲数据放在一个分区中,除欧洲以外的任何其他分区都可以进入默认分区。

以下是

的示例
CREATE TABLE sample_regional_sales
      (deptno number, item_no varchar2(20),
       txn_date date, txn_amount number, state varchar2(2))
  PARTITION BY RANGE (txn_date)
    SUBPARTITION BY LIST (state)
      (PARTITION q1_1999 VALUES LESS THAN (TO_DATE('1-APR-1999','DD-MON-YYYY'))
          TABLESPACE tbs_1
         (SUBPARTITION q1_1999_northwest VALUES ('OR', 'WA'),
          SUBPARTITION q1_1999_southwest VALUES ('AZ', 'UT', 'NM'),
          SUBPARTITION q1_1999_northeast VALUES ('NY', 'VM', 'NJ'),
          SUBPARTITION q1_1999_southeast VALUES ('FL', 'GA'),
          SUBPARTITION q1_others VALUES (DEFAULT) TABLESPACE tbs_4
         ),
       PARTITION q2_1999 VALUES LESS THAN ( TO_DATE('1-JUL-1999','DD-MON-YYYY'))
          TABLESPACE tbs_2
         (SUBPARTITION q2_1999_northwest VALUES ('OR', 'WA'),
          SUBPARTITION q2_1999_southwest VALUES ('AZ', 'UT', 'NM'),
          SUBPARTITION q2_1999_northeast VALUES ('NY', 'VM', 'NJ'),
          SUBPARTITION q2_1999_southeast VALUES ('FL', 'GA'),
          SUBPARTITION q2_1999_northcentral VALUES ('SD', 'WI'),
          SUBPARTITION q2_1999_southcentral VALUES ('OK', 'TX')
         ),
       PARTITION q3_1999 VALUES LESS THAN (TO_DATE('1-OCT-1999','DD-MON-YYYY'))
          TABLESPACE tbs_3
         (SUBPARTITION q3_1999_northwest VALUES ('OR', 'WA'),
          SUBPARTITION q3_1999_southwest VALUES ('AZ', 'UT', 'NM'),
          SUBPARTITION q3_others VALUES (DEFAULT) TABLESPACE tbs_4
         ),
       PARTITION q4_1999 VALUES LESS THAN ( TO_DATE('1-JAN-2000','DD-MON-YYYY'))
          TABLESPACE tbs_4
      );

source