表分区管理

案例:--表分区-列表分区
--根据客户的省份分区,保存不通省份客户到不同的分区
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;

--模拟数据测试结果

表分区管理_第1张图片

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;

你可能感兴趣的:(sql,数据库)