【PLSQL】表分区创建后注意事项

场景

Oracle数据库,表为

USER_LOGIN

 

对其中字段 CREATE_DATE 创建了表分区

把表中的创建日期重新修改,提示: ORA-14402: 更新分区关键字列将导致分区的更改 

解决步骤

这是由于更新字段涉及 CREATE_DATE 导致的

这时候其实执行 ALTER TABLE EBILL_INTERCEPT_RECORD DISABLE ROW MOVEMENT; 应该就可以了

但是执行后提示了新的错误: ORA-14406: 更新的分区关键字在最高合法分区关键字之外 

这是由于更新的CREATE_DATE在分区之外了,但是我这个分区是间隔分区,按月自增的

 

排查后发现问题是因为更改的 CREATE_DATE 在表分区之前,这时候无法向前增加分区,只能使用Oracle的SPLIT分区特性

ALTER TABLE USER_LOGIN 
SPLIT PARTITION UL_202501 AT (TO_DATE('2024-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
INTO (PARTITION UL_202412, PARTITION UL_202501;

注意此处INTO的两个参数,一般情况下,前一个应该是新的分区,后一个继续保持老的分区。当然,这个可以根据实际场景改变。

这时候更新,就成功了

 

posted @ 2025-04-16 09:28  onejay  阅读(19)  评论(0)    收藏  举报