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

Oracle 33 大常見等待事件深度解析

     編輯:Oracle 資料庫相關知識

等待事件分類基礎

Oracle 11g 超過 1100 種等待事件,主要分為:

  • Idle(空閒)事件:資料庫等待工作到來,調優時可忽略(如 SQL*Net message from client)。
  • Non-Idle(非空閒)事件:實際消耗資源的等待,調優核心關注點。

可透過 V$EVENT_NAME 查詢事件分類與參數定義。

核心等待事件詳細解析

1. Buffer Busy Waits

多會話同時存取同一資料區塊(Block)導致。常見於熱塊(Hot Block)情境。

  • 參數:file#、block#、class#
  • 對策:增加 DB_BLOCK_LRU_LATCHES、使用多 Buffer Pool、調整應用邏輯分散熱點。

2. Buffer Latch(Cache Buffers Chains)

搜尋 Buffer Hash 鏈表時的 Latch 競爭。熱塊或鏈表過長皆會觸發。

3. Control File Parallel/Sequential Read/Write

控制檔多工寫入或順序讀取。日誌切換頻繁、I/O 瓶頸會加劇。建議調大 Redo Log、分散控制檔至不同磁碟。

4. DB File Scattered/Sequential Read

  • Scattered Read:全表掃描、索引快速全掃描(多區塊讀取,記憶體中分散存放)。
  • Sequential Read:索引範圍掃描、ROWID 存取(單區塊讀取,記憶體中連續存放)。
  • 參數皆為 file#、block#、blocks。

5. Direct Path Read/Write

繞過 SGA 直接在 PGA 進行大量排序、雜湊聯結、並行 DML 或直接載入(APPEND)時產生。暗示臨時表空間壓力或 PGA 不足。

6. Enqueue(鎖等待)

資源鎖定等待。透過 V$SESSION_WAIT 的 P1/P2 解碼可得知鎖類型(TM、TX、UL 等)與模式(SS、SX、X 等)。

7. Free Buffer Waits

需讀取資料區塊卻找不到乾淨 Buffer。原因通常為:Buffer Cache 太小、DBWR 寫入髒區塊跟不上。啟用非同步 I/O 可緩解。

8. Latch Free 及細分 Latch 事件

10g 後常見 Latch 事件獨立列出(如 latch: cache buffers chains、latch: shared pool)。參數含 Latch 位址、編號、嘗試次數。

9. Library Cache Lock/Pin

共用池中物件並發操作導致。DDL 操作(建立/修改物件)會阻塞同物件的 DML 查詢。

10. Log File 系列

  • Log File Sync:COMMIT 時 LGWR 將 Redo 寫入磁碟的等待。頻繁 Commit 的 OLTP 系統常見。解法:批次 Commit、優化 Redo Log I/O。
  • Log File Switch (Checkpoint Incomplete/Archiving Needed):日誌切換受限於檢查點未完成或歸檔未完成。擴大 Redo Log、增加日誌組、檢查 ARCH 進程狀態。

11. SQL*Net 訊息事件

包含 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_HISTORYASH 歷史資料(AWR 保留)

調優建議

  1. 優先關注 Non-Idle 事件且等待時間佔比高者。
  2. 結合 AWR/ASH 報告定位具備 SQL_ID、OBJ# 的具體物件與 SQL。
  3. 針對性調整:索引優化、SQL 改寫、記憶體參數、I/O 架構、應用邏輯(如減少 Commit 頻率)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved