使用 ALTER TABLE… DROP SUBPARTITION 命令可删除二级分区定义及存储在该二级分区中的数据。语法如下:

ALTER TABLE table_name DROP SUBPARTITION subpartition_name;

参数

参数 说明
table_name 分区表的名称(可能是 schema 限定的)。
subpartition_name 要删除的二级分区的名称。

说明

ALTER TABLE… DROP SUBPARTITION 命令删除二级分区及存储在该二级分区中的数据。要使用 DROP SUBPARTITION 子句,您必须是分区根的所有者、拥有表的组的成员或具有超级用户或管理特权。

示例 - 删除二级分区

后面的示例删除 sales 表的二级分区。使用以下命令创建 sales 表:

CREATE TABLE sales
(
  dept_no     number,
  part_no     varchar2,
  country     varchar2(20),
  date    date,
  amount  number
)PARTITION BY RANGE(date)   SUBPARTITION BY LIST (country)   (     PARTITION first_half_2012 VALUES LESS THAN('01-JUL-2012')     (
      SUBPARTITION europe VALUES ('ITALY', 'FRANCE'),
      SUBPARTITION americas VALUES ('CANADA', 'US'),
      SUBPARTITION asia VALUES ('PAKISTAN', 'INDIA')
    ),
    PARTITION second_half_2012 VALUES LESS THAN('01-JAN-2013')    );

通过查询 ALL_TAB_SUBPARTITIONS 视图,显示二级分区名称:

acctg=# SELECT subpartition_name, high_value FROM ALL_TAB_SUBPARTITIONS;
 subpartition_name |             high_value
-------------------+-------------------------------------
 ASIA              | FOR VALUES IN ('PAKISTAN', 'INDIA')
 AMERICAS          | FOR VALUES IN ('CANADA', 'US')
 EUROPE            | FOR VALUES IN ('ITALY', 'FRANCE')
 SYS0101           | DEFAULT
(4 rows)

要从 sales 表中删除 americas 二级分区,请调用以下命令:

ALTER TABLE sales DROP SUBPARTITION americas;

通过查询 ALL_TAB_SUBPARTITIONS 视图,可以看到该二级分区已被成功删除。

acctg=# SELECT subpartition_name, high_value FROM ALL_TAB_SUBPARTITIONS;
 subpartition_name |             high_value
-------------------+-------------------------------------
 ASIA              | FOR VALUES IN ('PAKISTAN', 'INDIA')
 EUROPE            | FOR VALUES IN ('ITALY', 'FRANCE')
 SYS0101           | DEFAULT
(3 rows)