删除表标识会导致Oracle 12c上出现ORA-00600错误

我的Oracle DB版本是12.1.0.2.0.

我很难删除列标识.还试图删除列并使用purge命令删除表,但每次我得到相同的Oracle错误:

ORA-00600: internal error code, arguments: [12811], [96650], [], [], [], [], [], [], [], [], [], []

只是无法触摸标识栏.我试过下面的命令,但没有运气:

ALTER TABLE DYS_CATEGORY MODIFY CATEGORY_ID DROP IDENTITY;

ALTER TABLE DYS_CATEGORY DROP COLUMN CATEGORY_ID;

DROP TABLE DYS_CATEGORY PURGE;

我可以从表中删除任何其他列,但问题是标识列.

标识列是Oracle的新增内容,刚刚在12c中引入.

最佳答案 这是Oracle 12.1.0.2.0的问题.至少有一个人有
reported it (on Windows, which may be relevant).

您遇到的错误是ORA-00600,它是Oracle未处理异常的默认消息,即Oracle错误.正确的答案是通过Oracle Support提出服务请求;如果您需要修复损坏的表,他们将能够为您提供补丁或解决方法.如果您没有支持合同,您可能会失去运气.

对于将来的参考,删除标识列是一个两个阶段的过程:

alter table t42 modify id drop identity;

alter table t42 drop column id;

碰巧,这不是最新版本产品的问题.在Oracle 18c中,我们可以放弃列而不先修改它. LiveSQL demo.

点赞