概述
很多时候我们的服务器可能会经历CPU消耗100%的性能问题.
排除系统的异常,这类问题通常都是因为系统中存在性能低下甚至存在错误的SQL语句, 消耗了大量的CPU所致.
本文通过一个案例就如何捕获这样的SQL给出一个通用的方法.
问题描述:系统CPU高度消耗,系统运行缓慢
1.首先通过Top命令查看
发现在进程列表里,存在两个高CPU耗用的Oracle进城,分别消耗了47.77%和40.98%的CPU资源。
2.找到存在问题的进程信息
确认这是两个远程连接的用户进程。
3.执行getsql.sql脚本
SELECT /*+ ORDERED */
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$sess