案例:--表分区-列表分区
--根据客户的省份分区,保存不通省份客户到不同的分区
CREATE table clients(
id INTEGER primary key,
name VARCHAR2(20),
province VARCHAR2(20))
partition by list(province)
(
partition shandong VALUES('山东省'),
partition guangdong VALUES('广东省'),
partition yunnan VALUES('云南省')
);
INSERT into clients VALUES(10,'张三','山东省');
select * from clients;
select * from clients partition(shandong);--'张三'在此分区存在
select * from clients partition(guangdong);
select * from clients partition(yunnan);
1.添加表分区
ALTER TABLE table ADD PARTITION
如上案例增加河北省
--管理表空间-列表分区增加省份
ALTER TABLE clients ADD partition hebei VALUES('河北省')
storage(INITIAL 10K next 20K) tablespace tbsp_1
nologging;
--模拟数据测试结果
2.合并表分区
将默认的命名那个分区合并
alter table person coalesce partition;
3.删除分区
表前提:--------------------------------------------------------------------------------
CREATE TABLE ware_retail_part(
id INTEGER primary key,
retail_date date,
ware_name VARCHAR2(50)
)
--范围分区
partition by RANGE(retail_date)
(
--第一季度
partition par_01 VALUES less than(to_date('2011-04-01','yyyy-mm-dd')) tablespace TBSP_1,
--第二季度
partition par_02 VALUES less than(to_date('2011-07-01','yyyy-mm-dd')) tablespace TBSP_1,
--第三季度
partition par_03 VALUES less than(to_date('2011-10-01','yyyy-mm-dd')) tablespace TBSP_2,
--第四季度
partition par_04 VALUES less than(to_date('2012-01-01','yyyy-mm-dd')) tablespace TBSP_2
);
INSERT into ware_retail_part values(1,to_date('2011-12-20','yyyy-mm-dd'),'平板电脑');
select * from ware_retail_part partition(par_04);
-------------------------------------------------------------------------------
如果分区包含数据,删除表分区后,全局索引标识不可用,需要重新rebuild下
--创建索引
CREATE index ware_index1
on ware_retail_part(retail_date);
--删除表分区4
ALTER TABLE ware_retail_part drop partition par_04
--重建索引
alter index ware_index1 rebuild;