Oracle監控用戶索引使用狀況,刪除無用索引

  1. 監控當前業務用戶索引
  2. 一段時間後查詢從未被使用的索引,刪除無用索引
  3. 中止監控索引

1. 監控當前用戶全部索引

獲得監控全部索引的語句:code

select 'alter index ' || index_name || ' monitoring usage;' from user_indexes;

2. 一段時間後查詢從未被使用的索引,刪除無用索引

注意:視具體業務狀況,選擇一週後,一月後,兩月後(總之要保證應用的全部SQL都至少跑一遍)索引

2.1 查看這段時間內,從未被使用的索引:

select * from v$object_usage where used='NO';

2.2 獲得刪除從未被使用的索引的語句:

select 'drop index '||o.index_name||';' from v$object_usage o join user_indexes u on o.index_name = u.index_name where o.used='NO' and u.uniqueness='NONUNIQUE';

特別注意:直接drop index操做,從未被使用的索引中,主鍵不會被刪除(會給出錯誤ORA-02429),但惟一性索引會被刪掉。
因此我這裏join了user_indexes,從而判斷只刪除NONUNIQUE的索引。
it

3. 中止監控用戶全部索引


獲得中止監控全部索引的語句:

select 'alter index ' || index_name || ' nomonitoring usage;' from user_indexes;
相關文章
相關標籤/搜索