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 变量名

你可能感兴趣的:(oracle)