Наличие таких индексов может являться причиной падения производительности, если параметр БД SKIP_UNUSABLE_INDEXES установлен в TRUE. В этом случае БД не генерирует ошибку при попытке использования битого индекса и пробует обходиться без него -- или использует другой индекс (если такой есть), или TABLE FULL SCAN
Проверить его значение можно в SQL*PLUS
SQL> show parameter unusable
Выполните скрипт ниже в TOAD или SQL Navigator, в результате будет одна колонка со списком команд alter index ***** rebuild
select 'alter index '||OWNER||'.'||INDEX_NAME||' rebuild;' as TOAD_CMD from DBA_INDEXES a
where INDEX_TYPE in ('NORMAL', 'BITMAP', 'FUNCTION-BASED
NORMAL') and PARTITIONED = 'NO' and STATUS <> 'VALID'union all
select 'alter index '||b.INDEX_OWNER||'.'||b.INDEX_NAME||' rebuild partition '||b.PARTITION_NAME||';' as TOAD_CMD
from DBA_INDEXES a, DBA_IND_PARTITIONS b
where a.OWNER = b.INDEX_OWNER and a.INDEX_NAME = b.INDEX_NAME and a.PARTITIONED = 'YES' and a.INDEX_TYPE in ('NORMAL', 'BITMAP', 'FUNCTION-BASED NORMAL') and b.STATUS = 'UNUSABLE';
Комментариев нет:
Отправить комментарий