【等待事件】等待事件系列(3+4)--System IO(控制文件)+日誌類等待 1 BLOG文檔結構圖 2 前言部分 2.1 導讀和註意事項 各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~: ① 控制文件類等待 ② 日誌類等待 2.2 相關... ...
【等待事件】等待事件系列(3+4)--System IO(控制文件)+日誌類等待
1 BLOG文檔結構圖
2 前言部分
2.1 導讀和註意事項
各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~:
① 控制文件類等待
② 日誌類等待
2.2 相關參考文章鏈接
http://blog.itpub.net/26736162/viewspace-2124435/ | ||
http://blog.itpub.net/26736162/viewspace-2124417/ | ||
2016-09-07 | http://mp.weixin.qq.com/s?__biz=MzIzOTA2NjEzNQ==&mid=2454771471&idx=1&sn=5922a52ac6294acf2802f44e2bb0d724&chksm=fe8bba77c9fc336151a61bdf876cb058df0d61d1404d8450cb7771330b6d44309d86dae4bb54&scene=21#wechat_redirect | |
2016-09-06 | http://mp.weixin.qq.com/s?__biz=MzIzOTA2NjEzNQ==&mid=2454771468&idx=1&sn=fc7d83d1a9b12911f3c93d3b5b444e9a&chksm=fe8bba74c9fc3362b58717fca9e95c68d45e701fa2f733a643ba01db7969cca668858272fbfc&scene=21#wechat_redirect | |
2016-09-04 | http://mp.weixin.qq.com/s?__biz=MzIzOTA2NjEzNQ==&mid=2454771458&idx=1&sn=e949dfa5bff65ce4a596005955c5be5a&scene=21#wechat_redirect | |
2016-09-03 | http://mp.weixin.qq.com/s?__biz=MzIzOTA2NjEzNQ==&mid=2454771454&idx=1&sn=e90248954475dfd2c78bdec592405735&scene=21#wechat_redirect | |
2016-09-01 | http://mp.weixin.qq.com/s?__biz=MzIzOTA2NjEzNQ==&mid=2454771447&idx=1&sn=22ae192f0d8a161f65514339ad763985&scene=21#wechat_redirect | |
2016-08-31 | ||
2016-08-30 | ||
2016-08-29 | ||
2016-08-27 | ||
2016-08-26 | ||
2016-08-20 | ||
2016-08-16 | ||
2016-08-15 | ||
2016-08-14 | ||
2016-08-13 |
3 System I/O類型
SELECT *
FROM v$event_name d
WHERE d.WAIT_CLASS ='System I/O';
3.1 db file parallel write
SELECT *
FROM v$event_name
WHERE NAME IN ('db file parallel write');
這個等待事件有3個參數:
Requests: 操作需要執行的I/O次數(DBWR寫入批量的大小-塊數)。
interrupt:(中斷)
timeout:等待的超時時間。
在V$SESSION_WAIT這個視圖裡面,這個等待事件有三個參數P1、P2、P3,其中P1代表Oracle正在寫入的數據文件的數量,P2代表操作將會寫入多少的BLOCK數量,P3在Oracle9i release2版本之前代表總共有多少BLOCK的I/O請求,等於P2的值;在Oracle9i release2版本之後則代表等待I/O完成的超時的時間,單位是百分之一秒。
經過高速緩衝區的所有數據是通過DBWR寫入到磁碟上的。DBWR請求寫入臟塊的I/O後,在此工作結束期間等待db file parallel write事件。
這是一個後臺等待事件,它同樣和用戶的並行操作沒有關係,它是由後臺進程DBWR產生的,當後臺進程DBWR向磁碟上寫入臟數據時,會發生這個等待。
DBWR會批量地將臟數據並行地寫入到磁碟上相應的數據文件中,在這個批次作業完成之前,DBWR將出現這個等待事件。 如果僅僅是這一個等待事件,對用戶的操作並沒有太大的影響,當伴隨著出現free buffer waits等待事件時,說明此時記憶體中可用的空間不足,這時候會影響到用戶的操作,比如影響到用戶將臟數據塊讀入到記憶體中。
當出現db file parallel write等待事件時,可以通過啟用操作系統的非同步I/O的方式來緩解這個等待。 當使用非同步I/O時,DBWR不在需要一直等到所有數據塊全部寫入到磁碟上,它只需要等到這個數據寫入到一個百分比之後,就可以繼續進行後續的操作。
這個等待事件是指Oracle後臺進程DBWR等待一個並行寫入文件或者是BLOCK的完成,等待會一直持續到這個並行寫入操作完成。這個等待事件即使在總的等待時間中占的比例比較大也不會對用戶的會話有很大的影響,只有當用戶的會話顯示存在大量的等待時間消耗在"write complete waits" 或者是"free buffer waits"上的時候才會影響到用戶的會話,較明顯的影響是這個寫操作的等待會影響到讀取同一個磁碟上數據的用戶會話的I/O。
① 與其名稱相反,該事件不與任何並行DML操作相關。
② 該等待事件屬於DBWR進程,DBWR進程負責向數據文件寫入臟數據塊的唯一進程,即DBWR進程執行對使用SGA的所有資料庫寫入。阻塞該進程的是操作系統的IO子系統。當然DBWR進程的寫入操作也會對同一磁碟操作的其他會話造成影響。
③ DBWR查找臟塊的時機:
>> 每隔三秒一次的查找。
>> 當前臺提交需要清除緩衝區內容時。
>> 當滿足_DB_LARGE_DIRTY_QUEUE/_DB_BLOCK_MAX_DIRTY_TARGET /FAST_START_MTTR_TARGET閾值。
④ 緩慢的DBWR操作可以造成前臺會話在write complete waits(前臺不允許修改正在傳輸到磁碟的塊)或free buffer waits(DBWR不能滿足釋放緩衝區的需求)事件上。通過以下語句可以獲知該事件的平均等待時間,如果平均等待時間大小10cs,則表明IO緩慢。如果不存在db file parallel write事件,很可能初始化參數disk_async_io=FALSE,這種情況一般發生在AIX和HPUX平臺上。
SELECT s.event, s.time_waited, s.average_wait
FROM v$system_event s
WHERE s.event IN ('db file parallel write', 'free buffer waits',