当索引中碎片过多时,会影响执行查询的速度,从而影响我们的工作效率。这时候最有利的措施就是重建指数。本文主要介绍了在oracle数据库中检查索引碎片和重建索引的过程。
接下来,我们将开始介绍这个过程。
重建索引的步骤如下:
1.确认基本信息
登录数据库,找到一个专门存储索引的表空间。
并且该表空间中所有索引的所有者都是tax。将索引存储在独立的表空间中是一种常见的数据库设计方法,该表空间与数据表的表空间相分离。
2.找出哪些索引需要重建。
通过分析索引的命令.验证结构,可以分析单个指定的索引,单个索引分析的结果可以存储在index_stats下。一般判断基于:
height 4 pct_used 50% del_lf_rows/lf_rows +0.001 0.03 g )
3.遍历所有索引的脚本在Google上下载。
我发现lyze指数.Validate structure只能填写单个索引分析信息,于是google从网上下载了一个循环脚本,遍历了索引空间中的所有索引名。
并且指数的所有分析信息都可以存储在自己建立的用户表中。
4. Analyze the index locking index
发现下载的脚本不好用,因为anlyze索引在分析索引之前要争取独占锁,锁索引。显然,有些索引正在被应用程序系统使用,所以运行anlyze失败了。这里的教训是尝试在晚上这样做。
然而,我更喜欢按时回家,所以我在语句中添加了异常处理程序,并抛出那些执行anlyze index失败的索引的名称,以便脚本可以正常运行。
并根据打印到前台的索引名称手动执行这些索引分析。
总结
虽然发现522个指数中有160个符合上述判断的依据。但是发现指数都不大,那些百万叶的指数不满足上述判断条件。
所以结论是不需要在线重建索引。没有碎片。
6.什么时候可以重建索引?
在线重建索引对于具有大量DML操作的大型索引非常有用。大型索引的重建可以每月或每季度进行一次。通常,即使在线重建索引也会导致I/O争用。
所以有没有上线意义不大。可以放在3-5个晚上,批量执行重建索引,锁定索引,不要让用户使用(没有用户等待的时候),加上关键字paralle 8。
应该发现数据库服务器有8个cpu处理器。
这里介绍一下关于Oracle数据库检查索引碎片和重建索引的知识,希望对你有所帮助。