sar -u 5 5 # 每 5 秒取樣 5 次
topas
ps -ef | grep ora # 觀察第 4 欄 C (CPU 使用率,單位 100 per CPU)
/usr/sbin/bindprocessor -q
lsattr -El proc0
SELECT ss.sid, se.command, ss.value AS cpu_usage,
se.username, se.program
FROM v$sesstat ss, v$session se
WHERE ss.statistic# = (
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;
SELECT s.sid, w.event, w.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 = &target_sid
AND s.sql_address = q.address;
parallel_min/max_servers=0) 並移除 Hint;v$session_longops 顯示正在執行/已完成的長作業,每 Process 完成刷新一次,可即時掌握進度,補足事後分析盲區。
若多進程平均佔用 CPU,極大機率執行相同 Package/Query。建議:
SQL_TRACE + TKPROF 深度追蹤;table scans (long tables) 是否異常。| 參數 | 建議值 (OLTP) | 說明 |
|---|---|---|
| parallel_min_servers | 0 | 關閉並行查詢 |
| parallel_max_servers | 0 | 關閉並行查詢 |
| parallel_automatic_tuning | FALSE | 關閉自動並行 |
並持續監控 SQL Hint 是否強制並行。
CPU 100% 診斷鏈:OS 確認 → 進程定位 → Session 識別 → SQL/計劃分析 → 索引/統計/參數調整 → 長作業監控 → 並行查詢管控。建立標準化排查手冊,可將 MTTR 降至最低。