非空閒等待事件

wadekobe9發表於2012-01-19

這裡總結了幾種常見的非空閒等待事件

buffer busy waits:表示在等待對資料高速緩衝區的訪問,這種等待事件通常出現在會話讀取資料到buffer中或者修改buffer中的資料時,例如DBWR正在寫一些資料塊到資料檔案的同時,其他程式需要去讀取相應的資料塊。同時也可能表示著在表上設定的free list太少了,不能大量併發的insert操作。在v$session_wait檢視的p1欄位值表示相關資料塊所在的檔案編號,P2則表示檔案上的塊編號,通過dba_data_filedba_extents聯合查詢就可以很快的定位到發生競爭的儲存物件。

 

db file parallel write: dbwr程式相關的等待,一般代表I/O能力出現了問題。通常與配置的多個DBWR程式或者是DBWRI/O salves個數有關,當然也意味著在裝置上存在I/O競爭

 

db file scattered read: 表示發生了與全表掃描相關的等待。通常意味著全表掃描過多, 或者I/O能力不足或者是I/O競爭

 

db file sequential read:  表示發生了與索引掃描相關的等待。同樣意味著/O能力不足或者是I/O競爭

 

db file single write: 表示發生檢查點時與檔案頭寫操作相關等待。通常與檢查點同步資料檔案頭時檔案號序亂有關

 

direct path read: 表示直接I/O讀相關的等待。當直接讀資料到PGA記憶體時,direct path read出現。這些型別的讀請求典型的作為:排序IO(當排序不能在記憶體中完成時)並行slave查詢或者預先讀。通常也與I/O有關

 

direct path write:同上,只是操作為寫

 

enqueue: 表示與內部佇列機制相關的等待,例如保護內部資源或者是元件的鎖的請求等,是一種併發的保護機制

 

free buffer inspected: 表示將資料讀入快取記憶體區的時候等待程式找到足夠大的記憶體空間。通過這類等待事件表示資料快取記憶體區偏小

 

free buffer waits: 表示資料快取記憶體區缺少記憶體空間。通常與資料快取記憶體區記憶體太或者是髒塊資料寫出太慢有關。這種情況下,可以考慮增大資料快取記憶體區或者通過設定更多地DBWR來增加髒資料的的寫能力

 

latch free: 表示莫個鎖存器上發生了競爭。首先應該確保已經提供了足夠多的latch數,如果仍然發生這種等待事件,那麼應該進一步確定是哪種鎖存器上發生了競爭(在v$session_wait上的P2欄位表示了鎖存器的標號),然後再判斷是什麼引起了這種鎖存器的競爭,如SQL語句書寫不合理帶來了大量的硬解析

 

library cache pin: 這個等待事件也與庫快取記憶體的多個併發有關,當庫快取記憶體中的物件被修改或者是被檢測的時候發生

 

undo segment extension: 表示在等待回滾段的動態擴充套件。這表示可能事務量過大,同時也意味著可能回滾段的初始大小不是最優的,minextents設定得偏小。考慮減少事務,或者使用最小區數更大的回滾段。

 

log  buffer space: 表示日誌快取區出現了空間等待事件。這種等待事件意味寫日誌快取區的時候得不到相應的記憶體空間,通常發生在日誌緩衝區太小或者是LGWR程式太慢的時候

 

SQL*Net Message From Client: 這種等待事件大多數的時候是可以被忽試的,它表示服務等待客戶程式返回一些回應資訊。

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10678398/viewspace-715105/,如需轉載,請註明出處,否則將追究法律責任。

相關文章