Oracle索引的管理

2014-11-24 17:15:08 · 作者: · 浏览: 0

一、查找数据库比较占用空间的索引


需要根据业务设定搜索的条件,索引大小大于特定值,索引的层数大于1的索引


Select a.index_name,a.table_name,a.blevel,B.BLOCKS*8/1024 MB,b.bytes


from dba_indexes a,dba_segments b


Where a.index_name=b.segment_name and a.owner=b.owner and b.segment_type='INDEX'


And a.blevel>1 and B.BLOCKS*8/1024>'&B'


And b.tablespace_name='&A';


二、进行索引的分析


2.1 标准的SQL语句如下:


analyze index index_name validate structure;


例如:schemas:ekpj


table_name:I_SYS_WF_HISTO_PROCESS_ID1


脚本:analyze index ekpj. I_SYS_WF_HISTO_PROCESS_ID1 validate structure;


2.2 查看分析结果:


select name,height, del_lf_rows, lf_rows,


round((del_lf_rows/(lf_rows+0.0000000001))*100) "Frag Percent" from


index_stats;


当Frag Percent大于10的时候,即可对索引进行重建;


三、索引重建的脚本


ALTER INDEX index_name


REBUILD


NOCOMPRESS


NOPARALLEL


NOLOGGING


TABLESPACE USERS


STORAGE (


INITIAL 38M


NEXT 1M


)


ONLINE;


总结:
需要通过业务了解哪些表会频繁的进行增删改,因为索引碎片产生的原因是由于增删改操作导致的,知道了这些操作将事半功倍;
进行索引重建必须放在业务的空闲期操作,避免影响业务的正常操作;
建议每个月进行以上的操作;