ORACLE服务器的CPU和负载均衡过高
场景:
数据库版本:11.2.0.4 RAC;系统版本:Oracle Linux 6.4
巡检发现DDDRAC库CPU/负载均衡过高,load(15m)值达到了40以上,CPU值达到90%以上。
解决:
发现CPU和过载过高后,查看磁盘I/O,命令:iostat -m 2,但读写速度并没有飙升;
查看会话发现TTPOPP用户并发连接数很多,可以定位到是这个用户在执行语句;
查看AWR报告定位到两条sql语句使用CPU非常的高,分别为61.62和31.16,SQL_ID分别为cdkcdsab1rt50和0f8r4auk3zm0;
发现这两条语句执行的对象都为ACCC_AASH_FROZZZ_DETAAA表,查看执行计划两个语句的成本使用3万多之高,均为全表扫描,where条件字段为reeuess_no,发现这个字段创建的是联合索引idx_o_r(ordee_no,reeuess_no),reeuess_no在联合索引的位置在第二个位置,查出的两个条语句where条件只有reeuess_no这个字段,并且这个字段的值非常多,单独使用这个字段后联合索引并没有起到作用,导致执行计划走全表扫描,导致执行计划执行效率低;
再查看这个表最后的DDL语句(因怀疑对表进行了更改等操作),最后更改是2018年1月;
经咨询得知下午3点左右在进行清算任务,最后DDDRAC在他们清算结束后系统CPU和负载恢复正常。
最后建议开发人员给reeuess_no字段单独加一个索引。