ORA-14296: Table block size mismatch in ALTER TABLE EXCHANGE [SUB]PARTITION
Cause: The block sizes of the two tables specified in the ALTER TABLE EXCHANGE [SUB]PARTITION statement are different. For index organized tables, either the block sizes of the index or the overflow (or both) do not match.
Action: Ensure that the block sizes of the tables involved in the ALTER TABLE EXCHANGE [SUB]PARTITION statement are the same. For index organized tables, ensure that the block sizes of both the index and the overflow of the two tables match.
ORA-14296表示在对表进行EXCHANGE分区操作时数据块大小不一致。官方解释是指:在将一个分区或分区内一个子分区与另一个表按行交换时,发生源表和目标表中数据块大小不匹配。
常见案例是,在使用EXCHANGE分区操作迁移数据时,如果源表和目标表的数据库块大小不同,则可能发生此错误。
1、先查看源表和目标表的块大小,确保大小完全相同。
2、检查表空间管理中是否配置了相等的块大小。
3、如果源表的块大小比目标表的块大小小,可以尝试使用 ALTER TABLE X MODIFY DEFAULT STORAGE [TEMPSEG_EXTENT]参数来修改表定义,使其与目标表大小保持一致,然后重新尝试EXCHANGE操作。
4、如果源表的块大小大于目标表的块大小,请在表空间系统配置中调整块大小,以便源表和目标表在创建新分区时统一使用,然后重新尝试EXCHANGE操作。
5、如果调整过块大小仍未解决问题,则可用SELECT * FROM TABLE ORDER BY COLUMN来转移数据,然后使用ALTER TABLE DROP PARTITION从源表中删除分区。