首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle CPU 性能診斷:核心 SQL 與會話分析查詢大全

     編輯:Oracle 教學

Oracle CPU 性能診斷核心查詢腳本

當資料庫 CPU 飆高時,快速定位高消耗 SQL 與會話是解決問題的關鍵。本文彙總從系統級解析到會話級鑽取的完整查詢集,幫助 DBA 在幾分鐘內鎖定性能瓶頸。

一、系統級解析視角

-- 1. 找出硬解析最多的 SQL(parse_calls 高通常意味著未使用綁定變數)
select sql_text, parse_calls, executions
from v$sqlarea
order by parse_calls desc;

-- 2. 檢視實例級解析統計
select name, value
from v$sysstat
where name like 'parse count%';

-- 3. 作業系統級 CPU 佔用與負載
select * from v$osstat;

二、會話級 CPU 消耗排名

-- 4. 列出所有會話的 CPU 使用時間(微秒),按降序排列
select ss.sid, se.command, ss.value CPU, se.username, se.program
from v$sesstat ss, v$session se
where ss.statistic# in (select statistic# from v$statname where name = 'CPU used by this session')
  and se.sid = ss.sid
  and ss.sid > 6
order by CPU desc;

三、深入鑽取高 CPU 會話的等待事件與 SQL

-- 5. 指定 SID 查看其等待事件與 SQL 全文
select s.sid, s.event, s.machine, s.osuser, s.wait_time,
       w.seq#, q.sql_text
from v$session_wait w, v$session s, v$process p, v$sqlarea q
where s.paddr = p.addr
  and s.sid = &p
  and s.sql_address = q.address;

-- 6. 綜合視圖:CPU 前 10 會話的等待狀態、進程資訊與 SQL 文本
select s.sid, w.wait_time, w.seconds_in_wait, w.state, w.wait_time_micro,
       p.username, s.status, s.server, s.schemaname, s.osuser, s.machine,
       p.terminal, p.program, s.logon_time, w.event, w.wait_class,
       s.tracefile, q.sql_text, q.last_active_time
from v$session_wait w, v$session s, v$process p, v$sqlarea q
where s.paddr = p.addr
  and s.sid in (
    select sid from (
      select ss.sid
      from v$sesstat ss, v$session se
      where ss.statistic# in (select statistic# from v$statname where name = 'CPU used by this session')
        and se.sid = ss.sid
        and ss.sid > 6
      order by ss.value desc
    ) where rownum < 11
  )
  and s.sql_address = q.address;

四、診斷思路建議

  1. 先用查詢 4 找出 Top CPU 會話 SID;
  2. 用查詢 5 或 6 獲取其當前等待事件與 SQL 文本;
  3. 若等待事件為 latch: cache buffers chains 或 library cache,結合查詢 1 分析硬解析或熱塊競爭;
  4. 檢查 SQL 執行計劃,優化索引或改寫 SQL;
  5. 若為應用層問題(如連接池未使用綁定變數),協助開發修正代碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved