数据库分区表分区未分配导致的一些问题

 
起因:今天是8月16日,数据库的分区表为日分区的格式,分区最晚只分到 8 8 日,现在 8 9 日的数据分到了 P_MAX 里,数据文件这时又不合时宜的满了,导致现在不能往里写数据,现在这个表已经不能用了。
1.我先添加了数据文件:
SQL
ALTER TABLESPACE TBS_APTS_BSVC_CAN ADD DATAFILE 'D:…..TBS_APTS_BSVC_CAN08.DBF' size 10G autoextend on next 2000m;

这时,应用往里P_MAX分区里写今天的数据。
2.我开始从P_MAX里切分P_20140809分区
SQL:
alter table BSVCBUSCANDATA split partition P_MAX at (to_date('2014-08-10','YYYY-MM-DD')) into (partition P_20140809 tablespace tbs_apts_bsvc_can,partition P_MAX);

报:ORA-14080无法按指定的上限来分割分区
在网上搜了了一下,按解释说,这个错误的原因就是:切分的分区P_20140809范围大于P_MAX,这也不可能啊。

3.后来跟一个大哥进行了讨论,决定试试能不能切分明天的分区
SQL:
alter table BSVCBUSCANDATA split partition P_MAX at (to_date('2014-08-17','YYYY-MM-DD'))into (partition P_20140816 tablespace tbs_apts_bsvc_can,partition P_MAX);
                                               注意:这块挺有意思,这里是小于8-17,就是8-16了。
语句执行成功,这时我又往后切分,也成功。

4.但是这样不行,我们势必要把9-15的分区添加上,如果刚开始用P_MAX切,会报错:这次我尝试把刚分出来的16号的,离之前最近的分区切了,这时就可以切了:

alter table BSVCBUSCANDATA split partition P_20140816 at (to_date('2014-08-10','YYYY-MM-DD')) into (partition P_20140809 tablespace tbs_apts_bsvc_can,partition P_20140816);

alter table BSVCBUSCANDATA split partition P_20140816 at (to_date('2014-08-11','YYYY-MM-DD')) into (partition P_20140810 tablespace tbs_apts_bsvc_can,partition P_20140816);


alter table BSVCBUSCANDATA split partition P_20140816 at (to_date('2014-08-12','YYYY-MM-DD')) into (partition P_20140811 tablespace tbs_apts_bsvc_can,partition P_20140816);

总结:
当我们split分区,当使用P_MAX的时候,只能切出今天之后的分区,不能切过去的分区,切完之后,再用离过去最近的将来分区,比如此例是明天的分区,进行切分,才能切出过去的分区。



 









来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25116248/viewspace-1263458/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25116248/viewspace-1263458/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值