前言:
而今咱们对“oracle数据库cpu占用”大体比较关切,咱们都需要了解一些“oracle数据库cpu占用”的相关知识。那么小编同时在网络上收集了一些有关“oracle数据库cpu占用””的相关内容,希望兄弟们能喜欢,姐妹们快快来了解一下吧!#头条创作挑战赛#
上周四凌晨一点被业务人员电话叫醒,业务层面晚上的批处理任务持续了3小时还没有跑完,按照业务统计的处理进度到第二天早上8点都没法处理完毕,严重影响第二天的业务进展。晚上需要紧急处理。
联系客户方运维,登录数据库查看发现数据库有若干的resmgr:cpu quantum等待事件。于此同时业务服务全部再处理,但是数据库的CPU使用率一直稳定再20%左右。
根据这个情况,这是数据库的资源管理器限制了数据库资源的使用。数据库cpu限额。事件类别是Scheduler,说明与调度相关。查看数据库参数:
用户的数据库版本为11.2.0.4。该参数为空,但是有同时又三个调度任务需要手动关闭,分别是统计信息收集调度任务,auto space advisor, sql tunning advisor。这三个调度任务如果没有关闭,同样会触发数据库资源管理器,从而限制数据库资源的使用。典型的特征就是数据库有resmgr:cpu quantum等待事件产生。
故障处理:
1、关闭数据库三个自动调度任务,方法如下:
---自动分段顾问:标识出应该被重组的段以节约空间,任务名是"auto space advisor"
BEGIN
DBMS_AUTO_TASK_ADMIN.disable(
client_name => 'auto space advisor',
operation => NULL,
window_name => NULL);
END;
/
------关闭sql tunning
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL);
END;
/
----自动统计信息收集,关闭
begin
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);
end;
/
2、关闭隐含参数(需要重启)
alter system set "_resource_manager_always_off"=TRUE scope=spfile sid='*';
alter system set "_resource_manager_always_on"=FALSE scope=spfile sid='*';
故障总结:
1、对于7 * 24小时需要生产的业务系统。数据库必须关闭资源管理器和三个自动调度任务.
2、尽量不要依靠数据库的自动调度任务处理,最常见如统计信息收集,数据库统计信息收集常规的调度是周一到周五晚上10点到凌晨2点,周六周日全天。该任务触发还有其他条件,如表的数据变动量超过5%也会触发,这样就会导致在业务高峰期也触发了统计信息收集。最理想的方案是在数据库主机配置crontab每天凌晨基于业务用户手动收集一次。
3、resmgr:cpu quantum等待事件一旦产生马上想到的就是数据库自动调度和资源管理器相关参数,需要立即关闭,不然数据库的业务方一直限制资源使用率在20%左右。严重影响生产业务性能。
标签: #oracle数据库cpu占用 #oracle分段函数 #oracle系统慢