诊断和解决CPU利用率过高的解决经历

相信熟悉Oracle的人经常会碰到一下几个问题:

1. CPU利用率过高

2. 磁盘争抢平凡(IO过高)

3. 执行存储过程中遇到和预计的时间相差很悬殊

以上这几个问题非常棘手,特别是第三点,特别是在金融行业,交易系统一般需要在晚上非交易时间内计算完庞大的数据,否则就会影响到第二天的交易

针对以上几个问题,我来讲一下在一起项目中碰到过的一次Procedure的经历

操作系统:Red Hat Linux 9
数 据 库:Oracle 9.2.0.4
问题描述:原本计算在30分钟运行完的Procedure,居然跑了2个半小时,而且明显CPU过高

首先我们通过查看alert*.log,并没有在运行过程当中出现任何的警告和错误信息

那么我们就要查看一下SQL到底在做些什么事情,查询SQL如下所示:

select sql_text,spid,b.program,process
    from v$sqlarea a,
             v$session b,
             v$process d
    where a.address = b.sql_address
         and a.hash_value = b.sql_hash_value
         and b.paddr = d.addr
         and d.spid in (进程ID);

进程ID我们可以通过TOP命令查看到

 得出有一条SQL语句在运行中竟然耗费了将近1.5小时的时间,并且CPU占用的非常大
 所以基本上可以断定是这条SQL语句造成的,所以我们可以通过以下2个方面来进行处理:

 首先我们通过查看v$session_wait来查看队列,SQL如下:

 SQL>select sid,event,p1,p1text from v$session_wait

 通过查看,大多都属于latch free状态,那么我们就查一下是什么原因产生了latch free状态,SQL如下:

 SQL>select spid from v$process where addr in (select paddr from v$session where sid in(.........));

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/111631/viewspace-586475/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/111631/viewspace-586475/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值