Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2587400
  • 博文数量: 323
  • 博客积分: 10211
  • 博客等级: 上将
  • 技术积分: 4934
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-27 14:56
文章分类

全部博文(323)

文章存档

2012年(5)

2011年(3)

2010年(6)

2009年(140)

2008年(169)

分类: Oracle

2008-05-25 14:20:02

AIX平台下的ORACLE服务器有时会发生CPU占用率很高的情况,通过TOPAS发现是固定的一个或几个ORACLE进程在占用CPU资源。这时我们想知道这些一直占用CPU资源的ORACLE进程到底在干些什么。只有知道ORACLE到底在干什么才能判断它这样的动作是否合理,然后给出优化意见。具体的步骤如下:
 
1.用TOPAS找出占CPU资源最高的一个进程的PID号:如528888.
 
2.根据PID号找到相应的SID号和SERIAL#:
   SQL>select s.sid,s.serial# from v$session s,v$process p
       where s.paddr=p.addr and p.spid='528888'
   SID         SERIAL#
-------       ----------
  101          23659
 
通过SID也可以把它当前的运行的SQL找出来:
SELECT   sql_text
    FROM v$sqltext a
   WHERE a.hash_value = (SELECT sql_hash_value
                           FROM v$session b
                          WHERE b.SID = '&sid')
ORDER BY piece ASC
 
3.对这个SESSION生成TRACE文件:
   SQL>exec DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(101,23659,true);

4.用TKPROF工具对此TRACE文件进行格式化分析:(TRACE文件在user_dump_dest定义的路径下找最新的)
   $tkprof ###.trc mytrc.txt explain=system/manager aggregate=yes sys=no waits=yes sort=fchela
 
5.对mytrc.txt进行分析。
阅读(1759) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~