oracle表分區增加分區


昨天發現車輛軌跡庫的表分區用完了,連夜加了分區,我們存軌跡的這張表建分區的時候按日期建只到2012-10-15,分區名從TAB_GPSBUSHIS_P1....TAB_GPSBUSHIS_P999,從2012-10-15開始的數據就默認都存在了TAB_GPSBUSHIS_P1000,所以現在的任務就是從2012-10-16開始繼續建分區。

為了分區的序號連續性,我先將maxvalue對應的分區改了個名

alter table tab_gpsbushis rename partition tab_gpsbushis_p1000 to tab_gpsbushis_pmax

 

增加分區的命令

alter table tab_gpsbushis add  partition TAB_GPSBUSHIS_P1000 values less than (TO_DATE(' 2012-10-16 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'));

Woops,報錯了  ORA-14074: partition bound must collate higher than that of the last partition

報這個因為你建了maxvalue的分區,就會報錯(我后來把這個分區的數據轉移掉了,還是不行,所以我想是不是只要建了maxvalue的分區就不能繼續增加分區了)

於是就google,終於找到熱心網友的解決之道,先split,把這里的數據轉移掉,我這里的情況是2012-10-15發現分區不夠了,所以maxvalue對應的分區只存了2012-10-15的軌跡數據(還有一些不合法的日期的數據),我是這樣split的:

alter table TAB_GPSBUSHIS
split partition TAB_GPSBUSHIS_PMAX at (TO_DATE(' 2012-10-16 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
into (partition TAB_GPSBUSHIS_P1000, partition TAB_GPSBUSHIS_PMAX)

如果你2012-10-20發現的,你應該就這樣寫了

alter table TAB_GPSBUSHIS
split partition TAB_GPSBUSHIS_PMAX at (TO_DATE(' 2012-10-21 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
into (partition TAB_GPSBUSHIS_P1000, partition TAB_GPSBUSHIS_PMAX)

再查看表屬性中的分區就會發現多了TAB_GPSBUSHIS_P1000這個分區,

查TAB_GPSBUSHIS_PMAX分區下的數據確實就只剩下些非法數據了,就可以全delete掉了

這時候再執行那個add partition操作還是報同樣的錯,所以我就干脆把maxvalue對應的分區給drop掉了

ALTER TABLE tab_gpsbushis DROP PARTITION tab_gpsbushis_pmax ;

然后再執行add partition操作,ok成功了

然后就拼命加啊,加啊,加到了2012-12-31,就先加到這吧

 

最后又把maxvalue對應的分區加上了,

alter table tab_gpsbushis add partition tab_gpsbushis_pmax values less than (maxvalue).

 

ok,結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM