oracle 查询cpu 100%,Oracle 11g中查询CPU占有率高的SQL

oracle版本:oracle11g

背景:今天在Linux中的oracle服务上,运用top命令发现许多进程的CPU占有率是100%。

7274ae7b97611e1b1a5bd1a783274b0a.png

操作步骤:

以进程PID:7851为例

执行以下语句:

方法一:

(1)通过PID,查得相对应的系统进程对应的session id

select sid from v$session where paddr in (select addr from v$process where spid=7851

得到SID:206

(2)根据所得的会话ID查得sql地址和hash值

select sql_address,sql_hash_value from v$session where sid=206

得到:SQL_ADDRESS:6EC554F4      SQL_HASH_VALUE:3141392848

(3)根据sql hash值查得sql语句

select sql_text from v$sqltext where hash_value=3141392848

得到SQL语句:INSERT INTO TEST SELECT * FROM SYS.DBA_OBJECTS      此SQL语句就是此进程CPU占有率过高的语句了。

方法二:

SELECT

sql_text

FROM v$sqltext a

WHERE (a.hash_value, a.address) IN

(SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),

DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)

FROM v$session b

WHERE b.paddr =

(SELECT addr FROM v$process c WHERE c.spid = 7851))

ORDER BY piece ASC

通过此SQL语句可以直接得出:

INSERT INTO TEST SELECT * FROM SYS.DBA_OBJECTS      此SQL语句就是此进程CPU占有率过高的语句了。

原文:https://www.cnblogs.com/xiangxiushu/p/13613600.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值