資料庫分割槽表分割槽未分配導致的一些問題

wangyiou1988發表於2014-09-04
 
起因:今天是8月16日,資料庫的分割槽表為日分割槽的格式,分割槽最晚只分到88日,現在89日的資料分到了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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章