Oracle数据库服务器CPU一直100%怎么办

Oracle数据库服务器CPU一直100%怎么办,第1张

topas/top 看下是不是oracle进程占用的cpu。

然后查看下oracle数据库中都在跑哪些语句

多数都是效率较差的sql语句导致cpu使用率过高的,一般通过优化sql即可解决。

可用如下语句查看哪些执行时间较长的sql:

Select b.USERNAME,

b.SID,

a.SQL_ID,

a.SQL_TEXT,

a.sql_fulltext,

b.EVENT,

a.executions,

-- trunc(((decode(a.EXECUTIONS,0,0,a.cpu_time / a.executions)) / 10000)) c_time, ---单位零点秒

trunc(((decode(a.EXECUTIONS,0,0,a.ELAPSED_TIME / a.executions)) / 10000)) e_time,

--trunc(cpu_time/10000) cpu_time,

trunc(a.ELAPSED_TIME/10000) ELAPSED_TIME ,

a.DISK_READS,

a.BUFFER_GETS,

b.MACHINE,

b.PROGRAM

From v$sqlarea a, v$session b

Where executions >=0

And b.status = 'ACTIVE'

and a.SQL_ID = b.SQL_ID

-- and b.USERNAME='DB_WTDZ'

-- and trunc(((a.cpu_time / a.executions) / 1000000))>5

Order By e_time desc

解决方案

将mysqld的内存库函数替换成tcmalloc,相比ptmalloc,tcmalloc可以更好的支持高并发调用。

修改my.cnf,添加如下参数并重启

[mysqld_safe]malloc-lib=tcmalloc

上周五早上7点执行的操作,到现在超过72小时,期间该实例没有再出现cpu长期飙高的情形。

以下是修改前后cpu使用率对比


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/287339.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存