Common Hit Ratios

OCPdba.Net

  • Use the script below to get the Buffer, Dictionary/Row and Library Cache hit ratios.
  •    
    --
    -- 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
             

  • Here is a sample run
  • 
    TESTDB: SYS> @hitratios
    
    
    TESTDB Hit Ratios for: Saturday  7th March     2003, 22:37:05
    ================================================================================
    Buffer Cache Hit Ratio: 99.87%
    Data Dictionary / Row Cache Hit Ratio: 98.47%
    Library Cache Hit Ratio: 100%
    
    
    TESTDB: SYS> 
             

    OCPdba.Net