ALTER TABLE… MOVE PARTITION_与 Oracle 数据库兼容的分区命令_表分区_兼容Oracle数据库开发指南_云数据库PolarDB
ALTER TABLE… MOVE PARTITION
使用 ALTER TABLE… MOVE PARTITION 命令将分区移动到另一个表空间。该命令具有两种形式。
第一种形式将分区移动到新的表空间:
ALTER TABLE table_name
MOVE PARTITION partition_name
TABLESPACE tablespace_name;
第二种形式将二级分区移动到新的表空间:
ALTER TABLE table_name
MOVE SUBPARTITION subpartition_name
TABLESPACE tablespace_name;
说明
ALTER TABLE…MOVE PARTITION 命令将分区从其当前的表空间移动到另一个表空间。ALTER TABLE… MOVE PARTITION 命令可以移动按 LIST、RANGE 或 HASH 分区的表的分区。
上述相同行为适用于与 MOVE SUBPARTITION 子句一起使用的 subpartition_name。
您必须拥有表才能调用 ALTER TABLE… MOVE PARTITION 或 ALTER TABLE… MOVE SUBPARTITION。
参数
参数 | 说明 |
---|---|
table_name | 分区或二级分区所在的表的名称(可能是 schema 限定的)。 |
partition_name | 要移动的分区的名称。 |
subpartition_name | 要移动的二级分区的名称。 |
tablespace_name | 分区或二级分区将移动到的表空间的名称。 |
示例 - 将分区移动到另一个表空间
以下示例将 sales 表的分区从一个表空间移动到另一个表空间。首先,使用以下命令创建 sales 表:
CREATE TABLE sales
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
amount number
)
PARTITION BY RANGE(date)
(
PARTITION q1_2012 VALUES LESS THAN ('2012-Apr-01'),
PARTITION q2_2012 VALUES LESS THAN ('2012-Jul-01'),
PARTITION q3_2012 VALUES LESS THAN ('2012-Oct-01'),
PARTITION q4_2012 VALUES LESS THAN ('2013-Jan-01') TABLESPACE ts_1,
PARTITION q1_2013 VALUES LESS THAN ('2013-Mar-01') TABLESPACE ts_2
);
查询 ALL_TAB_PARTITIONS 视图确认分区位于预期的服务器和表空间中:
acctg=# SELECT partition_name, tablespace_name FROM ALL_TAB_PARTITIONS;
partition_name | tablespace_name
----------------+-----------------
Q1_2012 |
Q2_2012 |
Q3_2012 |
Q4_2012 | TS_1
Q1_2013 | TS_2
(5 rows)
在准备好目标表空间后,调用 ALTER TABLE… MOVE PARTITION 命令来将 q1_2013 分区从名为 ts_2 的表空间移动到名为 ts_3 的表空间:
ALTER TABLE sales MOVE PARTITION q1_2013 TABLESPACE ts_3;
查询 ALL_TAB_PARTITIONS 视图显示移动成功:
acctg=# SELECT partition_name, tablespace_name FROM ALL_TAB_PARTITIONS;
partition_name | tablespace_name
----------------+-----------------
Q1_2012 |
Q2_2012 |
Q3_2012 |
Q4_2012 | TS_1
Q1_2013 | TS_3
(5 rows)
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论