Forum
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;