oracel表的分区

来源:互联网 发布:ubuntu获取管理员权限 编辑:程序博客网 时间:2024/06/05 10:17

1,创建表及分区

create table test(IDVARCHAR2(32),MONTHSVARCHAR2(40),USERIDVARCHAR2(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: 插入的分区关键字未映射到任何分区

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);


0 0
原创粉丝点击