ITPub博客

首页 > 数据库 > Oracle > 一次客户数据库CPU 100%处理过程

一次客户数据库CPU 100%处理过程

原创 Oracle 作者:abstractcyj 时间:2016-06-04 15:59:36 0 删除 编辑
6月4日上午接到同事电话,客户数据库CPU使用率达到100%,已经不能进行正常业务。

连接到数据库,首先创建了一个snapshot,产生了一个AWR报告。
因为紧急,所以,同事要求重启数据库。于是重启数据库,并关闭了应用的某些功能(如脱机销售数据同步)。大概几分钟之后,数据库恢复正常。
AWR报告dbtime异常

进一步查看AWR报告,发现如下异常等待事件


还有如下SQL



看起来像是TOP SQL引起的问题。但是觉得有点奇怪,这些SQL在平时运行都是极快的。

稍后,一个新的等待事件引起了我的注意:
resmgr:cpu quantum
实际上平时是根本没有这种等待事件的。于是谷歌之。

http://www.lunar2013.com/2015/04/%E4%B8%80%E6%AC%A1%E6%95%B0%E6%8D%AE%E5%BA%93%E9%97%AE%E9%A2%98%E5%A4%84%E7%90%86%EF%BC%8811g%E8%87%AA%E5%8A%A8%E7%BB%B4%E6%8A%A4%E4%BB%BB%E5%8A%A1%EF%BC%8Clog-file-sync%EF%BC%89.html

http://www.killdb.com/2011/11/21/resmgrcpu-quantum-led-to-performance-problems.html

http://www.askmaclean.com/archives/resmgr-cpu-quantum%E7%AD%89%E5%BE%85%E4%BA%8B%E4%BB%B6.html

由于数据库版本11.2.0.1.0与这个resource manager plan的bug描述相吻合,所以怀疑是由于bug引起的high cpu, 而CPU资源的不足又引起了其他的等待,加剧了内部共享资源争用。

但是只是猜测,因为并没有metalink账号,所以没有办法进一步调查。

使用以下脚本关闭了default resource plan:

exec dbms_scheduler.disable( 'ORACLE_OCM.MGMT_CONFIG_JOB' );
exec dbms_scheduler.disable( 'ORACLE_OCM.MGMT_STATS_CONFIG_JOB' );
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'auto space advisor',
operation => NULL,
window_name => NULL);
END;


BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL);
END;
/

alter system set resource_manager_plan='' scope=both;
execute dbms_scheduler.set_attribute('WEEKNIGHT_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('WEEKEND_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('MONDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('TUESDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('WEDNESDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('THURSDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('FRIDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('SATURDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('SUNDAY_WINDOW','RESOURCE_PLAN','');

虽然可能是bug引起的,但是系统存在硬解析过多,存在对数据字典的不合理访问等问题,需要进一步跟踪。

参考:
http://www.lunar2013.com/2015/04/%E4%B8%80%E6%AC%A1%E6%95%B0%E6%8D%AE%E5%BA%93%E9%97%AE%E9%A2%98%E5%A4%84%E7%90%86%EF%BC%8811g%E8%87%AA%E5%8A%A8%E7%BB%B4%E6%8A%A4%E4%BB%BB%E5%8A%A1%EF%BC%8Clog-file-sync%EF%BC%89.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8520577/viewspace-2113998/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
曾从事java方向开发多年。近年已经转入数据库方向。主要擅长SQL优化,Oracle数据库问题诊断,Oracle备份与恢复等。服务于医药物流,医院等行业

注册时间:2010-01-26

  • 博文量
    602
  • 访问量
    1091582