Oracle性能分析9:重建索引

本文探讨了Oracle数据库中索引不可用的原因、碎片问题及其影响,提出了重建索引作为解决方案。通过分析索引状态、检测碎片并重建,可以改善性能。并行创建、避免重做信息和压缩技术也是优化索引的重要手段。
摘要由CSDN通过智能技术生成

当索引出现问题时,会导致严重的性能问题,索引问题包括索引不可用、索引碎片导致性能下降,我们需要一些手段在检测索引的问题,并解决这些问题。这一篇将为你讲述怎么定位索引问题,并提供了解决的办法。

索引不可用

索引不可用的原因有很多,包括:
 1)索引空间耗尽,导致SQL*Loader更新索引失败;
 2)创建索引的过程中实例失败;
 3)唯一键有重复值;
 4)某个索引的顺序与sorted indexes子句中指定的顺序不同;
 5)移动表或表分区(alter table move和alter table move partition);
 6)对表执行在线重定义;
 7)截断表分区(alter table truncate partition);
 8)导入分区;
 9)删除表分区;
 10)拆分表的分区或子分区(alter table split partition);
 11)分区索引的维护操作(alter index split partition)。
除了上述的这些原因之外,你还可以手动的将索引标注为不可用,这样可以使批量加载速度更快,下面是把索引的状态改变为不可用的方法:

alter index IDX_HISTORYALARM_HOUR$01 unusable

如果你的索引为分区索引,这个操作将导致所有分区的索引都不可用,你也可以指定某个分区的索引不可用:

alter index IDX_HISTORYALARM$02 modify partition HISTORYALARM20140731 unusable

通过下面的方法可以查看索引的状态:

select ind.INDEX_NAME,ind.status,ind.PARTITIONED from user_indexes ind where index_name like '%HISTORYALARM%'

INDEX_NAME			STATUS		PARTITIONED
---------------------------------------------------------------------
IDX_HISTORYALARM_HOUR$01		UNUSABLE		NO
IDX_HISTORYALARM$02			N/A		YES

可以看到,全局索引的状态已经变为UNUSABLE,但本地索引的状态标识为N/A,通过下面的方法可以查看本地索引在每一个分区中的索引状态:

INDEX_NAME			PARTITION_NAME			STATUS
------------------------------------------------------------------------------------------
IDX_HISTORYALARM$02			HISTORYALARM20140731		UNUSABLE
IDX_HISTORYALARM$02			HISTORYALARM20140801		USABLE
IDX_HISTORYALARM$02			HISTORYALARM20140802		USABLE
IDX_HISTORYALA
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值