【问题标题】:cannot drop a system-generated sequence无法删除系统生成的序列
【发布时间】:2019-11-21 22:13:55
【问题描述】:

我的 Oracle 12c 数据库中有一个系统生成的序列,我似乎无法摆脱它。在它上面调用“drop sequence”会得到这个错误:

错误代码:ORA-32794
说明:无法删除系统生成的序列
原因:试图删除系统生成的序列。
操作:无法删除系统生成的序列,例如为标识列创建的序列。

该序列用于为表的 Id 列生成值,该表不再存在。通常,我可以创建和删除此类表,并且序列会随之删除。我不知道在这种情况下删除表的语句,但我真的很想删除杂散序列。

【问题讨论】:

  • 您使用的是哪个版本的 12c?
  • 现在是12.2,是几个月前的最新版本。

标签: sql oracle oracle12c


【解决方案1】:

您不需要显式删除标识列序列,因为它与表相关联,使用purge 选项删除表(或正常删除并清空回收站)也会删除该序列。

create table test_tbl (id  number generated as identity);

Table created.

select * from user_tab_identity_cols;

TABLE_NAME                     COLUMN_NAME GENERATION_TYPE SEQUENCE_NAME IDENTITY_OPTIONS
------------------------------ ----------- --------------- ------------- --------------------------------------------------------------------------------
TEST_TBL                       ID          ALWAYS          ISEQ$$_124811 START WITH: 1, INCREMENT BY: 1, MAX_VALUE: 9999999999999999999999999999, MIN_VAL

删除表会将表及其序列留在回收站中:

drop table test_tbl;

Table dropped.

select * from user_tab_identity_cols;

TABLE_NAME                     COLUMN_NAME GENERATION_TYPE SEQUENCE_NAME IDENTITY_OPTIONS
------------------------------ ----------- --------------- ------------- --------------------------------------------------------------------------------
BIN$gQ8wv//QTjK+mAGxdffxgQ==$0 ID          ALWAYS          ISEQ$$_124811 START WITH: 1, INCREMENT BY: 1, MAX_VALUE: 9999999999999999999999999999, MIN_VAL

清空回收站会清除它:

purge recyclebin;

Recyclebin purged.

select * from user_tab_identity_cols;

no rows selected

select * from user_sequences where sequence_name like 'ISEQ$$%';

no rows selected

【讨论】:

  • “您不需要显式删除标识列序列” 我似乎记得 12c R1 的初始版本存在一个问题,即删除具有标识的表列没有删除系统生成的序列。这很痛苦,因为在开发过程中我们经常破坏和重建模式。但在以后的版本中,它肯定不再是问题。
  • "purge recyclebin" 清理了它们。谢谢你的解释。
【解决方案2】:

您可以使用 purge 关键字删除表并使用单个删除命令清除系统生成的序列

drop table mytable purge cascade constraints

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多