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 变量名
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值