从建索引失效
SQL> ALTER INDEX CXUSER.IDX_BM_TCON_LSKL_LSKLKLBZ REBUILD ONLINE;
ALTER INDEX CXUSER.IDX_BM_TCON_LSKL_LSKLKLBZ REBUILD ONLINE
*
ERROR at line 1:
ORA-08104: this index object 73492 is being online built or rebuilt
SQL> select obj#,flags from ind$ where obj#=96541;
OBJ# FLAGS
---------- ----------
73492 512
2.
两节点实例(SWRAC1和SWRAC2)警告日志连续报如下错误:
Errors in file /oracle/oracle/admin/swrac/udump/swrac1_ora_6380.trc:
ORA-00600: internal error code, arguments: [6006], [1], [], [], [], [], [], []
Tue Apr 29 15:20:39 2008
Errors in file /oracle/oracle/admin/swrac/udump/swrac1_ora_7097.trc:
ORA-00600: internal error code, arguments: [6006], [1], [], [], [], [], [], []
.....
3.
研发反映数据库访问慢,对TCON_LSKL表无法做任何操作.
4.
当即检查数据库发现有大量的并发对TCON_LSKL表的UPDATA操作.数据库存在大量的OBJECT_LOCK.TCON_LSKL表处于锁状态.阻塞的session所执行的sql都是执行同一个相同的会话,都在更新那个索引字段.访问此表连接进来的进程无法释放,一直被挂起,消耗大量CPU资源.
5.metalink搜索分析:
这在系统比较繁忙的情况下,是由于在异常终止online rebuild操作的时候,oracle没来得及清理相应的临时段和标志位,系统认为online rebuild操作还在进行造成的。所以有可能会出现ind$系统表没有clean up的情况。这个时候做drop index,rebuild index,analyze table都会出现ORA-08104的错误。这种失败的错误会使oracle的smon进程清除ind$基表,将相应的索引的flags更改为0.这步操作每隔一小时做一次。还有清理清理临时段。每隔两小时做一次,但处理完的时间会不确定.
6.解决方法:
正常的处理方法就是重新启动数据库,一般情况下oracle会清除flags标志,恢复正常.
18点后重新启动两节点实例.然后重建TCON_LSKL表所有索引
ALTER INDEX CXUSER.IDX_BM_TCON_LSKL_LSKLKLBZ REBUILD ONLINE;
ALTER INDEX CXUSER.IDX_TCON_LSKL_LSKLKLBH REBUILD ONLINE;
ALTER INDEX CXUSER.IDX_TCON_LSKL_LSKLSTATUS REBUILD ONLINE;
ALTER INDEX CXUSER.PK_TCON_LSKL REBUILD ONLINE;