性能調優非單次動作,而是持續迭代的閉環過程。本文梳理出九步標準化流程,結合Statspack實戰操作與等待事件分析技巧,助您從癥狀定位到根因解決。
核心原則:目標必須可量化、可達到。採用填空式描述:
「目前耗時 X 秒/分/時,需降至 Y 秒/分/時。」
「目前消耗 Z 資源,不得超過 W。」
核心視圖:v$system_event、v$session_event、v$session_wait。
步驟:
v$session_event與v$session,鎖定高等待會話(STATUS='ACTIVE')。v$session_wait查詢,捕捉動態等待熱點。dba_extents定位具體段(表/索引)。v$sqltext或自定義GetSQLtxt函數還原完整SQL文本。當前會話:
ALTER SESSION SET timed_statistics=TRUE;
ALTER SESSION SET max_dump_file_size=UNLIMITED;
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
指定會話:
1. 查詢SPID:SELECT s.username, p.spid FROM v$session s, v$process p WHERE s.paddr=p.addr AND s.username LIKE 'A%';
2. Sysdba下執行:
ORADEBUG SETOSPID <SPID>
ORADEBUG UNLIMIT
ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12
事後在USER_DUMP_DEST目錄搜尋「WAIT」關鍵字行。
| 資源 | Unix/Linux工具 | 關鍵閾值 |
|---|---|---|
| CPU | sar -u 5 1000 | %sys + %wio < 10-15% |
| 磁碟I/O | sar -d 5 1000 | %busy < 60%,avserv < 100ms |
| 虛擬記憶體 | vmstat -S 5 1000 | run queue (r) < 2 × CPU核心數 |
Windows可使用「效能監視器」計數器。
遵循此九步法,配合Statspack/10046 Event工具鏈,可將主觀經驗轉化為數據驅動的科學調優體系。