Oracle中資料字典快取V$ROWCACHE

Michael_DD發表於2014-11-11
Oracle中資料字典快取V$ROWCACHE


1.資料字典快取 |what is data dictionary cache

什麼是資料字典?
資料字典包含:
● 資料庫中每個schema物件(tables, indexes, sequences, and database links)的定義
● schema物件分配空間總和及當前使用量
● oracle資料庫的使用者名稱、許可權、角色賦予及審計資訊

A memory area in the shared pool that holds data dictionary information. The data dictionary cache is also known as the row cache because it holds data as rows instead of buffers, which hold entire data blocks.
資料字典快取是shared pool中儲存資料字典資訊的一個記憶體區域。資料字典快取又稱為row cache,因為它儲存資料使用行而不是快取(快取儲存整個資料塊)。

2.Shared Pool: Dictionary Cache Statistics
資料庫例項啟動,資料字典快取中不含任何資料。所有SQL語句都無法命中快取。隨著越來越多的資料讀到資料字典快取,快取未命中率在降低。
最終,資料庫達到均衡狀態,使用最頻繁的字典資料被快取到資料字典快取區域中。至此,快取未命中極少發生。

3.V$ROWCACHE
--各資料字典訪問量、未命中次數、命中率等資訊
column parameter format a21
column pct_succ_gets format 999.9
column updates format 999,999,999
SELECT parameter
     , sum(gets)
     , sum(getmisses)
     , 100*sum(gets - getmisses) / sum(gets)  pct_succ_gets
     , sum(modifications)                     updates
  FROM V$ROWCACHE
 WHERE gets > 0
 GROUP BY parameter;
 
PARAMETER              SUM(GETS) SUM(GETMISSES) PCT_SUCC_GETS      UPDATES
--------------------- ---------- -------------- ------------- ------------
dc_database_links             81              1          98.8            0
dc_free_extents            44876          20301          54.8       40,453
dc_global_oids                42              9          78.6            0
dc_histogram_defs           9419            651          93.1            0
dc_object_ids              29854            239          99.2           52
dc_objects                 33600            590          98.2           53
dc_profiles                19001              1         100.0            0
dc_rollback_segments       47244             16         100.0           19
dc_segments               100467          19042          81.0       40,272
dc_sequence_grants           119             16          86.6            0
dc_sequences               26973             16          99.9       26,811
dc_synonyms                 6617            168          97.5            0
dc_tablespace_quotas         120              7          94.2           51
dc_tablespaces            581248             10         100.0            0
dc_used_extents            51418          20249          60.6       42,811
dc_user_grants             76082             18         100.0            0
dc_usernames              216860             12         100.0            0
dc_users                  376895             22         100.0            0

**注:PARAMETER列,dc_表示資料字典,dc_後面為資料字典名稱。
如,dc_sequences表示序列。

例子中,dc_free_extents、dc_used_extents、dc_segments存在大量未命中、更新,這說明資料庫例項存在顯著的動態空間擴張。

--資料字典快取區域整體命中率
SELECT (SUM(GETS - GETMISSES - FIXED)) / SUM(GETS) "ROW CACHE HIT RATIO" FROM V$ROWCACHE;

ROW CACHE HIT RATIO
-------------------
         .929097687

=============================================================================================

2.資料字典快取 |what is library cache
library cache是shared pool中的一部分。其包含了SQL areas, private SQL areas及PL/SQL儲存過程及包等。

2.V$LIBRARYCACHE
V$LIBRARYCACHE記錄了例項啟動以來,library cache中各個namespace的統計資訊。

--每個namespace詳細資訊
SELECT NAMESPACE, PINS, PINHITS, RELOADS, INVALIDATIONS
  FROM V$LIBRARYCACHE
 ORDER BY NAMESPACE;
 
NAMESPACE             PINS    PINHITS    RELOADS INVALIDATIONS
--------------- ---------- ---------- ---------- -------------
BODY                  8870       8819          0             0
CLUSTER                393        380          0             0
INDEX                   29          0          0             0
OBJECT                   0          0          0             0
PIPE                 55265      55263          0             0
SQL AREA          21536413   21520516      11204             2     TABLE/PROCEDURE   10775684   10774401          0             0
TRIGGER               1852       1844          0             0


**注:
SQL AREA:21536413表示執行了21536413次。
 11204表示library cache 11204次未命中,需要oracle資料庫隱含的重新分析語句或者阻止或者重新載入物件定義,
 因為涉及到的對應已將過久被清理出了library cache(這就是RELOAD)。
 2表示該SQL語句invalidated兩次,再次導致了library cache未命中。(INVALIDATIONS:因為依賴物件被修改,造成某namespace中的物件被標記為無效)

--Library Cache Hit Ratio
select sum(pinhits) / sum(pins)*100 "Library Cache Hit Ratio" from V$LIBRARYCACHE;

Library Cache Hit Ratio
-----------------------
             98.2777228
 
**注:
98.2777228表示library命中率是98%,約2%的執行結果正在重新分析中。

其他:
--SGA中free sapce
SELECT * FROM V$SGASTAT
 WHERE NAME = 'free memory'
   AND POOL = 'shared pool';
   
POOL         NAME                            BYTES
------------ -------------------------- ----------
shared pool  free memory                 236520152  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1328109/,如需轉載,請註明出處,否則將追究法律責任。

相關文章