SSH连接断开导致ORA-08104

环境:oracle10.2.0.4 for linux

在对一个较大的索引进行rebuild时,SSH连接断开了,然后再次rebuild索引,就出现了ORA-08104
SQL> alter index SYS_C005743 rebuild online;
alter index SYS_C005743 rebuild online
*
ERROR at line 1:
ORA-08104: this index object 94384 is being online built or rebuilt

处理的办法有两种:
1.使用dbms_repair.online_index_clean清除相关索引
2.Identify and drop/rename the related journal tables manually:
  SQL> Select Object_Name, Object_Type
       From   Dba_Objects
       Where  Object_Name Like 'SYS_JOURNAL%';
当然还有就是等待SMON自动完成清除动作。

由于是在生产系统上出现此问题,我选择了第一种办法处理:
官方提供两种操作
select dbms_repar.online_index_clean(94384) from dual;

declare
  isClean boolean;
begin
  isClean := FALSE;
  while isClean=FALSE loop
    isClean := dbms_repair.online_index_clean(dbms_repair.all_index_id,dbms_repair.lock_wait);
    dbms_lock.sleep(2);
  end loop;
  exception
    when others then
      RAISE;
end;
/

我使用如下语句实现:
DECLARE
RetVal BOOLEAN;
OBJECT_ID BINARY_INTEGER;
WAIT_FOR_LOCK BINARY_INTEGER;
BEGIN
OBJECT_ID :=  94384;
WAIT_FOR_LOCK := NULL;
RetVal := SYS.DBMS_REPAIR.ONLINE_INDEX_CLEAN ();
COMMIT;
END;
/

但是当正常执行完此函数后,再次rebuild索引,仍然报ORA-08104,查看警告日志并无ORA-600报错,说明不是BUG所致。
由于此索引影响到了生产业务,最后只能重启数据库,再rebuild索引,解决了此问题。

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

转载于:http://blog.itpub.net/17997/viewspace-629933/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值