【DB筆試面試652】在Oracle中,等待事件有哪些常見的分類?常見等待事件有哪些?

  • 2019 年 10 月 10 日
  • 筆記

題目部分

在Oracle中,等待事件有哪些常見的分類?常見等待事件有哪些?

答案部分

等待事件的概念大概是從Oracle 7.0.12中引入的,剛引入的時候大約有100多個等待事件,在Oracle 8.0中這個數目增大到了大約150個,在Oracle 8i中大約有220個事件,在Oracle 9i中大約有400多個等待事件,在Oracle 10gR2中,大約有800多個等待事件,在Oracle 11gR2中約有1000多個等待事件。隨著等待事件的逐步完善,也能夠反映出對於問題的診斷粒度越來越細化。雖然不同版本會有不同數目的等待事件,但是這些等待事件都可以通過查詢V$EVENT_NAME視圖獲得。

Oracle的等待事件主要可以分為兩類:空閑(Idle)等待事件和非空閑(Non-Idle)等待事件。

(1)空閑等待事件指Oracle正等待某種工作,在診斷和優化資料庫的時候,不用過多注意這部分事件。

(2)非空閑等待事件專門針對Oracle的活動,指資料庫任務或應用運行過程中發生的等待,這些等待事件是在調整資料庫的時候需要關注與研究的。

通過如下的SQL語句可以查詢等待事件的類型:

SELECT WAIT_CLASS#,         WAIT_CLASS_ID,         WAIT_CLASS,         COUNT(*) AS "COUNT"  FROM   V$EVENT_NAME  GROUP  BY WAIT_CLASS#,            WAIT_CLASS_ID,            WAIT_CLASS  ORDER  BY WAIT_CLASS#;  

如下所示:

SYS@orclasm > SELECT WAIT_CLASS#, WAIT_CLASS_ID, WAIT_CLASS, COUNT(*) AS "COUNT"    2  FROM   V$EVENT_NAME GROUP  BY WAIT_CLASS#, WAIT_CLASS_ID,  WAIT_CLASS ORDER  BY WAIT_CLASS#;  WAIT_CLASS# WAIT_CLASS_ID WAIT_CLASS           COUNT  ----------- ------------- --------------- ----------            0    1893977003 Other                  745            1    4217450380 Application             17            2    3290255840 Configuration           24            3    4166625743 Administrative          55            4    3875070507 Concurrency             33            5    3386400367 Commit                   2            6    2723168908 Idle                    95            7    2000153315 Network                 35            8    1740759767 User I/O                48            9    4108307767 System I/O              31           10    2396326234 Scheduler                8           11    3871361733 Cluster                 50           12     644977587 Queueing                 9  

一些常見的、重要的等待事件如下所示:

(1)數據文件I/O相關的等待事件:

l db file sequential read

l db file scattered read

l db file parallel read

l direct path read

l direct path write

(2)控制文件I/O相關的等待事件:

l control file parallel write

l control file sequential read

l control file single write

(3)Redo日誌文件I/O相關的等待事件:

l log file parallel write

l log file sync

l log file sequential read

l log file single write

l switch logfile command

l log file switch completion

l log file switch (clearing log file)

l log file switch (checkpoint incomplete)

l log switch/archive

l log file switch (archiving needed)

(4)高速快取區I/O相關的等待事件:

l db file parallel write

l db file single write

l write complete waits

l free buffer waits

下面列出一些常見等待事件用以拋磚引玉,實際的資料庫管理中需要掌握和了解的等待事件非常多,也比較複雜,只需要記住一些常見的面試知識點,其它的等待事件需要在工作中慢慢積累。

表 3-23 常見等待事件

除了上表中列舉出來的等待事件還有很多其它常見的等待事件,這裡就不再列舉了,讀者可以關注作者的微信公眾號或部落格,裡面會有所有等待事件的詳細介紹。

& 說明:

有關等待事件的更加詳細的內容可以參考作者BLOG:http://blog.itpub.net/26736162/viewspace-2126079/、http://blog.itpub.net/26736162/viewspace-2125065/、http://blog.itpub.net/26736162/viewspace-2124417/

本文選自《Oracle程式設計師面試筆試寶典》,作者:小麥苗