使用ALTER TABLE…MERGE PARTITION命令可以将两个分区合并为一个新分区,新分区中包含原有两个分区的内容。
               
说明 
                     
               - 您必须是表的所有者或拥有表的管理权限才能执行该语句。
 - 该SQL命令仅支持在LIST分区表和RANGE分区表中使用,不支持在HASH分区表中使用。
 - 如果表中已经创建索引,将在新分区中也创建该索引。
 
语法
ALTER TABLE table_name MERGE PARTITIONS
        partition_name , partition_name 
        INTO PARTITION  new_part [TABLESPACE tablespace_name] ;参数
| 参数 | 说明 | 
|---|---|
table_name | 
                           分区表的名称,可指定Schema。 | 
partition_name | 
                           需要合并的两个分区名称,以英文逗号(,)分隔。 | 
new_part | 
                           合并后新分区的名称。
                               分区名称在所有分区和子分区中必须唯一。  | 
                        
tablespace_name | 
                           指定新分区将驻留的表空间。
                               如果未指定表空间,则新分区将创建在默认表空间中。  | 
                        
示例
创建一个名为sales的分区表,并在表中插入测试数据,示例如下:
                  
CREATE TABLE sales
(
  dept_no     number,   
  part_no     varchar2,
  country     varchar2(20),
  date        date,
  amount      number
)
PARTITION BY LIST(country)
(
  PARTITION europe VALUES('FRANCE', 'ITALY'),
  PARTITION asia VALUES('INDIA', 'PAKISTAN'),
  PARTITION americas VALUES('US', 'CANADA')
);
INSERT INTO sales VALUES
  (10, '4519b', 'FRANCE', '17-Jan-2012', '45000'),
  (20, '3788a', 'INDIA', '01-Mar-2012', '75000'),
  (40, '9519b', 'US', '12-Apr-2012', '145000'),
  (20, '3788a', 'PAKISTAN', '04-Jun-2012', '37500'),
  (40, '4577b', 'US', '11-Nov-2012', '25000'),
  (30, '7588b', 'CANADA', '14-Dec-2012', '50000'),
  (30, '9519b', 'CANADA', '01-Feb-2012', '75000'),
  (30, '4519b', 'CANADA', '08-Apr-2012', '120000'),
  (40, '3788a', 'US', '12-May-2012', '4950'),
  (10, '9519b', 'ITALY', '07-Jul-2012', '15000'),
  (10, '9519a', 'FRANCE', '18-Aug-2012', '650000'),
  (10, '9519b', 'FRANCE', '18-Aug-2012', '650000'),
  (20, '3788b', 'INDIA', '21-Sept-2012', '5090'),
  (40, '4788a', 'US', '23-Sept-2012', '4950'),
  (40, '4788b', 'US', '09-Oct-2012', '15000'),
  (20, '4519a', 'INDIA', '18-Oct-2012', '650000'),
  (20, '4519b', 'INDIA', '2-Dec-2012', '5090');将americas分区拆分成us和canada两个分区,示例如下:
                  
ALTER TABLE sales SPLIT PARTITION americas 
  VALUES ('US')
  INTO (PARTITION us, PARTITION canada);将us分区和canada分区合并到一个新分区new_americas,示例如下:
                  
ALTER TABLE sales MERGE PARTITIONS us, canada
  INTO PARTITION new_americas;