programmera.net -> oracledba -> normal     för utskrift      info@programmera.net

V$LIBRARYCACHE

1. V$LIBRARYCACHE
2. Exempel

1. V$LIBRARYCACHE

Vyn V$LIBRARYCACHE samlar statistik om hur Library Cache används. Den mest intressanta raden i denna vy är "SQL AREA" som samlar statistik för samtliga SQL-satser i systemet. Vyn har följande kolumner:
SQL>  DESC v$librarycache
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 NAMESPACE                                          VARCHAR2(15)
 GETS                                               NUMBER
 GETHITS                                            NUMBER
 GETHITRATIO                                        NUMBER
 PINS                                               NUMBER
 PINHITS                                            NUMBER
 PINHITRATIO                                        NUMBER
 RELOADS                                            NUMBER
 INVALIDATIONS                                      NUMBER
 DLM_LOCK_REQUESTS                                  NUMBER
 DLM_PIN_REQUESTS                                   NUMBER
 DLM_PIN_RELEASES                                   NUMBER
 DLM_INVALIDATION_REQUESTS                          NUMBER
 DLM_INVALIDATIONS                                  NUMBER

Kolumnerna har följande innebörd:

  • GETS Hur många sökningar vi haft i cachen sedan startup. För SQL AREA är detta antal sökningar efter exekveringsplaner för SQL-satser sedan startup.
  • GETHITS Hur många träffar vi haft i cachen sedan startup. För SQL AREA är detta antal exekveringsplaner som har hittats i cachen sedan startup.
  • GETHITRATIO Kvoten mellan träffar och antal sökningar. Vårt mål är att få en hög GETHITRATIO.
  • RELOADS Hur många gånger vi fått en miss i sökningen på grund av (A) objektet har åkt ur cachen för att den inte fick plats, eller (B) objektet har åkt ut eftersom det har förändrats (invalidiserats).
  • INVALIDATIONS Hur många objekt som har invalidiserats sedan startup.
  • PINS Hur många läsningar eller exekveringar i cachen sedan startup.
  • PINHITS Hur många träffar på läsningar eller exekveringar i cachen sedan startup.

2. Exempel

Vi kollar på statistiken som finns för mitt system. Instansen har just startats och vi har bara haft några minuters aktivitet:
SQL>  SELECT namespace, gets, gethits, reloads, gethitratio, invalidations, pins, pinhits, pinhitratio 
FROM v$librarycache;

NAMESPACE             GETS    GETHITS    RELOADS GETHITRATIO INVALIDATIONS       PINS    PINHITS PINHITRATIO
--------------- ---------- ---------- ---------- ----------- ------------- ---------- ---------- -----------
SQL AREA              5443       2961        917   ,54400147            90      48099      44716  ,929665897
TABLE/PROCEDURE       7249       4795        871  ,661470548             0      14786      10014  ,677262275
BODY                   810        768         53  ,948148148             0       1282       1185  ,924336973
TRIGGER                183        162         13  ,885245902             0        436        402  ,922018349
INDEX                  110         26         19  ,236363636             0        280        177  ,632142857
CLUSTER                185        176          5  ,951351351             0        492        478  ,971544715
OBJECT                   0          0          0           1             0          0          0           1
PIPE                     0          0          0           1             0          0          0           1
JAVA SOURCE              0          0          0           1             0          0          0           1
JAVA RESOURCE            0          0          0           1             0          0          0           1
JAVA DATA                0          0          0           1             0          0          0           1

11 rows selected.
Jag nu kör nu en SQL-sats som jag vet inte har körts efter instansens startup:
SQL>  SELECT * FROM scott.dept WHERE deptno=10;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

Vi tittar nu på statistiken igen för att se om det blev någon förändring:
SQL>  SELECT namespace, gets, gethits, reloads, gethitratio, invalidations, pins, pinhits, pinhitsratio 
FROM v$librarycache;

NAMESPACE             GETS    GETHITS    RELOADS GETHITRATIO INVALIDATIONS       PINS    PINHITS PINHITRATIO
--------------- ---------- ---------- ---------- ----------- ------------- ---------- ---------- -----------
SQL AREA              5444       2961        917  ,543901543            90      48130      44745  ,929669645
TABLE/PROCEDURE       7249       4795        873  ,661470548             0      14789      10015  ,677192508
BODY                   810        768         53  ,948148148             0       1282       1185  ,924336973
TRIGGER                183        162         13  ,885245902             0        436        402  ,922018349
INDEX                  110         26         19  ,236363636             0        280        177  ,632142857
CLUSTER                185        176          5  ,951351351             0        492        478  ,971544715
OBJECT                   0          0          0           1             0          0          0           1
PIPE                     0          0          0           1             0          0          0           1
JAVA SOURCE              0          0          0           1             0          0          0           1
JAVA RESOURCE            0          0          0           1             0          0          0           1
JAVA DATA                0          0          0           1             0          0          0           1

11 rows selected.
Vi ser att vi har fått följande förändring:

  • SQL AREA: GETS: har ökat med 1, vilket betyder att en SQL-sats har körts.
  • SQL AREA: GETHITS: är oförändrad, vilket betyder att SQL-satsens exekveringsplan inte hittades i cachen.
  • SQL AREA: GETHITRATIO: har blivit något sämre (från 0.5440 till 0.5439), eftersom vi har fått en ny miss i cachen.