ORA-55622 不容许对表”XXX”执行DML,ALTER和CREATE UNIQUE INDEX 操做

错误描述:在进行用户以及表空间删除时候,报ORA-55622 不容许对表”XXX”执行DML,ALTER和CREATE UNIQUE INDEX 操做错误,具体错误信息以下:数据库

drop user TJ_CZDJ_GX cascade;工具

QQ截图20210104095852

错误缘由:经查看,“SYS_FBA_TCRV_XXX”命名的表为数据库闪回归档所使用的表,其主要负责记录在特定的时间范围,进行特定操做的信息记录。3d

闪回归档主要用于长时间保存某些表的变化数据,用于审计等,在删除表空间时,须要先关闭闪回归档。blog

能够经过下面语句查看全部用户下哪些表开启了闪回归档。get

select * from dba_flashback_archive_tables;flash

另外也能够根据提示,经过下面语句查看具体报错的表:it

select object_id,owner,object_name from dba_objects t where t.object_id=217444;table

其中217444为报错信息中“SYS_FBA_TCRV_XXX”表提示XXX的内容。object

image

解决方法:关闭相应表的闪回归档。select

能够经过下面语句关闭指定表的闪回归档:

alter table XXX no flashback archive;

由于我这里有多个表开启了闪回归档,为了方便,直接构建多条关闭闪回归档语句,批量执行便可(注意构造好的alter语句是在当前用户下执行,若是要在sys下执行须要增长用户名前缀,即用户名.表名的格式)。

select 'alter table ' || table_name || ' no flashback archive ;'
   from dba_flashback_archive_tables;

image

再次执行drop user TJ_CZDJ_GX cascade;语句,已经再也不提示ORA-55622错误。

另外,在执行过程当中提示没法删除当前链接的用户:

image

咱们直接到工具—>会话中,终止须要删除用户的会话便可。

image

相关文章
相关标签/搜索