数据库使用久了会发现表示有很多索引,严重可能影响dml操作,因此可以使用索引监控发现那些索引不使用,进行删除:

1.监控索引:
alter index index_name_xxxx MONITORING USAGE;

取消索引监控:

alter index index_name_xxxx NOMONITORING USAGE;


可以根据表名字批量生产监控索引的语句:
select 'alter index ' || index_name || ' MONITORING USAGE;'  from user_indexes where table_name = 'table_name_xxxx';
或者直接查询获取索引名字:
  select index_name from user_indexes ;

2.查看索引监控情况:
SELECT * FROM V$OBJECT_USAGE;

INDEX_NAME                 TABLE_NAME         MONITORING    USED    START_MONITORING       END_MONITORING
IDX_STATUS                 T_APP_USER_N      YES          NO       10/01/2018 10:24:43    

正常可以监控一个星期或者更久,自己根据业务或者平时的sql决定:
可以先设置索引invisible:
alter index IDX_STATUS invisible;

如果需要使用,可以打开visible
alter index IDX_STATUS visible;

3.观察一段时间没有问题可以删除,建议删除之前可以备份下创建索引的语句:
drop index IDX_STATUS;


4.索引rebuild,指定pctfree:

alter index IDX_STATUS rebuild online parallel 4 pctfree 20;

alter index IDX_STATUS parallel 1;