Oracle 等待事件 一

楊奇龍發表於2010-04-10

以前一直想整理一下關於Oracle 的等待事件,總是沒時間。現在覺得應該著手做了,其中的一些知識來自於自己的一點研究,如有錯誤,望大家指正。。。。。

一 Oracle等待事件主要有兩類事件:

1 空閒等待

 空閒等待意味著Oracle正在等待某種動作的發生,實際上並不是因為繁忙而等待,而是因為沒有事情做所以等待,如:smon timer,SMON程式的一些操作時每隔一段實際迴圈執行的,即使系統不忙,此事件也不立即發生,而是等待計時器達到一定的時間才執行,此時出現的smon timer 等待事件,而系統並沒有出現效能上的問題。多數的空閒等待對資料庫效能的影響不大,可以不必過多的關注。

空閒等待事件有:(加註釋的比較典型)

      1 dispatcher timer  排程器計時器

      2 lock element cleanup

  3 Null event  null事件

 4  parallel query dequeue wait

  5  parallel query idle wait - Slaves

  6 pipe get 管道取操作

  7  PL/SQL lock timer

  8 pmon timer- pmon

  9  rdbms ipc message  資料庫ipc 訊息

  10 slave wait

  11  smon timer    smon 計時器

  12 SQL*Net break/reset to client

  13 SQL*Net message from client  來自客戶端的訊息

  14  SQL*Net message to client  傳送訊息到客戶端

  15 SQL*Net more data to client

  16 virtual circuit status 虛擬環路狀態訊息

  17 client message  客戶機訊息

2 非空閒等待事件:

        通常資料庫發生競爭時就會出現非空閒的等待事件,即某種操作A發生時,A所需要的資源正在被其他的操作佔用,而這種獨佔的資源不能被操作A請求立即得到,操作請求被堵塞而發生等待。這些等待事件是我們在調整資料庫的時候應該關注與研究的。非空閒的等待主要有:

Buffer busy wait    :    表示在等待對資料告訴快取區的訪問,這種等待出現在會話讀取資料到buffer中或者修改buffer中的資料時。

Db file parrle write        於dbwr程式相關的等待,一般都代表了io能力出現問題。通常與配置的多個dbwr程式或者dbwr的io slaves個數有關,當然也可能意味這在裝置上出現io競爭!
Db file scattered read        表示發生了於全表掃描的等待。通常意味者全表掃描過多,或者io能力不足,或者io競爭。
Db file sequential read        表示發生了於索引掃描有關的等待。

Db file single write        表示在檢查點發生時與檔案頭寫操作相關的等待。

Direct path read        表示於直接io讀相關的等待。

Direct path write        同上
Enqueue        表示於內部佇列機制有關的等待,例如保護內部資源或者元件的鎖的請求等,一種併發的保護機制。
Free buffer inspected        表示在將資料讀入資料告訴緩衝區的時候等待程式找到足夠大的記憶體空間。

Free buffer waits        表述資料告訴快取區缺少記憶體空間。通常於資料高速緩衝區記憶體太小或者髒資料寫出太慢導致。

Latch free       表示某個鎖存器發生了競爭。

Library cache load lock        表示在將物件裝入到庫高速緩衝區的時候出現了等待。這種事件通常代表者發生了負荷很重的語句過載或者裝載,可能由於sql語句沒有共享池區域偏小導致的。
Library cache lock        表示與訪問庫快取記憶體的多個程式相關的等待。通常表示不合理的共享池大小。
Library cache pin        這個等待事件也與庫快取記憶體的併發性有關,當庫快取記憶體中的物件被修改或者被檢測的時候發生
Log buffer space        表示日誌緩衝區出現了空間等待事件。這種等待事件意味者寫日誌緩衝區的時候得不到相應的記憶體空間,通常發生在日誌緩衝區太小或者LGWR程式寫太慢的時候。
Log file parallel write        表示等待LGWR向作業系統請求io開始直到完成io。在觸發LGWR寫的情況下入3秒,1/3,1MB、DBWR寫之前可能發生。這種事件發生通常表示日誌檔案發生了io競爭或者檔案所在的驅動器較慢。
Log file single write        表示寫檔案頭塊的時候出現了等待。一般都是發生在檢查點發生時。
Log file switch  (archiveing needed)        由於歸檔過慢造成日誌無法進行切換而發生的等待。這種等待事件的原因可能比較多,最主要的原因是歸檔速度趕不上日誌切換的速度。可能的原因包括了重作日誌太了,重作日誌組太少,歸檔能力低,歸檔檔案發生了io競爭,歸檔日誌掛起,或者歸檔日誌放在了慢的裝置上。
Log file switch (checkpoint incomplete)        表示在日誌切換的時候檔案上的檢查點還沒有完成。一般意味者日誌檔案太小造成日誌切換切換太快或者其他原因。
Log file sync        表示當服務程式發出commit或者rollbabk命令後,直到LGWR完成相關日誌寫操作這段時間的等待。如果有多個服務程式同時發出這種命令,LGWR不能及時完成日誌的寫操作,就有可能造成這種等待。
Transaction        表示發生一個阻賽回滾操作的等待。
Undo segment extension        表示在等待回滾段的動態擴充套件。這表示可能事務量過大,同時也意味者可能回滾段的初始大小不是最優,minextents設定偏小。考慮減少事務,或者使用最小區數更多的回滾段。

參考:

《Oracle 資料效能最佳化》

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

相關文章