问题现象
通过分区交换的形式,将普通表数据转换到分区表中时,出现错误。
示例如下:
删除普通表的 OMS 伪列与唯一索引
ALTER TABLE wt_part_change_single1 DROP INDEX UK_DEAL_CHARGE_ORDER_KM_OMS_ROWID; ALTER TABLE wt_part_change_single1 DROP COLUMN OMS_OBJECT_NUMBER, DROP COLUMN OMS_RELATIVE_FNO, DROP COLUMN OMS_BLOCK_NUMBER, DROP COLUMN OMS_ROW_NUMBER;执行分区交换
ALTER TABLE wt_part_change_omspartitioned1 EXCHANGE PARTITION p0_202509 agen WITH TABLE wt_part_change_single1 WITHOUT VALIDATION;返回报错信息如下:
ERROR 1235 (0A000): Table has drop column instant, exchange partition not supported
问题原因
如果表中带有 instant 列,会导致交换失败。
适用版本
OceanBase 数据库 V4.x 版本
解决方法
删除伪列和唯一索引,等待数据重整。
如果想要彻底移除标记删除列,需要执行 ALTER TABLE TABLE_NAME FORCE 命令等待数据重整。