read by other session等待事件

skzhuga發表於2018-11-12

read by other session發生的場景:

 當查詢資料時,Oracle要把block從硬碟讀到buffer cache中。如果有兩個或更多session同時讀取同一個block資料,第一個session會將block讀取到buffer cache,由於block尚未完全讀取到buffer cache,就導致其他session處於"read by other session"等待下。這個是oracle 10g從oracle 9i的"buffer busy waits"中分離出來的,也是一種熱塊現象。


read by other session等待事件有三個引數,屬於User I/O類的等待 :

 SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name = 'read by other session';

 NAME                           PARAMETER1           PARAMETER2           PARAMETER3           WAIT_CLASS

 ------------------------------ -------------------- -------------------- -------------------- -----------

 read by other session          file#                block#               class#               User I/O

 

 file#:要讀取的資料塊鎖在資料檔案的檔案號

 block#:要讀取的起始資料塊號

 class#:塊型別


可根據等待的file#、block#結合下面的sql獲取熱點塊所在的segment:

SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, A.PARTITION_NAME

FROM DBA_EXTENTS A

WHERE FILE_ID = &FILE_ID

AND &BLOCK_ID BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS – 1;


查詢熱點塊物件:

SELECT *

FROM

(

 SELECT O.OWNER, O.OBJECT_NAME, O.OBJECT_TYPE, SUM(TCH) TOUCHTIME

 FROM X$BH B, DBA_OBJECTS O

 WHERE B.OBJ = O.DATA_OBJECT_ID

 AND B.TS# > 0

 GROUP BY O.OWNER, O.OBJECT_NAME, O.OBJECT_TYPE

 ORDER BY SUM(TCH) DESC

WHERE ROWNUM <= 10


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31544156/viewspace-2219653/,如需轉載,請註明出處,否則將追究法律責任。

相關文章