[오라클] Dictionary Cache (v$rowcache)

Dictionary Cache

▶ V$ROWCACHE


V$ROWCACHE Table 질의 : 캐쉬 기능 확인.
Parameter : Data Dictionary item, 선행자 dc_
ex) file description 통계 : dc_files
GETS : Data Dictionary에 대한 요구 횟수
GETMISSES : Cache miss를 발생 데이터 요구의 횟수
COUNT : seable Cache entry 수
USAGE : 데이터를 저장한 Cache entry의 수
GETMISSES / GETS 비율이 10~15% 초과시 Data Dictionary Cache가 사용할 수 있는 메모리 증가. SHARED_POOL_SIZE 값 증가.
멀티스레드 서버에서 Shared pool tuning
Shared pool 크기 증가 = SHARED_POOL_SIZE 증가 .

Dictionary Cache miss ratio

↘ Query
SQL> select to_char(trunc(sum(getmisses)/sum(gets) * 100, 5), 99.99999) ||
  2  '% (less than 9.8%)' "Dictionary cache miss ratio"
  3  from v$rowcache;

Dictionary cache miss ratio
---------------------------
   .15931% (less than 9.8%)


SQL> select round(sum(gets)/(sum(gets)+sum(getmisses))*100,2)
  2  from v$rowcache;

ROUND(SUM(GETS)/(SUM(GETS)+SUM(GETMISSES))*100,2)
-------------------------------------------------
                                              99.84



SQL> desc v$rollstat
 Name                                      Null?    Type
 ----------------------------------------- -------- ------------
 USN                                                NUMBER
 LATCH                                              NUMBER
 EXTENTS                                            NUMBER
 RSSIZE                                             NUMBER
 WRITES                                             NUMBER
 XACTS                                              NUMBER
 GETS                                               NUMBER
 WAITS                                              NUMBER
 OPTSIZE                                            NUMBER
 HWMSIZE                                            NUMBER
 SHRINKS                                            NUMBER
 WRAPS                                              NUMBER
 EXTENDS                                            NUMBER
 AVESHRINK                                          NUMBER
 AVEACTIVE                                          NUMBER
 STATUS                                             VARCHAR2(15)
 CUREXT                                             NUMBER
 CURBLK                                             NUMBER

SQL> select name, rssize, writes, xacts, status,
  2  trunc(waits/gets*100, 5)|| ' %' "miss ratio"
  3  from v$rollstat, v$rollname
  4  where v$rollstat.usn = v$rollname.usn
  5  order by waits/gets desc;

NAME                               RSSIZE     WRITES      XACTS STATUS
------------------------------ ---------- ---------- ---------- ---------
miss ratio
------------------------------------------
SYSTEM                             385024       4664          0 ONLINE
0 %

_SYSSMU1$                          319488     140694          0 ONLINE
0 %

_SYSSMU2$                         2220032     130360          0 ONLINE
0 %


NAME                               RSSIZE     WRITES      XACTS STATUS
------------------------------ ---------- ---------- ---------- ---------
miss ratio
------------------------------------------
_SYSSMU3$                          450560     136148          0 ONLINE
0 %

_SYSSMU4$                          450560     100362          0 ONLINE
0 %

_SYSSMU5$                          319488     129250          0 ONLINE
0 %


NAME                               RSSIZE     WRITES      XACTS STATUS
------------------------------ ---------- ---------- ---------- ---------
miss ratio
------------------------------------------
_SYSSMU6$                         2220032     134494          0 ONLINE
0 %

_SYSSMU7$                          450560      88312          0 ONLINE
0 %

_SYSSMU8$                          581632     132278          0 ONLINE
0 %


NAME                               RSSIZE     WRITES      XACTS STATUS
------------------------------ ---------- ---------- ---------- ---------
miss ratio
------------------------------------------
_SYSSMU9$                          516096     134674          0 ONLINE
0 %

_SYSSMU10$                         450560     115954          0 ONLINE
0 %


11 rows selected.