exchange partition(轉)

kuqlan發表於2012-08-13

線上重定義表可以將一個非分割槽錶轉換成一個分割槽表。使用exchange split partition 也可以將一個非分割槽錶轉換為分割槽表。後者相比較前者,因為不受要轉換的資料量影響,因此也更方便、快捷一些。

exchange partition 操作能將一個分割槽表的一個分割槽和另一張表的資料互換,這裡的互換是segment 頭部資訊的修改,資料block 並不做改動,因此,和資料量無關,速度會非常快;完成後,再可以按照需要將分割槽具體split 成多個分割槽。

[@more@]

步驟:

1.建立一個空的,只有一個分割槽的同構分割槽表

2.exchange partition with table 來互換資料

3.split 分割槽表的分割槽為合適的個數

-- 建立非分割槽表

create table test_objects as select * from user_objects;

-- 建立空的分割槽表

create table test_part_objects

partition by range(object_id)

(partition max_data values less than (maxvalue))

as select * from test_objects where 1=2;

select count(*) from test_objects;

1579

select count(*) from test_part_objects;

0

-- 執行exchange partition操作

alter table test_part_objects exchange partition max_data with table test_objects;

--分割槽表中有資料了,原表沒有了資料

select count(*) from test_objects;

0

select count(*) from test_part_objects;

1579

select count(*) from test_part_objects partition(max_data);

1579

--split分拆分割槽

alter table test_part_objects split partition max_data

at (54000) into (partition part_54000,partition max_data);

select count(*) from test_part_objects partition(max_data);

172

-- 再次執行exchange partition,將max_data分割槽中的資料交換到test_objects

alter table test_part_objects exchange partition max_data with table test_objects;


源文件 <http://space.itpub.net/17012874/viewspace-697412>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1059160/,如需轉載,請註明出處,否則將追究法律責任。

相關文章