Oracle önbelle...
 
Bildirimler
Hepsini Temizle

Oracle önbelleğinde o an bulunan objelerin bulunması  

  RSS
Ugur INAL
(@ugurinal)
Üye

Merhaba,


Geçenlerde Türkiye'de Oracle ile ilgili bir kaç forumda "önbellekte o an yer alan objelerin neler olduğunu nasıl görebilirim" gibi bir kaç soru gördüm ve cevap olarak bunun imkansız olduğu yazmaktaydı. Bunun mümkün olduğunu bu forumlarda cevap yazmak istememe rağmen gerekli kullanıcı bilgileri olmadığından bildiremedim. Oracle önbellekte o an bulunan objelerin neler olduğunu(ve ne kadar blok işgali yaptıklarını) listeleyen bir kaç sistem sorgusunu Çözümpark üzeriden paylaşmak istedim.


Önbellekte blok işgal eden segmentleri görmek için;


 


SELECT o.*, d_o.owner, d_o.object_name, object_type, o.buffers, o.avg_touches


FROM ( SELECT obj object, count(1) buffers, AVG(tch) avg_touches


FROM X$bh


GROUP BY obj) o,


dba_objects d_o


WHERE o.object = d_o.data_object_id


ORDER BY owner, object_name;


 


Segmentlerin önbellekte blok işgal yüzdesini görmek için;


 


SELECT tot_occ_bufs.TotOccBufs,o.*,d_o.owner, d_o.object_name, object_type,


ROUND((o.buffers/tot_occ_bufs.TotOccBufs)*100,2) || '%' PctOccBufs


FROM (SELECT obj object, count(1) buffers, AVG(tch) avg_touches


FROM X$bh


GROUP BY obj) o,


(SELECT COUNT(1) TotOccBufs


FROM X$bh


WHERE state != 0) tot_occ_bufs,


dba_objects d_o


WHERE o.object = d_o.data_object_id


ORDER BY round((o.buffers/tot_occ_bufs.TotOccBufs)*100,2),owner, object_name;


 

Alıntı
Gönderildi : 01/01/2011 20:28
Paylaş: