ORACLE索引的管理-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

ORACLE索引的管理

简介: 前言:数据库运行了一段时间之后,由于频繁的进行了增删改,索引就会产生碎片,碎片多了自然而然的就会影响查询的效率。通过ORACLE提供的一些管理视图和工具就可以分析出数据库的哪些索引由于碎片太多需要进行重建;   一、查找数据库比较...

前言:数据库运行了一段时间之后,由于频繁的进行了增删改,索引就会产生碎片,碎片多了自然而然的就会影响查询的效率。通过ORACLE提供的一些管理视图和工具就可以分析出数据库的哪些索引由于碎片太多需要进行重建;

 

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

需要根据业务设定搜索的条件,索引大小大于特定值,索引的层数大于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;

 

总结:

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

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN

ORACLE技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 )  

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: