Oracle 12c执行ALTER TABLE改分区表报ORA-14006无效分区名问题
问题排查与解决方案
你遇到的ORA-14006: invalid partition name报错由SQL语句的语法错误直接导致,具体原因和修复方案如下:
错误诱因
原ALTER语句的分区定义块存在两处语法冗余:
- 分区配置项
store in (ipr_tbl)末尾多了多余的逗号,Oracle会将逗号后续内容解析为新的分区定义,因没有合法的分区名配置触发报错 to_date函数的入参字符串开头多了一个无效空格,可能导致日期解析结果不符合预期
修正后的SQL语句
alter table big_table modify partition by range (bt_date) interval(numtoyminterval(1, 'MONTH')) subpartition by hash (bt_id) ( partition nn_st_p1 values less than (to_date('2019-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) subpartitions 4 store in (ipr_tbl) ) online;
执行前注意事项
- 请先确认表空间
ipr_tbl存在且有足够的存储空间容纳全表数据 - 当前表的主键仅包含
bt_id字段,未包含分区键bt_date,执行转换前需要先删除原有主键,新建包含bt_id和bt_date的联合主键,否则会触发主键约束相关的报错 - 执行操作前建议先对全表进行备份,避免数据丢失
内容的提问来源于stack exchange,提问作者Vilius Gaidelis
相关产品推荐
相关产品推荐

