1. 程式人生 > >Oracle RAC 等待事件

Oracle RAC 等待事件

發現 pcm 需要 其他 一個數 通過 數據塊 包含 從數據

PCM資源相關的等待事件

gc current/cr block request:這個等待事件說明申請實例要申請一個當前塊或CR塊,但是資源主實例的LMS進程還沒有響應它的請求。


gc current/cr block 2 way:這個等待事件說明申請實例通過一個2路通信,向遠程實例申請了一個當前塊或CR塊。


gc current/cr block 3 way:這個等待事件說明申請實例通過一個3路通信,向遠程實例申請了一個當前塊或CR塊。


gc current/cr block busy:這個等待事件說明申請實例向遠程實例申請一個當前塊或CR塊,而遠程實例在發送這個數據塊時發現它正在被其他進程使用。


gc current/cr grant 2-way:這個等待事件說明申請實例向資源主實例申請了一個當前塊或CR塊,而且這個申請已經被資源主實例響應。


gc current/cr grant 2-way與gc current/cr block 2/3-way的區別在於,這個被申請的數據塊不包含在任何實例的buffer cache中,需要申請實例自己從數據文件讀取,所以不會有等待事件gc current/cr grant 3-way存在,因為這時只有資源申請實例和資源主實例,沒有資源持有實例。而在gc current/cr block 2/3-way中,申請實例獲得的數據塊是遠程實例發送過來的,申請實例,主實例和持有實例可能是3個不同實例。在gc current/cr grant 2-way出現後,下一步就是從數據文件中讀取數據,這也是為什麽gc current/cr grant 2-way與db file sequential read 或者db file scattered read等待事件同時出現的原因。


gc current grant busy:這個等待事件說明申請實例申請了一個當前塊,而且資源主實例也已經確認申請實例可以持有這個數據塊,但是申請者在等待其他申請者完成它們的申請請求。這個等待事件說明申請者是以排他方式申請數據塊的,但是其他實例上還有一些申請者以共享的方式申請這個快,所以排他的申請請求要等待比它先到達的共享請求。grant busy只會出現在當前塊上,對應CR塊,因為進程不能修改一個CR塊中已經存在的數據,所以不存在等待事件gc cr grant busy


gc current/cr block congested:這個等待事件說明申請實例向遠程實例申請了一個當前塊或CR塊,而遠程實例已經收到了這個請求,但是LMS進程並沒有響應這個請求--將數據塊發送給申請實例。


gc current/cr grant congested:這個等待事件說明申請實例向遠程實例申請了一個當前塊或CR塊,而遠程實例已經收到了這個請求,但是LMS進程並沒有響應這個請求--將反饋信息發送給申請實例。


gc cr failure/gc current retry:這個等待事件說明申請實例沒有收到一個當前塊或CR塊。


gc current/cr multi block request:這個等待時間事件申請實例需要向遠程實例申請多個當前塊或CR塊。


這個等待時間只有在申請的所有數據庫都被成功返回之後才會結束,如果其中的一個數據庫因為某種原因沒有被成功接收,就需要重新申請所有的數據塊。這也是為什麽gc current/cr multi block request經常和等待事件gc cr failure/gc current retry同時出現的原因。


Oracle RAC 等待事件