使用ALTER TABLE…MOVE PARTITION命令可將分區(qū)或子分區(qū)移動到不同的表空間中。

語法介紹

ALTER TABLE…MOVE PARTITION命令有兩種形式:
  • 第一種形式是將分區(qū)移動到一個新的表空間中:
    ALTER TABLE table_name 
      MOVE PARTITION partition_name 
       TABLESPACE tablespace_name;
  • 第二種形式是將子分區(qū)移動到一個新的表空間中:
    ALTER TABLE table_name 
      MOVE SUBPARTITION subpartition_name 
       TABLESPACE tablespace_name;
ALTER TABLE…MOVE PARTITION命令的語法在分區(qū)和子分區(qū)之間沒有任何區(qū)別。
  • 您可以使用MOVE PARTITION 或 MOVE SUBPARTITION子句來移動分區(qū)。
  • 您可以使用MOVE PARTITION 或 MOVE SUBPARTITION子句來移動子分區(qū)。

描述

ALTER TABLE…MOVE PARTITION命令用于從分區(qū)或子分區(qū)當前的表空間中將其移動到不同的表空間。您必須先擁有一個表,才能調(diào)用ALTER TABLE…MOVE PARTITION 或 ALTER TABLE…MOVE SUBPARTITION。

參數(shù)

參數(shù) 參數(shù)說明
table_name 分區(qū)所屬的表名稱(可以采用模式限定的方式引用)。
partition_name 要移動的分區(qū)或子分區(qū)的名稱。
tablespace_name 分區(qū)或子分區(qū)將要移動到的表空間名稱。

示例 – 將分區(qū)移動到不同的表空間中

下列示例將表sales的分區(qū)從一個表空間移動到另一個表空間。首先,您要使用這個命令創(chuàng)建表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的查詢確認了分區(qū)是否存儲在既定的服務器之上和表空間之中:
acctg=# SELECT partition_name, tablespace_name FROM ALL_TAB_PARTITIONS;
 partition_name | tablespace_name 
----------------+-------------+-----------------
 q1_2013        | ts_2
 q4_2012        | ts_1
 q3_2012        | 
 q2_2012        | 
 q1_2012        | 
(5 rows)
在準備目標表空間之后,您就可以通過調(diào)用ALTER TABLE…MOVE PARTITION命令從表空間ts_2中將分區(qū)q1_2013移動到表空間ts_3中:
ALTER TABLE sales MOVE PARTITION q1_2013 TABLESPACE ts_3; 
對視圖ALL_TAB_PARTITIONS的查詢顯示了已成功執(zhí)行移動操作:
acctg=# SELECT partition_name, tablespace_name FROM ALL_TAB_PARTITIONS;
 partition_name | tablespace_name 
----------------+-----------------
 q1_2013        | ts_3
 q4_2012        | ts_1
 q3_2012        | 
 q2_2012        | 
 q1_2012        | 
(5 rows)