Oracle 11g 超過 1100 種等待事件,主要分為:
SQL*Net message from client)。可透過 V$EVENT_NAME 查詢事件分類與參數定義。
多會話同時存取同一資料區塊(Block)導致。常見於熱塊(Hot Block)情境。
file#、block#、class#DB_BLOCK_LRU_LATCHES、使用多 Buffer Pool、調整應用邏輯分散熱點。搜尋 Buffer Hash 鏈表時的 Latch 競爭。熱塊或鏈表過長皆會觸發。
控制檔多工寫入或順序讀取。日誌切換頻繁、I/O 瓶頸會加劇。建議調大 Redo Log、分散控制檔至不同磁碟。
file#、block#、blocks。繞過 SGA 直接在 PGA 進行大量排序、雜湊聯結、並行 DML 或直接載入(APPEND)時產生。暗示臨時表空間壓力或 PGA 不足。
資源鎖定等待。透過 V$SESSION_WAIT 的 P1/P2 解碼可得知鎖類型(TM、TX、UL 等)與模式(SS、SX、X 等)。
需讀取資料區塊卻找不到乾淨 Buffer。原因通常為:Buffer Cache 太小、DBWR 寫入髒區塊跟不上。啟用非同步 I/O 可緩解。
10g 後常見 Latch 事件獨立列出(如 latch: cache buffers chains、latch: shared pool)。參數含 Latch 位址、編號、嘗試次數。
共用池中物件並發操作導致。DDL 操作(建立/修改物件)會阻塞同物件的 DML 查詢。
包含 message from/to client/dblink、more data from/to client/dblink、break/reset。多為網路延遲、客戶端處理緩慢、大量資料傳輸分包所致。屬 Idle 事件者可忽略,非 Idle 需檢查網路與應用設計。
| 視圖 | 用途 |
|---|---|
| V$SESSION_WAIT | 即時會話等待狀態 |
| V$SESSION_WAIT_HISTORY | 會話最近 10 次等待 |
| V$SYSTEM_EVENT | 啟動以來系統級等待彙總 |
| V$ACTIVE_SESSION_HISTORY | 每秒取樣的活動會話歷史(ASH 核心) |
| DBA_HIST_ACTIVE_SESS_HISTORY | ASH 歷史資料(AWR 保留) |