您的位置:首页 > 数据库 > Oracle

oracle_CPU占用率高时的问题定位

2013-04-28 13:27 176 查看
监控cpu的使用率

通过topas、nmon、vmstat 等工具监控cpu的使用率:

问题定位

通过等待事件定位:

这种情况在操作系统级别看有大量占cpu 高的进程。

1、查询数据库中session的等待情况:

SELECT event, COUNT(9) FROM v$session GROUP BY event;

注意事件为 latch free,cache buffer chains,shared pool,buffer busy wait等分组的数量,这些事件会消耗大量cpu。

2、查询有问题的session正在运行的sql语句:

SELECT sql_id, COUNT(9)

FROM v$session

WHERE event = 'latch free'

GROUP BY sql_id;

查看每个sql语句被多少个session在执行,定位问题是否是sql语句的大量运行引起的。

3、查看详细sql:

SELECT sql_fulltext FROM v$sql WHERE sql_id = '';

通过后台进程号定位:

这种情况在操作系统级别看有一个或两个持续占cpu 高的进程。

1、通过topas查看进程号(spid)

2、通过spid 取得相关联的session

取得paddr进行关联

Select addr from v$process where spid=5525626;

Select USERNAME,status,osuser,machine,terminal,program,module,sql_id,event from v$session

Where padd=’07000003395E8F40’;

Event 为等待事件,重点关注

3、查看session的等待事件、运行语句、调用模块等信息

SELECT sql_fulltext FROM v$sql WHERE sql_id = '';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: