处理无效索引ORA-20000的故障

作者:赵全文     网名:guestart

本周四上午,开发同学反馈,数据库Oracle链接过一段时间就会断掉,他问是不是因为IIS和数据库不在一个网段的原因,要长连接才可以吧?于是,登录这套数据库的EMCC 12C监控里发现 有2个SQL 执行了很长时间 都失败,如下图

wKiom1jXa9-iB2QnAABBUCttlZE716.png-wh_50

查看alert日志文件,发现有以下报错,如下图,

wKioL1jXbAKDS2cgAAAs9dVGA8E609.png-wh_50

查看上图所示的那个trc文件,如下图操作,

wKioL1jXbCjDC4xhAAAXCgcO6Vs384.png-wh_50

发现里面的报错 为ORA-20000,即用户对应的表下有一个索引不可用,见下图所示,

wKiom1jXbGWj_zmtAACVMqIZTKI260.png-wh_50

Alert日志文件里也有那个ORA-20000的报错,见下图,

wKiom1jXbajSS5TgAAAqFvRd8sg690.png-wh_50

接着,处理步骤如下:

1.进sqlplus,查询发现,有无效索引,如下图所示,

wKioL1jXbeHBR_ROAAAm3ZZcrU4574.png-wh_50

2.查询表T_STUDENT_DURATION的数据发现有3500多万,见下图,

wKioL1jXbhWxBCFkAAATqQIrfLM994.png-wh_50

3.用rebuild命令重建上面查出的两个无效索引,见下图操作,

wKiom1jXbkyzZeltAAAhvtue6go364.png-wh_50

4.再次用上面的SQL进行查询,发现无效的索引不存在了,见下图,

wKiom1jXbuuTfGlQAAAWlPXWrBs356.png-wh_50

5.次日,进入这套数据库的EMCC 12C监控里发现那2个SQL执行状态为正常而且执行完毕,见下图查看结果,

wKioL1jXbxfxzvoQAAARF1reso0425.png-wh_50

然后再查看alert日志文件,在当天的时间段,发现已经没有ORA-20000的故障代码了。




如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:guestart的DBA学习笔记,您的支持是对我最大的鼓励!


wKioL1jXb32TWhqCAAAT4gjVou0266.jpg