Oracle内存和CPU占用率极高,是什么问题

Oracle内存和CPU占用率极高,是什么问题,第1张

问题分析:

一般cpu占用效高都是排序、sql解析和全表扫描,这里首先需要找出占用cpu最高的sql,然后查看他的执行计划,比如:看执行计划是走索引还是全表扫描(刚开始查看top发现占用同样多的CPU的进程很多,还以为是oracle 的bug, 后来发现不是)。

处理过程:

1, 根据 *** 作系统进程查找Oracle数据库中占用最多CPU的SQL

使用Linux系统 "top命令->P "查出占用cpu最高的进程PID

*** 作如下:在sqlplus中执行如下sql:

SQL>

SELECT

sql_text

FROM v$sqltext a

WHERE (ahash_value, aaddress) IN

(SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),

DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)

FROM v$session b

WHERE bpaddr =

(SELECT addr FROM v$process c WHERE cspid = '&pid'))

ORDER BY piece ASC

其中&pid 是使用top 查看系统中进程占用CPU极高的PID

找到SQL语句进行相应的调整优化

2,分析找到的sql语句,如查看sql执行计划。

load average 就是 CPU 的 Load

它表示 CPU 使用队列的长度 这个数字越小越好

这里有一个误区 那就是 CPU 利用率高 并不意味着负载就一定大!

1打开SQL Server Profiler

2新建跟踪 a点击新建跟踪,并设置好数据库连接 b设置跟踪属性,选择模板“Standard” c切到“事件选择”进行跟踪设置 1) 只保留如下两个事件选项 2) 点

3点击运行,跟踪语句,定位CPU占用较多的语句 CPU占用2660146毫秒,

4根据语句特征,在你的服务器程序中找到相应的功能,作出修正 41) 分析查询中需

一个死循环,让我的sql数据库的cpu一下到了100%,我不得不花了一些时间,将这个死循环找出来了。。。

[@more@]

1、从微软站点上下载qslice_setupexe

2、打开Query Analyzer,运行以下语句:

declare @a int

while (1<2)

begin

select @a=1

end

将会发现cpu马上达到100%

3、打开qliceexe,将发现sqlserverexe的cpu占用率很高,双击进入,出行sqlserverexe中具体线程的执行情况

4、活动运行cpu高的那个id,为16进制的,先将他转换为10进制

5、将这个10进制数,作为参数运行以下查询:

select spid from sysprocesses where kpid=1756

6、将这个spid运行的sql导出:

DBCC TRACEON(3604)

DBCC INPUTBUFF(57)

7、杀掉这个spid

kill 57

over

CPU占用100%解决办法:

一般情况下cpu占了100%的话我们的电脑总会慢下来,而很多时候我们是可以通过做一点点的改动就可以解决,而不必问那些大虾了。

最大可能病毒攻击成功的病症,会占用大量系统资源,使CPU占用率达到100%,电脑运行异常缓慢,会提示内存不足。建议进入安全模式下,设法清除已经潜藏在你的机器上的木马、病毒。

当机器慢下来的时候,首先我们想到的当然是任务管理器了,看看到底是哪个程序占了较搞的比例,如果是某个大程序那还可以原谅,在关闭该程序后只要cpu正常了那就没问题;如果不是,那你就要看看是什么程序了,当你查不出这个进程是什么的时候就去google或者baidu搜。有时只结束是没用的,在xp下我们可以结合msconfig里的启动项,把一些不用的项给关掉。在2000下可以去下个winpatrol来用。

一些常用的软件,比如浏览器占用了很搞的cpu,那么就要升级该软件或者干脆用别的同类软件代替,有时软件和系统会有点不兼容,当然我们可以试下xp系统下给我们的那个兼容项,右键点该exe文件选兼容性。

svchostexe有时是比较头痛的,当你看到你的某个svchostexe占用很大cpu时你可以去下个aports或者fport来检查其对应的程序路径,也就是什么东西在掉用这个svchostexe,如果不是c:\windows\system32(xp)或c:\winnt\system32(2000)下的,那就可疑。升级杀毒软件杀毒吧。

右击文件导致100%的cpu占用我们也会遇到,有时点右键停顿可能就是这个问题了。官方的解释:先点左键选中,再右键(不是很理解)。非官方:通过在桌面点右键-属性-外观-效果,取消”为菜单和工具提示使用下列过度效果(U)“来解决。还有某些杀毒软件对文件的监控也会有所影响,可以关闭杀毒软件的文件监控;还有就是对网页,插件,邮件的监控也是同样的道理。

一些驱动程序有时也可能出现这样的现象,最好是选择微软认证的或者是官方发布的驱动来装,有时可以适当的升级驱动,不过记得最新的不是最好的。

cpu降温软件,由于软件在运行时会利用所以的cpu空闲时间来进行降温,但windows不能分辨普通的cpu占用和降温软件的降温指令之间的区别,因此cpu始终显示100%,这个就不必担心了,不影响正常的系统运行。

在处理较大的word文件时由于word的拼写和语法检查会使得cpu累,只要打开word的工具-选项-拼写和语法把”检查拼写和检查语法“勾去掉。

单击avi视频文件后cpu占用率高是因为系统要先扫描该文件,并检查文件所有部分,并建立索引;解决办法:右击保存视频文件的文件夹-属性-常规-高级,去掉为了快速搜索,允许索引服务编制该文件夹的索引的勾。

此外就是病毒攻击成功的病症,会占用大量系统资源,使CPU占用率达到100%,电脑运行异常缓慢,会提示内存不足。建议进入安全模式下,设法清除已经潜藏在你的机器上的木马、病毒。

打开SQL Server Profiler

新建跟踪

a点击新建跟踪,并设置好数据库连接

b设置跟踪属性,选择模板“Standard”

c切到“事件选择”进行跟踪设置

1) 只保留如下两个事件选项

2) 点击列筛选

3) 进行详细筛选设置

设置CPU时间作为筛选条件,单位毫秒(用于跟踪耗CPU占用较长的查询,可设置为大于等于20000,按CPU内核数×1000,可以跟踪CPU占用100%大于1秒的查询)

点击运行,跟踪语句,定位CPU占用较多的语句

如下图所示,CPU占用2660146毫秒,CPU为24 核,则至少CPU占用100%耗时2660146/24/1000 = 110秒才可以执行好相应的 *** 作

4

根据语句特征,在你的服务器程序中找到相应的功能,作出修正

41) 分析查询中需要检索数据量较大的部分,作出简单修正(如注销)

42) 更新后重新执行此查询,查看profiler中是否CPU占用消失

43) 如果已消失说明问题定位正确,可以优化查询,若CPU占用任然很多,则回滚修改,继续41 *** 作

以上就是关于Oracle内存和CPU占用率极高,是什么问题全部的内容,包括:Oracle内存和CPU占用率极高,是什么问题、mysql 怎么查询某个数据库占用cpu使用率、sql server cpu占用过高等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9696594.html

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

发表评论

登录后才能评论

评论列表(0条)

保存