暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

记一次表空间碎片导致索引无法扩展问题

IT那活儿 2021-06-04
966
事情来由
某日业务反馈说应用程序报错,表无法入数,此时我却并未收到表空间告警。

数据库检查

登上数据库检查等待事件时,发现活动会话数较高,某一用户有较多DML操作积压,但并无锁表情况,检查表空间也没有剩余空间非常小的,现象比较奇怪。以下为当时情况的ASH报告:

表空间使用情况如下:

检查alert日志后,发现了异常:

可以看到,有大量表的索引报ORA-1654无法扩展错误,且都是表空间TBS_IDX_INTERFACE。此时怀疑是表空间碎片率太高,或索引的存储参数设置异常,导致无法分配新的区,抽样检查报错索引的next extent和 pct increase也无异常。

紧急处理方式
考虑优先保障业务使用,此时先对问题表空间加了4个数据文件,alert日志随即不再报错,应用入数也恢复正常。

表空间碎片检查
对表空间剩余空间进行分析后,发现除了新加的数据文件,其他数据文件的可分配区均小于1M……

由此可以看出,虽然表空间剩余空间仍有100G左右,但没有连续的可分配区大于1M,小于索引的next extent,故导致报错。结合库的业务类型,确实有大量的DML操作,且表空间中有大量的空索引,占据大量零碎的区。

解决办法
SR回复也为表空间碎片导致:

   后续得监控此库的表空间碎片情况,还需定期对相关表进行shrink,定期重建索引,以避免问题再次发生。

END

更多精彩干货分享

点击下方名片关注

IT那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论