【等待事件】read by other session

renjixinchina發表於2013-04-09
等待時間描述:    
 這個等待事件發生時,當我們試圖訪問一個緩衝區快取記憶體中的緩衝區,但我們發現該緩衝區目前正在由其他使用者讀取磁碟,所以我們需要等待完成之前,我們可以訪問它。
在以前的版本中,等待被歸入“"buffer busy waits”事件。然而,在Oracle10.1和更高版本中,等待時間改寫為“read by other session”等事件。過多的等待通常是由於過多的程式重複閱讀相同的塊,例如許多session在同一個表掃描相同的索引或執行全表掃描。

Readby other session 等待的出現也說明資料庫存在讀的競爭,所以該等待事件通常和db file sequential readdb file scattered read 同時出現。


當一個會話正在等待對這一事件,將會看到一個條目在V $ SESSION_WAIT系統檢視塊正在等待更多資訊:
SELECT p1 "file#", p2 "block#", p3 "class#" 
FROM v$session_wait WHERE event = 'read by other session';

確定熱快

SELECT relative_fno, owner, segment_name, segment_type FROM dba_extents
WHERE file_id = &file
AND &block BETWEEN block_id AND block_id + blocks - 1;
確定阻塞的程式和sql
select b.SID,b.EVENT,b.P1,b.P2,(select m.SQL_FULLTEXT from v$sql m where m.SQL_ID=b.SQL_ID) SQL_FULLTEXT
  from v$session b
 where (b.P1, b.p2) in
       (select a.P1, a.P2
          from v$session a
         where a.EVENT = 'read by other session')
and b.EVENT<>'read by other session';
解決辦法:
   可以從awr找到相應sql 進行最佳化

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

相關文章