数据库(oracle)服务器的cpu大于80%,或到90%时,会对系统造成很大的影响。
一般是某些sql执行卡住了,消耗cpu资源,才会高居不下。
数据库服务器top命令截图:
1、如何解决呢?这时候oracle的awr报告或ash报告就起到了很好的作用。
oracle生成awr报告
oracle生成ash报告
awr报告:
ash报告:
2、查询会话。取上图的 SQL Id,如:g51nuh6kzfyu9,执行语句:
select sid,serial#,username ,osuser from v$session where (sql_hash_value,sql_address)=(select hash_value,address from v$sqlarea where sql_id='g51nuh6kzfyu9' );
3、干掉卡住的sql。kill session的sql语句:
399对应sid,45889对应serial#
alter system kill session '399,45889';
alter system kill session '1365,62903';
System altered.就算执行成功。
top命令:
cpu回落,大功告成。
至于为什么会这样,还得根据卡住的sql语句去搜索代码,然后优化。