Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:oracle_buffer_cache_v_bh_auswerten

Mit der v$bh den Oracle Buffer Cache auswerten

Seit der Version 8i wird auf jeden Block im Oracle Buffer Cache der aktuelle Status protokolliert. Über diese Statistik entscheidet die Datenbank, wann ein Block überschrieben wieder überschrieben werden kann bzw. welcher Block wieder in die Datendateien geschrieben werden muss.

Aufbau des Caches

Der Aufbau / Größe der Cache kann über die View „v$buffer_pool“ überpürft werden.

Siehe: v$buffer_pool

Die Status der Cache Blöcke abfragen

Mit Hilfe der View „v$bh“ können die Status auf den Blöcken abgefragt werden und es können „Hot Block“ Probleme und die Cache Effizenz ermittelt werden.

Siehe: v$bh

Übersicht über die Blöcke in Verwendung

sql>SELECT dirty
     , COUNT(*) 
  FROM v$bh 
 GROUP BY dirty
/
 
 
Dirty   COUNT(*)
------  -------
Y           159
N         34115

D.h zur Zeit enhalten nur 159 Blöcke im Cache Daten die noch auf Platte geschrieben werden müssen. Mit einen Checkpoint kann nun das Schreiben erzwungen werden:

SYS>ALTER system checkpoint;
 
System wurde geõndert.
 
SYS>SELECT dirty
     , COUNT(*)
 FROM v$bh
GROUP BY dirty
/
 
D   COUNT(*)
- ----------
N      34306

Für das Zustandsattribute „STATE“ kann im Detail untersucht werden, in welchen Zustand jeder Block sich befindet.

SELECT STATUS
     , dirty
     , COUNT(*) 
FROM v$bh 
GROUP BY STATUS
       , dirty
/	   
 
 
STATUS    Dirty  COUNT(*)
--------- ----  ----------
xcur       N      33598
free       N        189
cr         N       1929
xcur       Y       1794

Übersicht über die Satus Werte:

statestatusBedeutung
0free Der Block wurde noch nie verwendet
1xcur Exclusive
2scur Shared current
3cr Consistent read
4read Being read from disk
5mrec In media recovery mode
6irec In instance recovery mode
7write
8pi Past Image (RAC!) -lesekonsistente ältere (cr) Version des Blocks im shared cache
9memory
10mwrite
11donated
12protected
13securefileBlock einer Securefiles Datei
14siop
15recckpt
16flashfreeleerer Block im Database Flash Cache
17flashcuraktueller Block liegt im Database Flash Cache
18flashna

x$bh

Mit der x$bh kann über den Touch Count ermittelt werden, wie oft auf einen Block zugriffen wurde.

# Block id einer Tabelle ermitteln
 
sql>SELECT file_id,block_id FROM dba_extents WHERE segment_name='DUAL' AND owner ='SYS';
 FILE_ID BLOCK_ID
-------- --------
       1      465
 
 
# mit diesen Daten im Cache nach den Daten suchen
 
sql> SELECT tch FROM x$bh WHERE file#=1 AND dbablk=465;
no ROWS selected
 
sql>SELECT * FROM dual;
 
sql>SELECT tch FROM x$bh WHERE file#=1 AND dbablk=465;
     TCH
--------
       1
 
sql>SELECT * FROM dual;
 
sql>SELECT tch FROM x$bh WHERE file#=1 AND dbablk=465;
     TCH
--------
       2

Quellen

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/oracle_buffer_cache_v_bh_auswerten.txt · Zuletzt geändert: 2013/10/15 21:34 von Gunther Pippèrr