【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的两个参数,一般情况下,前一个应该是新的分区,后一个继续保持老的分区。当然,这个可以根据实际场景改变。
这时候更新,就成功了