1,创建表及分区
create table test ( ID VARCHAR2(32), MONTHS VARCHAR2(40), USERID VARCHAR2(20) ) partition by list(MONTHS) ( partition m201404 values('201404'), partition m201405 values('201405') )
2。插入数据
insert into test values('1','201404','1'); insert into test values('2','201405','2'); insert into test values('3','201407','3');
当中。前两条能够成功。
第三条失败 ORA-14400: 插入的分区keyword未映射到不论什么分区
3。加入新的分区
alter table test add partition m201406 values('201407');
4,然后再插入第三条数据成功
最后查询:
select * from TEST;// 全部数据 select * from TEST partition(m201404);//分区m201404里全部数据 select * from TEST partition(m201405); select * from TEST partition(m201406);
5,创建表及列分区并加入默认分区 后期加入新的分区
create table test ( ID VARCHAR2(32), MONTHS VARCHAR2(40), USERID VARCHAR2(20) ) partition by list(MONTHS) ( partition m201404 values('201404'), partition m201405 values('201405'), partition mdefault values(default) ) // 删除mdefault分区 alter table test drop partition mdefault; // 加入新的分区后再加上mdefault分区 alter table test add partition m201406 values('201407'); alter table test add partition mdefault values(default);
6,分区表的查询
select table_name,partition_name from DBA_TAB_PARTITIONS where table_owner='RPT';
备注:对于范围分区(有默认分区的)就不能加入
create table test ( ID VARCHAR2(32), MONTHS VARCHAR2(40), USERID VARCHAR2(20) ) partition by range(MONTHS) ( partition m201404 values less than (201405), partition m201405 values less than (201406), partition mother values less than (maxvalue) ) //以下报错:ORA-14074: 分区界限必须调整为高于最后一个分区界限 alter table test add partition m201406 values less than (201407);
将分区的mother去掉就能够了
create table test ( ID VARCHAR2(32), MONTHS VARCHAR2(40), USERID VARCHAR2(20) ) partition by range(MONTHS) ( partition m201404 values less than (201405), partition m201405 values less than (201406) ) alter table test add partition m201406 values less than (201407);