Index Fragmentation / Rebuild. When ?
Posted by FatDBA on August 13, 2013
How to find index is fragmented?
First analyze index
SQL>analyze index INDEX_NAME validate structure;
Then query INDEX_STATS view
1. If del_lf_rows/lf_rows is > .2 then index should be rebuild.
2. If height is 4 then index should be rebuild.
3. If lf_rows is lower than lf_blks then index should be rebuild.
SQL> column status format a10
SQL> select trunc((del_lf_rows/lf_rows)*100,2)||’%’ “status” from index_stats;
status
———-
21.83%
How to remove index fragmentation?
There are two way to remove fragmentation.
1. index coalesce
2. index rebuild
What is difference between coalesce and rebuild please go through below link for more details
http://download.oracle.com/docs/cd/B14117_01/server.101/b10739/indexes.htm#g1007548
SQL> alter index INDIA coalesce;
SQL> alter index INDIA rebuild;
SQL> alter index INDIA rebuild online;
Note: If any DML statement is running on base table then we have to use ONLINE keyword with index rebuilding.
SQL> analyze index idx_obj_id validate structure;
Index analyzed.
SQL> select trunc((del_lf_rows/lf_rows)*100,2)||’%’ “status” from index_stats;
status
——–
0%
Note: Index rebuild when index is fragmented or it is needed, otherwise index rebuilding is myth for improve performance.
You can also enable Index Monitoring ‘ON’ to check if queries/statements are using index objects or not.
SQL> ALTER INDEX india MONITORING USAGE;
SQL> select index_name, table_name, monitoring, used, start_monitoring, end_monitoring from v$object_usage where index_name = ‘INDIA’ order by index_name;
INDEX_NAME TABLE_NAME MON USE START_MONITORING END_MONITORING
—————————— —————————— — — ——————- ———————————- ———————————-
INDIA SYS_EXPORT_SCHEMA_01 YES YES 06/01/2013 23:31:34
To disable the monitoring:
SQL> ALTER INDEX my_index_i NOMONITORING USAGE;
Leave a Reply