这篇文章主要介绍了数据库中怎么清除创建失败的索引,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在创建一张大表的索引时,因为没有加并行而导致创建时间很长,这时候如果终止操作,比如直接关闭终端,然后再次登录创建时就会报错ORA-00095提示对象名字已被用,而去删除对象时又报错ORA-08104索引正在被创建。从oerr工具看到的ORA-08104的解释是索引并没有创建失败,而是在终端关闭之后,创建的操作还在继续进行。创建或者重建索引时,系统会创建一个临时日志表,这张表被用于存放创建或者重建索引期间产生的日志信息,同时在基表IND$中这个索引的FLAG字段上会被设置为BUILD或者REBUILD标识,当索引信息变更时会把变更信息存入日志表。如果索引创建或者重建失败,这个日志表和数据字典中的状态位都需要后台进程smon进行清理。因此这里的索引不能被删除是因为后台进程smon还没来得及清理相应的临时段和标志位,认为online rebuild操作还在进行。那么现在如何终止rebuild index这一操作?查找metalink得到一篇文档:ORA-600 [12813] When Dropping A Table Partition After a Failed IndexRebuild (文档 ID 803008.1)。它给出了两种方法:1)使用包dbms_repair包来清理如果在出现问题的对象的数据库活动能停下来,则直接简单地执行如下语句即可:2)使用PL/SQL block调用dbms_repair包来清理如果在出现问题的对象的数据库活动不能停下来,则如免费主机域名下的PL/SQL block来处理注:加上dbms_repair.l免费主机域名ock_wait表示不是立刻清理,需要不断的寻找资源锁,直到抢到为止感谢你能够认真阅读完这篇文章,希望小编分享的“数据库中怎么清除创建失败的索引”这篇文章对大家有帮助,同时也希望大家多多支持云技术,关注云技术行业资讯频道,更多相关知识等着你来学习!
相关推荐: Innodb下null ” ‘ ‘的存储表现有什么不同
小编给大家分享一下Innodb下null ” ‘ ‘的存储表现有什么不同,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!null :nullbits 位图上的区别。‘’:可变字节多一个字节。‘ ‘:可变字节多一个字节且实际数据区域为0X20多…