online 创建索引失败处理

数据字典的维护工作就包含对IND$基表中相应索引记录的FLAGS标志位的恢复,但是如果服务进程在语句执行过程中意外终止的话,那么短时间内FLAGS标志位字段就无法得到恢复,这将导致对该索引的后续操作因ORA-8104错误而无法继续:

SMON负责在启动后(startup)的每小时执行一次对IND$基表中因在线创建/重建索引失败所留下记录的清理。

注意因为SMON进程的清理工作每小时才执行一次,而且在工作负载很高的情况下可能实际很久都不会得到清理,在这种情景中我们总是希望能尽快完成对 索引的在线创建或重建,在10gr2以后的版本中我们可以直接使用dbms_repair.online_index_clean来手动清理online index rebuild的遗留问题:


  1. DECLARE  
  2.   RetVal        BOOLEAN;  
  3.   OBJECT_ID     BINARY_INTEGER;  
  4.   WAIT_FOR_LOCK BINARY_INTEGER;  
  5. BEGIN  
  6.   OBJECT_ID     := ;  
  7.   WAIT_FOR_LOCK := NULL;  
  8.   RetVal        := SYS.DBMS_REPAIR.ONLINE_INDEX_CLEAN();  
  9.   COMMIT;  
  10. END;  



请使用浏览器的分享功能分享到微信等