Oracle数据库中如何检查索引碎片并重建索引

数据库 Oracle
本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程,希望能够对您有所帮助。

当索引的碎片过多时,会影响执行查询的速度,从而影响到我们的工作效率。这时候采取的最有利的措施莫过于重建索引了。本文主要介绍了Oracle数据库检查索引碎片重建索引的过程,接下来我们就开始介绍这一过程。

重建索引的步骤如下:

1. 确认基本信息

登入数据库,找到专门存放index 的tablespace,并且这个tablespace下所有index的owner都是tax.将index专门存放在一个独立的tablespace, 与数据表的tablespace分离,是常用的数据库设计方法。

2. 查找哪些index需要重建

通过anlyze index .... validate structure命令可以分析单个指定的index,并且将单个index 分析的结果存放到 index_stats试图下。一般判断的依据是:

 

  1. height >4  
  2.  
  3. pct_used < 50%  
  4.  
  5. del_lf_rows / lf_rows +0.001 > 0.03 

 

3. google上下载了遍历所有index脚本

发现anlyze index .... validate structure只能填充单个index分析信息,于是google了下,从网上下了个Loop 脚本,遍历索引空间下所有的索引名字,并且可以把所有index的分析信息存放到自己建立的一个用户表中。

4. anlyze index 锁定index

发现下载的脚本不好用,应为anlyze index在分析索引前要争取独占锁,锁住index,很明显有些index正在被应用系统的使用,所以运行anlyze失败。这里吸取的教训是,尽量晚上做这种事。但是本人比较喜欢准时回家,所以在语句中添加Exception Handler,抛出anlyze index执行失败的那些index 名称,使脚本正常运行完毕。并且根据打印到前台的index name手动执行那些index分析。

5. 总结

虽然发现522个index中有160个符合上面的判断的依据。但是发现索引都不大,而那些拥有百万leaf的索引又没有符合上面的判断条件,所以结论是无需index rebuild online. 没有啥碎片。

6.什么时候可以rebuild index呢?

rebuild index online,对那些有大量DML操作的大索引是有益的。可以每个月季度做一次针对较大索引的rebuild。通常哪怕rebuild index online也会造成I/O争用,所以有无online意义不大,可以放到3-5个晚上,分批执行rebuild index,锁定index,不让用户用(没有用户等入的时候),并且加上paralle 8关键字,应为发现数据库服务器有8个cpu processors.

关于Oracle数据库检查索引碎片和重建索引的知识就介绍到这里,希望能够对您有所帮助。

【编辑推荐】

  1. Oracle数据库常见问题及解决方案大全
  2. PL/SQL Developer导入导出数据库方法及说明
  3. Oracle 11g即时客户端在Windows系统上的配置
  4. Oracle 11g客户端在Linux系统上的配置步骤详解
  5. 说一说ORACLE FLASHBACK TABLE的一个有趣问题
责任编辑:赵鹏 来源: ITPUB个人空间
相关推荐

2011-08-04 16:20:39

SQLServer数据索引碎片DBCC ShowCo

2011-05-26 10:11:24

Oracle数据库索引

2019-08-20 22:06:32

Oracle数据库索引

2011-03-16 08:54:45

Oracle数据库索引

2011-05-19 13:25:12

Oracle数据库碎片

2010-11-16 09:49:22

Oracle重建索引

2010-11-16 09:18:39

oracle重建索引

2011-07-04 10:19:41

索引ONLINE

2010-04-07 17:45:22

Oracle位图索引

2010-03-30 17:40:59

Oracle数据库

2010-04-19 13:31:42

Oracle索引

2011-08-10 15:11:23

SQL Server整理索引碎片重建索引

2010-05-26 13:42:08

MySQL数据库索引

2023-11-16 17:12:33

数据库oracle

2009-04-22 14:19:32

Oracle中文索引基础

2010-04-21 14:45:39

Oracle数据库

2011-04-12 10:21:24

Oracle数据库索引树

2021-11-01 23:57:03

数据库哈希索引

2010-04-21 14:11:56

Oracle数据库

2010-04-26 14:24:58

Oracle数据库索引
点赞
收藏

51CTO技术栈公众号