首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 捕獲問題 SQL 解決 CPU 100% 實戰案例:從 vmstat 到 v$session_wait 全流程診斷

     編輯:Oracle 資料庫相關知識

案例環境

  • OS: Solaris 8
  • Oracle: 8.1.7.4
  • 症狀:開發回報系統緩慢,影響業務

診斷流程

1. OS 層面確認 CPU 耗盡

vmstat 3
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s6 s9 s1 sd in sy cs us sy id
131 0 0 ... 97 3 0
131 0 0 ... 96 4 0
...(持續 us 95%+,id 0)

us (user) 長期 95%+,id 為 0,CPU 完全被用戶進程佔滿。

2. Top 觀察進程

top
CPU states: 0.0% idle, 96.5% user, 3.5% kernel
PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
27082 oracle8i 1 33 0 1328M 1309M run 0:17 1.29% oracle
26719 oracle8i 1 55 0 1327M 1306M sleep 0:29 1.11% oracle
...(約 300 個 oracle 進程,各佔 1% 左右 CPU)

無單一進程佔用極高,但進程總數 ~300(正常 ~100),大量進程分攤導致 CPU 滿載。

3. 確認進程數異常

ps -ef | grep ora | wc -l
258 ~ 366  (正常應 ~100)

後續分析方向(下頁續)

需進一步檢查:應用連接池配置、長時間運行 SQL、鎖爭用、Parallel Query 設定等。完整六頁分析將深入 v$session_wait、SQL Trace、Statspack 等工具定位根因。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved