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
SQL> alter index
IDX_OBJ_ID coalesce;
SQL> alter index
IDX_OBJ_ID rebuild;
SQL> alter index
IDX_OBJ_ID 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
-------
40.85%
SQL> alter index
IDX_OBJ_ID rebuild online;
Index altered.
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%
No comments:
Post a Comment