oracle数据库CPU过高问题定位、分析(总结)
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,一、为ASH、AWR、ADDM、SPA分别开启会话,并使用会话跟踪:--ASHalter session set events '10046 trace name context forever,le
千家信息网最后更新 2025年02月01日oracle数据库CPU过高问题定位、分析(总结)
一、为ASH、AWR、ADDM、SPA分别开启会话,并使用会话跟踪:
--ASH
alter session set events '10046 trace name context forever,level 12';Session altered.SQL> @ashrptSQL> alter session set events '10046 trace name context off';
--AWR
SQL> alter session set events '10046 trace name context forever,level 12';Session altered.SQL> @awrrptSQL> alter session set events '10046 trace name context off';
--ADDM
SQL> alter session set events '10046 trace name context forever,level 12';Session altered.SQL> var task_name varchar2(30);SQL> exec DBMS_ADDM.ANALYZE_DB(:task_name,57,58);PL/SQL procedure successfully completed.SQL> print :task_nameTASK_NAME--------------------------------------------------------------------------------TASK_366SQL> set long 1000000 pagesize 0;SQL> select dbms_addm.get_report('TASK_366') from dual;SQL> alter session set events '10046 trace name context off';
--SPA
SQL> alter session set events '10046 trace name context forever,level 12';SQL> begin dbms_sqltune.create_sqlset( sqlset_name=>'cpu_2', description => 'High cpu read tuning set'); end; / 2 3 4 5 6 PL/SQL procedure successfully completed.SQL> declare base_cur dbms_sqltune.sqlset_cursor; begin open base_cur for select value(x) from table(DBMS_SQLTUNE.select_workload_repository(57,58,NULL,NULL,'cpu_time',NULL,NULL,NULL,10)) x; -- dbms_sqltune.load_sqlset(sqlset_name=>'cpu_2',populate_ 2 3 4 5 6 7 cursor => base_cur); end; / 8 9 PL/SQL procedure successfully completed.SQL> variable sts_task VARCHAR2(64);SQL> EXEC :sts_task :=DBMS_SQLPA.CREATE_ANALYSIS_TASK(sqlset_name=>'cpu_2',order_by=>'cpu_time',description=>'process workload ordered by cpu_time');PL/SQL procedure successfully completed.SQL> EXEC DBMS_SQLPA.execute_analysis_task(task_name=>:sts_task,execution_type=>'CONVERT SQLSET',execution_params=>dbms_advisor.arglist('TIME_LIMIT','1800'));PL/SQL procedure successfully completed.SQL> set long 1000000 pagesize 0;SQL> select DBMS_SQLPA.report_analysis_task(:sts_task,'HTML','ALL','ALL') from dual;SQL> alter session set events '10046 trace name context off';
二、通过tkprof解析跟踪文件
tkprof orcl_ora_21955.trc /home/oracle/ash.txt
tkprof orcl_ora_22077.trc /home/oracle/awr.txt
tkprof orcl_ora_22087.trc /home/oracle/addm.txt
tkprof orcl_ora_22092.trc /home/oracle/spa.txt
三、查看解析结果
--ASH
call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 1041 0.39 0.39 0 252 0 0Execute 1165 2.42 2.43 0 3352 7 12Fetch 2426 0.09 0.07 81 4688 126 1848------- ------ -------- ---------- ---------- ---------- ---------- ----------total 4632 2.90 2.90 81 8292 133 1860
--AWR
call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 1386 0.19 0.19 0 14 0 0Execute 3630 0.81 0.81 1 1213 8 1Fetch 9177 0.30 0.41 195 118457 3421 7597------- ------ -------- ---------- ---------- ---------- ---------- ----------total 14193 1.31 1.42 196 119684 3429 7598
--ADDM
call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 555 0.03 0.03 0 74 0 0Execute 1915 0.16 0.16 5 2294 322 91Fetch 4988 0.04 0.03 0 10032 3 4861------- ------ -------- ---------- ---------- ---------- ---------- ----------total 7458 0.24 0.23 5 12400 325 4952
--SPA
call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 1311 0.11 0.12 0 507 0 0Execute 4131 0.41 0.51 15 7701 850 232Fetch 10741 0.13 0.16 16 32068 4 10646------- ------ -------- ---------- ---------- ---------- ---------- ----------total 16183 0.66 0.80 31 40276 854 10878
四、分析结果
通过上述结果可以发现,
query(buffer)的使用消耗优先排列为:ash=>addm=>spa=>awr
disk(磁盘)的使用消耗优先排列为:addm=>ash=>spa=>addm
cpu的使用消耗优先排列为:addm=>spa=>awr=>ash
生产环境定位问题时,可以将上述结果作为参考,避免CPU过高时仍使用cpu消耗过大的工具;【实验中ash的取时范围为1小时,生产环境中往往使用ash皆是查看几分钟的区间,因此ash的性能消耗是最低的】
五、关于性能视图与会话跟踪,性能消耗相对更低,但可阅读性相比上述工具略差,可根据个人习惯进行选择
消耗
结果
性能
跟踪
工具
环境
生产
问题
分析
定位
最低
个人
区间
小时
文件
磁盘
视图
时范
参考
实验
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么在支付宝里查数据库
怀柔区大型软件开发操作
计算机网络技术能不能专升本
佳能软件开发包
科技互联网部的责任
乌镇互联网领先科技成果
通州回收二手服务器价格多少
加强网络安全防护能力 强化
企业网络安全分级必要性
建国以来网络技术发展成就
如何显示服务器当前时间
章丘档案局网络安全
接受邮件服务器
trip数据库上绿色代表什么
网络安全部设立在哪里
国潮与网络安全
安卓机电脑如何打开数据库
网络安全高度多少
转录组分析服务器多少钱
配套软件开发票单位怎么填
保持网络安全不松懈
软件开发部是做什么的
tp获取查询一条数据库
odi 数据库密码配置文件
手机软件开发阶段
choices数据库实验报告
服务器模组生存全集
软件开发者模式是什么
山西启智互动网络技术有限公司
安卓机电脑如何打开数据库