同事说有一个分区表做分区交换时总是报:
ORA-14097: ALTER TABLE EXCHANGE PARTITION 中的列类型或大小不匹配,而中间表是根据分区表CATS而来,理论上是一样的;
我首先对比了一下这个表的建表SQL,发现中间表除了default不一样外,其他都是一样的,会不会是default导致?于是我重新用分区表的SQL完整建了中间表,这下default也一样了,但仍然报这个错;
网上有文章说主键也要一致,于是加了主键后再试,还是报错,外键也建上,依然;
在ITPUB找到一个案例说如果分区表有unuser的字段,也会报这个错,于是drop unuser的字段(alter table tname drop unused columns),仍然未解决;
还有newkid大师提供了一种场景是分区后再增加了字段,这可能会触发BUG,需要加上跟踪事件语句:
ALTER SESSION SET EVENTS '14529 TRACE NAME CONTEXT FOREVER, LEVEL 2';
交换分区;
我首先对比了一下这个表的建表SQL,发现中间表除了default不一样外,其他都是一样的,会不会是default导致?于是我重新用分区表的SQL完整建了中间表,这下default也一样了,但仍然报这个错;
网上有文章说主键也要一致,于是加了主键后再试,还是报错,外键也建上,依然;
在ITPUB找到一个案例说如果分区表有unuser的字段,也会报这个错,于是drop unuser的字段(alter table tname drop unused columns),仍然未解决;
还有newkid大师提供了一种场景是分区后再增加了字段,这可能会触发BUG,需要加上跟踪事件语句:
ALTER SESSION SET EVENTS '14529 TRACE NAME CONTEXT FOREVER, LEVEL 2';
交换分区;