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 (a.hash_value, a.address) 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 b.paddr =

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

ORDER BY piece ASC

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

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

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

服务器内存占用过高的解决方法:

1,首先通过任务管理器进行进程排序,查找占用内存较大的程序进程。一般占用内存较大的进程有W3WP、sqlserver、mysqld-nt.exe;

2, 站点进程w3wp 可以在cmd命令行中通过 iisapp 命令来对应是那个网站占用内存较大。可以通过设置回收时间、内存最大使用值或共用进程池来减少内存的占用,但是如果要保证网站的访问质量,还是建议升级至更高型号来解决;

3,数据库 sql server 也可以通过数据库的企业管理器来设置最大内存占用,但是如果网站程序必须要占用较大内存的话,设置后会发生页面报错、打不开等问题;

4,MYSQL本身会占用较大虚拟内存,如果不使用mysql数据库的话,可以将其停止。

这种情况说明主机内存过小或者系统没有经过优化。

一、首先从硬件入手,添加内存是最直接的解决方法,如果内存低于4G那么还是建议添加内存,这样才能根本解决问题。

二、排除内存过小,那么就是系统没有经过优化,可以尝试使用第三方软件或者手动优化解决内存使用率过高。

1、是用360加速球点击清理即可清理内存。

只是点击一键加速是不够的,需要打开360安全卫士,点击电脑清理,选择全面清理。

2、禁用闲置的IDE通道 右键点击“我的电脑-属性”,然后点击“硬件”接着点击“设备管理器”,在其中打开“IDE ATA/PATA控制器”然后分别进入主要和次要IDE通道,选择“高级设置”,在这里找到“当前传送模式”为“不适用”的一项,将此项的“设备类型”设置为“无”。

3、优化视觉效果,关闭“视觉效果”中不需要的效果 右键单击“我的电脑”,点击“属性”,点击“高级”,在“性能”一栏中,点击“设置”,点击“视觉效果”,在这里把所有特殊的外观设置都关闭掉,我们就可以省下“一大笔”内存。

4、优化启动和故障恢复 右键单击"我的电脑"-"属性"-"高级"-"启动和故障修复"中点击“设置”,去掉"将事件写入系统日志","发送管理警报","自动重新启动"选项将"写入调试信息"设置为"无"点击"编辑",在d出记事本文件中:[Operating Systems] timeout=30 把 30 秒改为 0 秒。

5、禁用错误报告 右键单击"我的电脑"-"属性”-"高级”-"错误报告”,点选“禁用错误汇报”,勾选"但在发生严重错误时通知我”-确定。

6、关闭系统还原 右键单击“我的电脑”,点击“属性”,会d出来系统属性对话框,点击“系统还原”,在“在所有驱动器上关闭系统还原”选项上打勾。


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

原文地址: http://outofmemory.cn/sjk/6462097.html

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

发表评论

登录后才能评论

评论列表(0条)

保存