作者简介:惠星星,现就职于北京海天起点,持有OCP 10g、OCP 11g、OCM 11g证书,并有长达8年电力行业业务维护、数据库维护服务经验,擅长Oracle数据库性能优化、故障处理及数据可视化技术研究。
问题现象
经BOSS系统相关人员反馈,在2017年5月7日凌晨2点-4点BOSS系统数据库服务异常。
问题分析
服务器CPU使用率分析
由于2017年5月7日BOSS系统数据库主机CPU使用率过高,所以针对数据库主机CPU使用率调取2017年5月6日开始至2017年5月7日的历史采样,结果如下图。根据CPU使用率曲线图所示,在2017-05-06 14:55:00时间点数据库CPU使用率从18%升至接近100%,且一直持续至2017-05-07 07:55:00才出现下降。
数据库在线进程分析
经分析数据库CPU使用率,可知在2017-05-06 14:55:00 至2017-05-07 07:55:00时间段内,CPU使用率一直接近100%。故调取该时间段内正在运行的会话进程。结果如下,发现一条SQL语句在该时间段内执行次数严重过高。
select * from dba_hist_active_sess_history y where y.sample_time >to_date('20170506','yyyymmdd') +14/24 and y.sample_time < to_date('20170507','yyyymmdd')+11/24
SQL_ID | 计数 |
85xtsgqkst9sm | 50777 |
8f6r1sar01293 | 842 |
3fvsvnf9rukj7 | 776 |
3fvsvnf9rukj7 | 537 |
21drukrt2msub | 352 |
dxr6w6dg87qy0 | 344 |
2g7gdzk4x4cc8 | 324 |
gagb0t9vxjjr6 | 320 |
2mc9c46xdwc5d | 301 |
2rj9u4maa9ub5 | 270 |
2nqvz6pvnaxjp | 262 |
0bazd4vaj5qpz | 257 |
SQL语句分析
通过以上分析,找出造成CPU使用率过高的语句,结果如下
SELECT /*+ FIRST_ROWS (1) */ * FROM "ANEK" WHERE "MANDT" = :A0 AND ( "BELNR" = :A1 AND "AWORG" = :A2 AND "TCODE" = :A3 AND "VORGN" = :A4 OR "VORGN" = :A5 ) AND ROWNUM <= :A6
数据库性能报告(AWR)分析
通过分析2017年5月7日2点-3点AWR报告,说明SQL语句:85xtsgqkst9sm,存在性能问题。
业务沟通
经与业务管理人员沟通,以上5月6月存在批量”资产折旧”操作:更新量为60000个设备。
优化建议
-
建议将该操作分批进行,减少对数据库服务器的压力。
-
建议批量大数据操作前,提前告知数据库组,安排专职DBA进程服务器及数据库性能监控,及时消除安全隐患。
-
建议将该业务功能添加到数据库自动任务,将业务数据存储到自建业务表中,应用程序只操作自建业务表,减少对系统标准表的热块争用。
-
建议梳理业务需求,优化业务逻辑,提升应用性能。
原创文章,版权归本文作者所有,如需转载请注明出处
喜欢本文请长按下方的二维码订阅Oracle一体机用户组