使用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)