ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 重新创建索引ORA-08104

重新创建索引ORA-08104

原创 Linux操作系统 作者:willing66 时间:2010-02-24 17:47:08 0 删除 编辑
重新创建索引ORA-08104



客户端执行alter index rebuild online时会首先创建SYS_JOURNAL_****系统表来记录日志,待索引重建完成后将修改动作维护到新的索引上。

在客户端执行ALTER INDEX REBUILD ONLINE时因为系统定义了禁止DROP的触发器,导致操作失败。使用sys用户登入重新创建的时候出现了ORA-08104错误。

SQL> ALTER INDEX BB.IX_ABC REBUILD ONLINE;

ERROR at line 1

ORA-08104: this index object 66144 is being online built or rebuilt.

当我们rebuild index online失败后,smon进程会清除sys_journal_xxx(xxx是object_id)以及其它的不一致的东西,在smon清除它们之 前,是不能再进行rebuild index online的,如果要清除它们,需要执行dbms_repare包的online_index_clean过程来处理...

在9206,9207,10.2.0.1中smon不会很快地清除index rebuild online失败所带来的对象,在9208,10.2.0.2,11g中这个bug才被fixed.所以在9206,9207,10.2.0.1这些版本 中,当我们对大的索引进行index rebuild online时,不要随意地中断rebuild index online操作,否则smon可能需要很久才能清除临时对象。

  1. 网上有文章说可以通过重启系统或者修改系统表ind$,对产品系统而言,停机不是一个好的解决方案。而修改系统表更是DBA的大忌。采用dbms_repair包的online_index_clean是比较稳妥的解决方案。

本例中SMON十几分钟后自动将之清理,但是在报警日志中没有发现

User:,time:20071209 03:12:09,program:oracle@db1 (SMON),IP:,object:SYS_JOURNAL_67420,DDL: drop table "TAOBAO"."SYS_JOURNAL_67420"

之类的信息。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/276487/viewspace-627782/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Redo LOG丢失恢复
请登录后发表评论 登录
全部评论

注册时间:2008-10-22

  • 博文量
    100
  • 访问量
    183659