这个没办法处理优化,只能是提高电脑配置,或者是换其他版本的oracle,建议使用10g。
解释:oracle运行程序本身就比较占内存,并且要启动三个实例才可以运行,所以建议可以更换个大的内存条(最少4G),安装64位系统。
备注:建议不用oracle的情况下可以把oracle的进程都停掉,减少内存占用。
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)