Han*_*örr 7 oracle partitioning oracle11g database-partitioning
我正在使用带有区间分区的oracle 11表,并像这样列出子分区(简化):
CREATE TABLE LOG
(
ID NUMBER(15, 0) NOT NULL PRIMARY KEY
, MSG_TIME DATE NOT NULL
, MSG_NR VARCHAR2(16 BYTE)
) PARTITION BY RANGE (MSG_TIME) INTERVAL (NUMTOYMINTERVAL (1,'MONTH'))
SUBPARTITION BY LIST (MSG_NR)
SUBPARTITION TEMPLATE (
SUBPARTITION login VALUES ('FOO')
, SUBPARTITION others VALUES (DEFAULT)
)
(PARTITION oldvalues VALUES LESS THAN (TO_DATE('01-01-2010','DD-MM-YYYY')));
Run Code Online (Sandbox Code Playgroud)
如何在不知道子系统的(系统生成的)名称的情况下删除特定月份的特定子分区?有一个语法"alter table ... drop subpartition for(subpartition_key_value,...)"但我没有看到指定我删除子分区的月份的方法.该分区管理指南没有给出任何的例子,无论是.8}
事实证明,“subpartition for”语法确实有效,尽管这似乎是 Oracle 不想告诉您的秘密。:-)
ALTER TABLE TB_LOG_MESSAGE DROP SUBPARTITION FOR
(TO_DATE('01.02.2010','DD.MM.YYYY'), 'FOO')
Run Code Online (Sandbox Code Playgroud)
这将删除包含 MSG_TIME 2010/02/01 和 MSG_NR FOO 的子分区。(不一定存在具有精确的 MSG_TIME 和 MSG_NR 的实际行。但是,如果不存在这样的子分区,则会引发错误。)
| 归档时间: |
|
| 查看次数: |
25131 次 |
| 最近记录: |