监控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 = '';