--
-- Author: Ahbaid Gaffoor
-- Date: Tuesday 25th February 2003
-- File: hitratios.sql
--
-- Purpose: Get Crucial Cache Hit Ratios
--
-- License: You may reuse this software at will provided you quote and retain this header
--
-- Disclaimer: No warranty is provided with this software, no liability or guarantees
-- are given in any form
--
set feedback off
set serveroutput on size 400000
declare
bc_physical_reads number;
bc_consistent_gets number;
bc_db_block_gets number;
bc_hit_ratio number;
dd_hit_ratio number;
lc_hit_ratio number;
procedure print (s varchar2) is
begin
dbms_output.put_line(s);
end;
procedure cr is
begin
print(chr(10));
end;
begin
--
-- Calculate Buffer Cache Hit Ratio
--
-- V$SYSSTAT - physical reads, consistent gets, db block gets
--
select sum(decode(name,'physical reads',abs(value),0)) into bc_physical_reads from v$sysstat;
select sum(decode(name,'consistent gets',abs(value),0)) into bc_consistent_gets from v$sysstat;
select sum(decode(name,'db block gets',abs(value),0)) into bc_db_block_gets from v$sysstat;
bc_hit_ratio := round((1 - ( bc_physical_reads / (bc_consistent_gets + bc_db_block_gets) ))*100,2);
--
-- Calculate Data Dictionary Cache Hit Ratio
--
-- V$ROWCACHE - gets, getmisses
--
select round ( ( (sum(gets)-sum(getmisses)) / sum(gets) ) * 100,2) into dd_hit_ratio from v$rowcache;
--
-- Calculate Library Cache Hit Ratio
--
-- V$LIBRARYCACHE - pins, reloads
--
select round ( ( (sum(pins)-sum(reloads)) / sum(pins) ) *100,2) into lc_hit_ratio from v$librarycache ;
--
-- Print Results
--
cr;
print(upper(SYS_CONTEXT('USERENV','DB_NAME'))||' Hit Ratios for: '||to_char(sysdate,'Day dth Month YYYY, HH24:MI:SS'));
print(rpad('=',80,'='));
print ('Buffer Cache Hit Ratio: '||bc_hit_ratio||'%');
print ('Data Dictionary / Row Cache Hit Ratio: '||dd_hit_ratio||'%');
print ('Library Cache Hit Ratio: '||lc_hit_ratio||'%');
cr;
end;
/
set feedback on
|  |