oracel表的分区

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: 插入的分区关键字未映射到任何分区

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值