aix系统cpu使用率过高

今天发现oracle的cpu使用率过高,由于机器上只要oracle,初步估计,应该是sql语句引起的,通过操作发现,果然是sql语句引起的,具体操作如下
ix命令 topas 查到cpu使用率过高,平均达到94,

部分如下

Name            PID  CPU%  PgSp Owner
oracle       606274   6.7  18.6 oracle
oracle      1507346   6.1  18.6 oracle
crsd.bin     364596   0.3  46.9 root  
sh           409808   0.1   0.6 root  
topas        737462   0.1   2.5 root  
topas       1413372   0.1   2.5 oracle
dtgreet      110798   0.1   1.4 root  
oracle       659548   0.1  30.2 oracle
ocssd.bi     442452   0.1  35.9 oracle
oracle       598074   0.1  12.4 oracle
根据猜测有可能是数据库链接没能释放引起的,可以通过进程pid查找
具体的sql来判断
命令如下
1)登陆oracle:
$sqlplus / as sysdba;
2)通过进程pid查询session的id


SQL> select ses.sid from v$session ses, v$process pro where pro.spid=606274 and ses.paddr=pro.addr;

       SID
----------
      1099
3)通过v$session查找具体信息
SQL> select username,lockwait,status,machine,program from v$session where sid = 1099;
4)通过v$session查找具体的sql语句

SQL> select sql_text from v$sql where hash_value in 
   (select sql_hash_value from v$session where sid = 1099 );

 根据sql语句判断是否需要杀死进程,如需要杀死

 kill -9 606274


也可以用
select sql_text,spid,v$session.program,process from 
v$sqlarea,v$session,v$process
where v$sqlarea.address=v$session.sql_address and v$sqlarea.hash_value=v$session.sql_hash_value
and v$session.paddr=v$process.addr
and v$process.spid in (&PID);


利用绑定变量
select sql_text from v$sql where hash_value in  (select sql_hash_value from v$session where sid = (select ses.sid from v$session ses, v$process pro where pro.spid= &pid and ses.paddr=pro.addr) );

&pid 变量名

猜你喜欢

转载自stevenfeng.iteye.com/blog/1707291
今日推荐