Performance

Oracle DB 上的 V_$SYSTEM_EVENT 等待時間非常高

  • November 16, 2012

我正在對存在一些一般性能問題的 oracle 數據庫進行故障排除。我執行了以下查詢:

SELECT event AS "Event|Name",
      total_waits "Total|Waits",
      round(time_waited / 100, 0) "Seconds|Waiting",
      total_timeouts "Total|Timeouts",
      average_wait / 100 "Average|Wait|(in secs)"
 FROM sys.v_$system_event e
 ORDER BY time_waited DESC;

前幾行返回如下。數百萬秒的等待時間!(相比之下,我們的其他數據庫對於頂級事件的等待時間小於 10 秒。)這些事件有什麼作用,什麼可能導致這些巨大的等待時間?數據庫已經執行了 30 天,所以我們看到了這麼長時間的聚合。

Event Name                                 Waits    Seconds Timeouts  Avg Wait
----------------------                 ---------   -------- --------  --------
SQL*Net message from client            488397968   32050594        0    0.0656
rdbms ipc message                       91335556    2455744  9529486    0.0269
DIAG idle wait                           5214769     347077  5214769    0.0666
Streams AQ: qmn coordinator idle wait     186521     173696    93278    0.9312
Streams AQ: qmn slave idle wait            95359     173692       51    1.8215
Space Manager: slave idle wait            523165     173647   521016    0.3319
pmon timer                                968303     173630   870108    0.1793
fbar timer                                  8770     173403     8713   19.7723
smon timer                                 14103     173278     7006   12.2866
log file sync                           57967889      90402   649458    0.0016
og file parallel write                  86618366      39509        0    0.0005
db file sequential read                244286101      11171        0         0
control file parallel write              1274395       3949        0    0.0031
db file scattered read                 157316868       1635        0         0
db file parallel read                   11948170       1190        0    0.0001

“來自客戶端的 SQL Net 消息”是數據庫等待客戶端要求做某事所花費的時間(我也將其解釋為數據庫處理的 SQL Net 請求數量的指標)。AskTom有關於該事件的更多資訊。它看起來也不是很長的平均等待時間,所以也許你有一個應用程序向伺服器發出大量小請求?這是 30 天內的大量等待(平均每天 1600 萬次)。

至於 rdbms ipc 消息,這意味著(Oracle 10g 參考)

“後台程序(LGWR、DBWR、LMS0)使用此事件來指示它們處於空閒狀態,並正在等待前台程序向它們發送 IPC 消息以完成某些工作。”

從調整的角度來看,這通常是一個非事件。(伯勒森)

引用自:https://serverfault.com/questions/66845