【发布时间】:2017-01-17 08:12:43
【问题描述】:
我想在 oracle 中使用复合范围列表分区。
使用范围对我来说很清楚。棘手的部分在列表分区上,这就是我的问题所在。
假设我们有一个包含大陆的列。我希望列表分区包含 NOT 欧洲的所有大陆。这里的问题是我无法创建包含除欧洲以外的所有其他大陆的列表分区,因为在某些时候我可能会添加新的大陆。
这样的事情可能吗?
【问题讨论】:
标签: sql oracle11g database-partitioning
我想在 oracle 中使用复合范围列表分区。
使用范围对我来说很清楚。棘手的部分在列表分区上,这就是我的问题所在。
假设我们有一个包含大陆的列。我希望列表分区包含 NOT 欧洲的所有大陆。这里的问题是我无法创建包含除欧洲以外的所有其他大陆的列表分区,因为在某些时候我可能会添加新的大陆。
这样的事情可能吗?
【问题讨论】:
标签: sql oracle11g database-partitioning
来自甲骨文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
);
【讨论】: