oracle_CPU占用率高时的问题定位

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

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

转载于:http://blog.itpub.net/27038344/viewspace-746096/

你可能感兴趣的:(oracle_CPU占用率高时的问题定位)