Oracle11gRAC中的等待事件

2021-06-28 07:16:51 字數 3344 閱讀 1342

1、rac中等待事件的分類

集群的等待事件屬於以下類別之一:

面向塊的等待

gc current block 2-way

gc current block 3-way

gc cr block 2-way

gc cr block 3-way

面向訊息的等待

gc current grant 2-way

gc current grant 3-way

gc cr grant 2-way

gc cr grant 3-way

面向爭用的等待

gc current block busy

gc cr block busy

gc current buffer busy

面向負載的等待

gc current block congested

gc cr block congested

gc current grant congested

gc cr grant congested

2、具體說明

2.1 gc current block 2-way

該等待事件發生在下列過程中:

例項a請求主控例項b控制的乙個資料塊的授權,該資料塊快取位於例項b上,例項b通過快取融合機制將這個資料塊的當前版本傳送到請求者。這個事件表明存在寫/寫爭用。

可以考慮以下措施:

awr報告中的「current blocks received」部分的內容應當可以幫助確定爭用最嚴重的物件。

確保對爭用最嚴重的物件採用了良好的資料庫物件設計實踐、資料庫物件布局和空間管理實踐。

使用適當的應用程式分割槽方案,對應用程式進行優化。

2.2 gc current block 3-way

該等待事件發生在下列過程中:

乙個例項請求訪問乙個資料塊的授權。主控相應資源的例項接收請求,並將訊息**給當前擁有者,告訴它放棄所有權。這個擁有例項通過快取融合機制將資料塊當前版本的副本傳送

給請求方,並將獨佔鎖傳送給發出請求的例項。這個事件同樣表明存在寫/寫爭用。採取的措施與上面相同。

2.3 gc cr block 2-way

該等待事件發生在下列過程:

例項a以共享模式請求cr塊和鎖,主控例項擁有當前塊,製作cr副本並通過快取融合傳送。該事件表明存在寫/讀爭用。

awr報告中的「segments by cr blocks received」部分應當可以幫助確定爭用最嚴重的物件。

其它措施同上。

2.4 gc cr block 3-way

類似2.3,只不過主控例項與擁有例項並非同一例項。

2.5 gc current grant 2-way

該等待時間發生在下列過程:

當乙個例項需要當前模式的乙個資料塊時,它將這一請求傳送給主控例項。主控例項發現所有例項目前都沒有鎖定被請求塊。向傳送請求的例項發回一條訊息,授予它對這個資料塊的共

享鎖。發出請求的塊隨後從磁碟讀取塊。這一事件不代表任何爭用。

sql優化,減少它請求的塊數。

2.6 gc current block busy

當乙個請求需要當前模式的資料塊時,它向主控例項傳送一條請求。這個請求最終通過快取融合傳送獲得資料塊;但是,由於以下原因之一會使資料塊傳送被延遲:

這個塊正被另乙個例項的乙個會話使用。

由於擁有這個資料塊的例項不能馬上將相應的重做記錄寫到聯機重做日誌檔案中,因此資料塊傳送被延遲。

我們可以通過v$session/v$session_event來查詢這一事件導致的最長等待時間的程式或會話:

select e.sid, e.time_waited,s.program,s.module

from v$session_event e,v$session select

where s.sid=e.sid

and e.event='gc current block busy'

order by e.time_waited;

這個時間表明存在嚴重的寫/寫爭用。

可以考慮研究日誌寫入效能,以及應用程式分割槽。

2.7 gc cr disk read

如果乙個例項接收到傳送cr緩衝區的請求,但這個緩衝區並沒有快取在本地,那麼將返回這個等待事件。請求方等待全域性快取當前請求,在返回讀取磁碟狀態時,請求方從磁碟讀取所

請求的塊。出現這一等待事件的典型情景為:長時間執行的查詢要查詢某些撤銷塊,但它無法在擁有該撤銷段的例項的本地快取中找到這些塊,在全域性快取的所有其它快取中也找不到,

在此期間通常就會出現該等待事件。這並非一種常見的效能問題。

2.8 buffer busy global cr

當乙個例項需要生成當前塊的cr版本時,這個塊要麼是在本地快取中,要麼是在遠端快取中。如果是後一種情況,那麼其他例項上的lms將嘗試建立cr塊;如果是前一種情況,那麼執行

查詢的前台程序將執行cr塊生成操作。在建立cr版本時,例項需要讀取事務表,並從回滾/撤銷段中讀取在這個塊的活動事務表中應用的撤銷塊。

有時,這一清楚/回滾過程可能會導致對本地和遠端撤銷頭與撤銷塊進行多次查詢。對遠端撤銷頭和撤銷塊進行查詢會導致「global cache cr request」。由於會經常訪問撤銷頭,因此

還會產生緩衝區等待。在可以生成cr映象之前,這個程序將一直等待時間「buffer busy global cr」。

2.9 gc cr failure

如果從乙個cr塊的擁有者處請求該塊,但請求者收到一條故障狀態訊息,那麼會觸發這一等待事件。

可能的原因如下:

在傳遞期間丟失塊。

校驗和錯誤。

塊中的格式或scn無效。

可以查詢系統統計檢視v$sysstat來了解「gc blocks lost」或「gc claim blocks lost」。

如果經常看到gc blocks lost等待事件,那麼應當請系統管理員和網路管理員一同檢視硬體和網路層。

2.9 gc cr block busy

與gc current block busy類似。只是發出請求的時間已經請求cr模式的塊。

2.10 gc current buffer busy

因為來自另乙個例項的傳遞已經被延遲,但同乙個例項上的另乙個會話已經發起了鎖定請求,而且正在等待主控例項的相應,因此,本地例項上的多個會話正在同時訪問相同的塊。這

一事件表明存在對這個塊的本地爭用。

2.11 gc current block congested

當乙個例項需要當前模式的塊時,它向主控例項發出請求。請求者通過快取融合獲得該塊。但是,由於gcs的工作量過重而使塊傳遞延遲。

這一事件並不意味著存在塊級別的任何併發或爭用,但是它的確表明gcs的負載過多。

2.12 gc cr block congested

同上,只不過請求的是cr塊。

ORACLE 11G RAC 負載均衡

oracle 11g r2中,引入了scan single client access name 的特性。該特性的好處在於,在資料庫與客戶端之間,新增了一層虛擬的服務層,就是所謂的scan ip以及scan ip listener,在客戶端僅需要配置scan ip的tns資訊,通過scan ip l...

linux下Oracle11g RAC搭建(九)

linux下oracle11g rac搭建 九 相同在圖形化介面操作 root node1 su grid grid node1 asmca 建立兩個磁碟組 資料檔案磁碟組和高速恢復區磁碟組 grid node1 cd u01 11.2.0 grid bin asmca的路徑 grid node1 ...

linux下Oracle11gRAC搭建(九)

linux下oracle11g rac搭建 九 同樣在圖形化介面操作 root node1 su grid grid node1 asmca 建立兩個磁碟組 資料檔案磁碟組和快速恢復區磁碟組 grid node1 cd u01 11.2.0 grid bin asmca的路徑 grid node1 ...