最近總有同事反應這個問題,問題很簡單,就是字面意思,說的是插入的數據沒有相對應的分區來存儲,但是奇怪的是這些表建立時都是以間隔分區(INTERVAL)分區的方式建立的,按理說新的數據進來時會自動創建新的分區來存儲數據,不應該再有14400錯誤。
看了下建表語句,發現建立分區時partition by range(col_name)下面並沒有INTERVAL關鍵字,問題出現了,建表的時候明明指定了INTERVAL分區,為什么在plsql中查看建表語句INTERVAL消失了呢,做了下測試,新建了一個range分區表,插入數據后會提示14400錯誤,但是對interval插入數據就不會提示錯誤,所以我的猜想是雖然建表語句中並未出現interval關鍵字,但是interval分區還是不變的,具體為什么不顯示,有待考證。
文章開頭說的問題的答案就很明顯了,是同事在創建分區表的時候直接復制的建表語句,並為新增interval關鍵字,所以他本意想建的是interval分區,但是建成了range分區,解決方法也很簡單,一個alter就ok了,會將原有的range轉換為interval
ALTER TABLE table_name SET INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));