oracle运行系统比较慢,cpu使用率高的检查和紧急处理

当运行数据库的系统资源压力比较大的时候,,系统资源利用率比较告,通过# sar 1 5观察系统wio比较高,或者CPU idle利用率比较低,cpu比较忙;或者还会有内存使用率比较高,并且不断的上升;
原因是可能有一些进程占用了大量的cpu或者mem资源,长时间不能释放,累积占用资源比较高,可以如下进行检查系统情况:
查看系统中使用mem资源比较多的进程:

ps -elf|awk '$10 >16000 {print  }'| sort -rnk 10

查看系统中使用CPU资源比较多的进程:

top -n500 -f top.out

可以找出分别占用cpumem最多的进程,如果是oracle的进程,其中有LOCAL=NO是我们需要关注的oracle进程,可以通过如下语句查看具体执行的是什么语句:先要知道进程的pid号;

得到进程的sid号:
select serial#,
       username,
       osuser,
       machine,
       program,
       process,
       to_char(logon_time, 'yyyy/mm/dd hh24:mi:ss') logon
  from v$session
 where paddr in (select addr from v$process where spid in ('&pid''));


得到sessionsqltext语句:

select sql_text from v$sqltext_with_newlines where hash_value in (select SQL_HASH_VALUE from v$session where paddr in (select addr from v$process where spid= '&pid')) order by piece;

    或者通过如下一样的语句输入pid号查出:

SELECT /*+ ORDERED */
 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

 

 然后可以分析这些sql语句,看是否是语句本身的问题,并可以通过考虑是否需要将这些语句给kill掉;

 

以上的内容主要是针对紧急处理的情况,暂时强行将使用cpu较高的进程给kill掉,以保证业务的正常运行;如果要了解深入的原因,可以将当时运行的语句提出出来,做进一步的分析,查看语句是否合理等等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值