Oracle创建index 使用Online导致的问题(2)

无奈,总不能一直等着吧。而且过了好一会儿,也不见有进展。 如果在生产环境中,那绝对算是一次事故。在早期版本中,可能只有重启,让smon来做清理了。 不知道从10g还是11g开始,有dbms_repair包,里面还包括了一个蛮实用的方法。可以解决这个问题。

SQL> declare
  2  isClean boolean;
  3 
  4  begin
  5  isClean := FALSE;
  6  while isClean=FALSE loop
  7  isClean := dbms_repair.online_index_clean(dbms_repair.all_index_id,
  8  dbms_repair.lock_wait);
  9  dbms_lock.sleep(2);
10  end loop;
11  exception
12  when others then
13  RAISE;
14  end;
15  /

PL/SQL procedure successfully completed.

运行成功后,再次尝试。

alter index t_pk rebuild parallel 4
*
ERROR at line 1:
ORA-01418: specified index does not exist

这终于是我期望的结果了,看来在生产中,index的online rebuild也要慎重使用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b6153ba16aacb4c90391e94c4f1a00d0.html