ORA-42035: cannot online redefine IOT table “string”.”string” with CONS_USE_ROWID
Cause: An attempt was made to redefine an IOT table with CONS_USE_ROWID.
Action: Do not attempt to online redefine an IOT table with CONS_USE_ROWID.
ORA-42035错误表明不能线上重新定义IOT(Index-Organized Table)表“string.string”并使用CONS_USE_ROWID。
错误说明:
ORA-42035:无法线上重定义IOT(索引组织表)表“string.string”并使用CONS_USE_ROWID,因为IOT将在重定义时更改记录ID。利用CONS_USE_ROWID参数可以确保IOT表重定义不会丢失任何记录,但无法在当前情况下实现,可能是因为表空间布局没有更新,表损坏或者当前事务过时无法继续执行。
ORA-42035错误最常见的情况是用户试图在索引组织表上线上进行重定义,且表空间布局有时候可能没有更新。 事务过时时也可能导致ORA-42035错误,这是因为索引组织表的重定义太慢,而事务无法继续执行。此外,当IOT存在损坏时,也可能发生ORA-42035错误。
解决方法:
要解决ORA-42035错误,请首先验证IOT表未损坏,而后确认表空间布局是否能更新,最后检查事务是否太新而无法继续执行。
如果以上检查不能解决ORA-42035错误,可以尝试离线重定义IOT表,然后再次尝试线上重定义。
应该记住,在重定义索引组织表时,IOT表的列定义和索引定义都不能改变。 因此,在有任何可疑的情况下,最好在更改IOT结构之前,先备份IOT表来确保不损坏数据。