목차

1. Latch Sleep Breakdown

2. Latch Miss Sources
3. Parent Latch Statistics
4. Child Latch Statistics
5. Segments by Logical Reads
6. Segments by Physical Reads
7. Segments by Row Lock Waits
8. Segments by ITL Waits
9. Segments by Buffer Busy Waits
10. Segments by Global Cache Buffer Busy
11. Segments by CR Blocks Received
12. Segments by Current Blocks Received
13. Dictionary Cache Stats

14. Dictionary Cache Stats (RAC)
15. Library Cache Activity
16. Library Cache Lock과 Library Cache Pin
17. Library Cache Activity (RAC)
18. Process Memory Summary
19. SGA Memory Summary
20. SGA breakdown difference
21. Streams CPU/IO Usage
22. Streams Capture/Apply/Queues
23. Buffered Subscribers
24. Rule Set
25. Resource Limit Stats
26. init.ora Parameters
27. Global Enqueue Statistics
28. Global CR Served Stats
29. Global CURRENT Served Stats
30. Global Cache Transfer Stats

1. Latch Sleep Breakdown


Latch Name
----------------------------------------
  Get Requests      Misses      Sleeps  Spin Gets   Sleep1   Sleep2   Sleep3
-------------- ----------- ----------- ---------- -------- -------- --------
gcs opaque info freelist
    92,442,740     119,997         350    119,677        0        0        0
undo global data
   160,828,696     113,453       1,367    112,192        0        0        0
ges enqueue table freelist
   192,550,785      99,225         513     98,748        0        0        0
KJC message pool free list
    48,985,704      53,638         189     53,475        0        0        0
..........................
..........................
..........................

의미
항목의미관련 컬럼
Latch Name래치 이름LATCH_NAME
Get Requests대기 가능 모드로 래치가 요청된 횟수GETS
Misses대기 가능 모드로 래치를 요청했을 때 래치를 바로 획ㄷ득하지 못하고 대기한 횟수MISSES
Sleeps대기 가능 모드로 래치를 요청했을 때 슬립한 횟수SLEEPS
Spin Gets대기 가능 모드로 요청했을 때 스핀을 수행했ㄷ가 래치를 획득한 횟수SPIN_GETS
Sleep1~310g에서는 더 이상 사용되지 않으며, 언제나 값이 0임SLEEP1, SLEEP2, SLEEP3
설명
  • Latch Sleep Breakdown 단위 보고서는 래치 통계 정보를 스핀 발생량 기준으로 보여줌
    • DBA_HIST_LATCH 사용
    • V$LATCH 참조
  • 체크포인트
    • 이 보고서는 스핀 발생량 기준으로 보여주는데, 스핀 발생량 보다 슬립 발생량을 기준으로 보는 것이 경합 래치를 찾는데 더욱 효과적임
    • 스핀 발생량이 많지만 슬립 발생량이 적은것은, 슬립 전에 래치를 획득한 경우가 많기 때문에 경합으로 보기 힘들지만, 슬립은 래치 획득에 실패한 것이므로 경합으로 볼 수 있음.
  • AWR이 아닌 실시간 경합 래치를 확인하는 스크립트

SELECT NAME,
       COUNT(*) CNT
FROM   V$LATCHNAME    A,
       V$SESSION_WAIT B
WHERE  A.LATCH# = B.P2
AND    B.EVENT  = 'latch free'
GROUP  BY NAME
ORDER  BY CNT DESC 
/

  • AWR에서 스핀 발생량이 아닌 슬립 발생량으로 확인하는 스크립트

SELECT B.LATCH_NAME NAME,
       E.GETS - B.GETS GETS,
       E.MISSES - B.MISSES MISSES,
       E.SLEEPS - B.SLEEPS SLEEPS,
       E.SPIN_GETS - B.SPIN_GETS SPIN_GETS
FROM   DBA_HIST_LATCH B,
       DBA_HIST_LATCH E
WHERE  B.LATCH_HASH = E.LATCH_HASH
AND    B.DBID       = (SELECT DBID
                       FROM   V$DATABASE)
AND    B.DBID       = (SELECT DBID
                       FROM   V$DATABASE)
AND    B.INSTANCE_NUMBER = :INST
AND    B.INSTANCE_NUMBER = :INST
AND    B.SNAP_ID         = :B_SNAP
AND    E.SNAP_ID         = :E_SNAP
AND    E.SLEEPS - B.SLEEPS > 0
ORDER  BY SLEEPS DESC,
          NAME
;

  • 래치 경합 발생 시 해결방안
    • _SPIN_COUNT 조정 : 이 값을 증가시키면 경합은 일부 해소되나 더 많은 CPU 자원을 사용하므로, 효과가 떨어짐. 마지막 방법으로 선택하는 것이 좋음
    • 래치 경합 원인 해결 : 아래의 9가지 이벤트로 확인

1-1) cache buffers chains (latch_ cache buffers chains)

  • 설명
    • 사용하고자 하는 데이터를 저장한 블록이 버퍼 캐시에 복사되어 있는지 확인하기 위해 버퍼 캐시의 해시 체인 구조를 검색할 때 획득함.
    • 대부분 '과도한 버퍼 캐시 I/O 발생', '핫 블록 발생' 시 확인 가능함.
  • 원인
    • 비효율적인 SQL로 'SQL ordered by Gets' 보고서에서 I/O가 과다한 SQL을 튜닝해야 함.
  • 해결방안
    • 어플리케이션 로직 수정
    • 데이터 분산
    • 인덱스 Skew 확장 문제 해결
    • '_DB_BLOCK_HASH_BUCKETS', '_DB_BLOCK_HASH_LATCHES' 히든 파라미터 조정으로 래치 경합 해소하는 것은 권장하지 않음

1-2) cache buffers lru chain (latch_ cache buffers lru chain)

  • 설명
  • 버퍼 캐시의 프리 버퍼를 할당받기 위해 LRU 리스트를 타색하거나 DBWR이 더티 버퍼를 디스크에 반영하고 나서 해당 버퍼를 LRU 리스트에 등록할 때 획득함.
  • 원인
    • 적정하지 않은 버퍼 캐시 크기 설정
    • 과도한 버퍼 캐시 I/O 발생
  • 해결방안
    • 비효율적인 SQL로 'SQL ordered by Gets' 보고서에서 I/O가 과다한 SQL을 튜닝해야 함.
    • '_DB_BLOCK_LRU_LATCH' 히든 파라미터 조정으로 래치 경합 해소하는 것은 권장하지 않음

1-3) In-memory undo (latch_ In-memory undo)

  • 설명
    • 메모리 처리 언두에 대한 래치 경합 시 발생함
  • 해결방안
    • 메모리 처리 언두를 사용하지 않음 : _IN_MEMORY_UNDO 히든 파라미터 FALSE로 변경
    • In-memory undo 래치 수 증가
    • PROCESSES 파라미터 값 증가
    • _IMU_POOL 파라미터 값 증가
    • SHARED_POOL_SIZE 파라미터 값 증가

1-4) library cache (latch_ library cache)

  • 설명
    • 라이브러리 캐시 영역을 검색하거나 라이브러리 캐시 영역에 프리 영역을 할당받고자 할 때 획득하는 래치
  • 원인
    • 과도한 파스 발생
    • 메모리 스와핑 발생
  • 해결방안
    • SESSION_CACHED_CURSORS 파라미터 값 증가 : 50 이상 권장
    • LOCK_SGA 값 TRUE로 변경 : SGA 영역을 물리적 메모리 영역에 고정시킴

1-5) shared pool (latch_ shared pool)

  • 설명
    • 공유 풀의 프리 리스트로부터 프리 청크를 할당받고자 할 때 동시 세션들에 의한 경합으로 인해 주로 발생
  • 원인
    • 과도한 하드 파스 발생
  • 해결방안
    • 바인드 변수 사용
    • CURSOR_SHARING 파라미터 사용 : SYSTEM이 아닌 SESSION 단위로 적용
  • 하드 파싱 유발시키는 SQL 확인하는 스크립트

SELECT SQL_ID "SQL ID",
       ' ' || REPLACE(REPLACE(REPLACE(SQL_TEXT, CHR(9), ' '), CHR(10), ' '),
                      CHR(13),
                      ' ') "SQL Text",
       CNT "Count",
       EXECUTIONS "Exec (Max)",
       SHARABLE_MEM "Memory (bytes)",
       HASH_VALUE "Hash_value",
       NVL(MODULE, '-') "Module"
FROM   (SELECT SUBSTR(SQL_TEXT, 1, 60) SQL_PARTIAL,
               MAX(TO_CHAR(SUBSTR(SQL_FULLTEXT, 1, 3000))) SQL_TEXT,
               COUNT(*) CNT,
               SUM(SHARABLE_MEM) SHARABLE_MEM,
               MAX(HASH_VALUE) HASH_VALUE,
               MAX(SQL_ID) SQL_ID,
               MAX(EXECUTIONS) EXECUTIONS,
               MAX(MODULE) MODULE
        FROM   V$SQL
        WHERE  EXECUTIONS > 0
        AND    EXECUTIONS < 3
        GROUP  BY SUBSTR(SQL_TEXT, 1, 60)
        HAVING COUNT(*) >= 10
        ORDER  BY CNT          DESC,
                  SHARABLE_MEM DESC)
;

1-6) row cache objects (latch_ row cache objects)

  • 설명
    • 로우 캐시의 데이터를 변경하고자 할 때 가장 먼저 획득해야 하는 래치.
  • 해결방안
    • 'Dictionary Cache Status' 단위 보고서 참고

1-7) redo allocation (latch_ redo allocation)

  • 설명
    • 리두 록, 버퍼의 프리 공간을 확보하기 위해서 획득할 때 발생함.
  • 해결방안
    • _LOG_PARALLELISM, _LOG_PARALLELISM_MAX 히든 파라미터 설정 값 조정 : 16개 초과는 권장하지 않음
    • NOLOGGING 옵션 사용 : 리두 로그 버퍼의 프리 공간 요청 빈도를 낮추기 위함

1-8) redo copy (latch_ redo copy)

  • 설명
    • PGA 내에 생성된 체인지 벡터를 리두 로그 버퍼 공간에 복제하기 위해 가장 먼저 획득하는 래치
  • 원인
    • 트랜잭션 발생 빈도에 비해 리두 로그 버퍼 영역이 부족하여 발생함.
  • 해결방안
    • 'redo allocation', 'log buffer space', 'log file sync' 이벤트와 함께 검토

1-9) redo writing (latch_ redo writing)

  • 설명
    • 리두 로그 버퍼의 프리 공간이 부족하여 LGWR에게 리두 로그 버퍼의 데이터를 리두 로그 파일로 쓰고 프리 공간을 확보하고자 할 때 획득하는 래치
  • 원인
    • 리두 로그 버퍼의 프리 공간을 요청 즉시 확보하지 못할 때 발생함
  • 해결방안
    • 'log buffer space' 이벤트와 함께 검토

2. Latch Miss Sources


                                                     NoWait              Waiter
Latch Name               Where                       Misses     Sleeps   Sleeps
------------------------ -------------------------- ------- ---------- --------
FOB s.o list latch       ksfd_allfob                      0        844      861
FOB s.o list latch       ksfd_fobd                        0        487      470
KCL gc element parent la kclnfndnewm                      0  1,377,989  279,276
KCL gc element parent la kclplz                           0     76,170  279,139
KCL gc element parent la kclulb                           0     43,789  305,088
KCL gc element parent la kclzcl                           0     31,741  263,343

의미
항목의미관련 컬럼
Latch Name래치 이름LATCH_NAME
Where획득 실패가 발생한 정확한 위치WHERE_IN_CODE
NoWait Misses대기 가능 모드로 래치 요청 시 스핀된 비율(%)NWFAIL_COUNT
Sleeps슬립 횟수SLEEP_COUNT
Waiter Sleeps래치 획득 대기자가 슬립한 횟수WTR_SLP_COUNT
설명
  • Latch Miss Sources 단위 보고서는 래치 획득을 실패한 정확한 위치를 보여줌
    • DBA_HIST_LATCH_MISSES_SUMMARY 사용
    • V$LATCH_MISSES 참조

3. Parent Latch Statistics


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Latch Name래치 이름LATCH_NAME
Get Requests대기 가능 모드로 래치가 요청된 횟수GETS
Misses대기 가능 모드로 래치를 요청했을 때 래치를 바로 획득하지 못하고 대기한 횟수MISSES
Sleeps대기 가능 모드로 래치를 요청했을 때 슬립한 횟수SLEEPS
Spin & Sleep 1->3+SPIN : 대기 가능 모드로 요청했을 때 스핀을 수행했다고 래치를 획득한 횟수
Sleep1->3 + : 10에서는 사용되지 않고 언제나 값은 0
SPIN_GETS, SLEEP1, SLEEP2 SLEEP3
설명
  • Parent Latch Statistics 단위 보고서는 FLUSH_LEVEL이 ALL일 경우 보여지며 'Latch Sleep Breakdown' 보고서와 동일한 내용
    • DBA_HIST_LATCH_PARENT 사용
    • V$LATCH_PARENT 참조

4. Child Latch Statistics


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Child Num라식 래치 IDCHILD#
설명
  • Child Latch Statistics 단위 보고서는 자식 래치의 통계 정보를 보여줌.
    FLUSH_LEVEL이 ALL일 경우 보여지며 'Latch Sleep Breakdown' 보고서와 동일한 내용
    • DBA_HIST_LATCH_CHILDREN 사용
    • V$LATCH_CHILDREN 참조

5. Segments by Logical Reads


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Owner오브젝트 소유자A.OWNER
Tablespace Name오브젝트가 위치한 테이블스페이스 이름A.TABLESPACE_NAME
Object Name오브젝트 이름A.OBJECT_NAME
Subobject Name오브젝트의 최하위 파티션 이름A.SUBOBJECT_NAME
Obj Type오브젝트 타입A.OBJECT_TYPE
Logicl Reads버퍼 캐시 I/O 발생량SUM(B.LOGICAL_READS_DELTA) GROUP BY DATAOBJ#, OBJ#, DBID
% Total총 발생 버퍼 캐시 I/O 중 해당 오브젝트에서 발생한 버퍼 캐시 I/O 비율100 * (Logical Reads / SUM(C.VALUE) WHERE STAT_NAME = 'session logical reads')
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
  • C : DBA_HIST_SYSSTAT
설명
  • Segments by Logical Reads 단위 보고서는 버퍼 캐시 I/O 발생 상위 오브젝트를 보여줌
  • 체크포인트
    • 세그먼트의 I/O 발생량을 확인할 수 있으며, 경합 발생 관련 단위보고서와 비교하여 분석 가능

6. Segments by Physical Reads


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Physical Reads디스크 I/O 발생량SUM(B.PHYSICAL_READS_DELTA) GROUP BY DATAOBJ#, OBJ# DBID
% Total총 발생 디스크 I/O 중 해당 오브젝트에서 발생한 디스크 I/O 비율100 * (Physical Reads / SUM(C.VALUE) WHERE STAT_NAME = 'physical reads')
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
  • C : DBA_HIST_SYSSTAT
설명
  • Segments by Physical Reads 단위 보고서는 디스크 I/O 발생 상위 오브젝트 보여줌
  • 체크포인트
    • 전체 오브젝트에서 골고루 디스크 I/O가 발생하는 경우 : 'Buffer Pool Advisory' 보고서를 참고하여 튜닝
    • 특정 오브젝트에서 디스크 I/O가 집중적으로 발생하는 경우 : 해당 오브젝트를 사용하는 악성 SQL 튜닝

7. Segments by Row Lock Waits


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Row Lock Waitsenq_TX - row lock contention과 enq_TX - index contention 대기 이벤트 관련 행 락 발생 횟수SUM(B.ROW_LOCK_WAITS_DELTA) GROUP BY DATAOBJ#, OBJ#, DBID
% of Captureenq_TX - row lock contention과 enq_TX - index contention 대기 이벤트 관련 행 락 중 해당 오브젝트에서 발생한 비율100 * (Row Lock Waits / SUM(B.ROW_LOCK_WAIT_DELTA))
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
설명
  • Segments by Row Lock Waits 단위 보고서는 enq_TX - row lock contention, enq_TX - index contention 대기 이벤트를 발생시키는 행 락 발생 상위 오브젝트를 보여줌
  • 체크포인트
    • 발생 비율 : 발생 비율이 특정 오브젝트에 집중되어 있을 때 오브젝트 경합 발생 의심
    • 발생 횟수

8. Segments by ITL Waits


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
ITL Waitsenq_ TX - allocate ITL entry 대기 이벤트 관련 행 락 발생함SUM(B.ITL_WAITS_DELTA) GROUP BY DATAOBJ#, OBJ#, DBID
% of Captureenq_ TX - allocate ITL entry 대기 이벤트 관련 행 락 중 해당 오브젝트에서 발생한 비율100 * (ITL Waits / SUM(B.ITL_WAITS_DELTA))
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
설명
  • Segments by ITL Waits 단위 보고서는 enq_ TX - allocate ITL entry 대기 이벤트를 발생시키는 행 락 발생 상위 오브젝트를 보여줌

9. Segments by Buffer Busy Waits


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Buffer Busy Waitsbuffer busy waits 대기 이벤트 발생량SUM(B.BUFFER_BUSY_WAITS_DELTA) GROUP BY DATAOBJ#, OBJ#, DBID
% of Capture수집된 buffer busy waits 대기 이벤트 발생량 중 해당 오브젝트에서 발생한 비율100 * (Buffer Busy Waits / SUM(B.BUFFER_BUSY_WAITS_DELTA))
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
설명
  • Segments by Buffer Busy Waits 단위 보고서는 buffer busy waits 대기 이벤트 발생 관련 오브젝트를 보여줌

10. Segments by Global Cache Buffer Busy


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Gc Buffer Busygc buffer busy 대기 이벤트 발생량SUM(B.GC_BUFFER_BUSY_DELTA) GROUP BY DATAOBJ#, OBJ#, DBID
% of Capture수집된 gc buffer busy 대기 이벤트 발생량 중 해당 오브젝트에서 발생한 비율100 * (Gc Buffer Busy / SUM(B.GC_BUFFER_BUSY_DELTA))
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
설명
  • Segments by Global Cache Buffer Busy 단위 보고서는 gc buffer busy 대기 이벤트 발생 관련 오브젝트를 보여줌

11. Segments by CR Blocks Received


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
CR BLOCK Received글로벌 읽기 일관성 버퍼 배시를 수신한 횟수SUM(B.GC_BLOCK_RECEIVED_DELTA) GROUP BY DATAOBJ#, OBJ#, DBID
% Total총 발생한 글로벌 읽기 일관성 버퍼 캐시의 수신 횟수 중에서 해당 오브젝트에 발생한 비율100 * (CR Block Received / SUM(C.VALUE) WHERE STAT_NAME = 'gc cr blocks received')
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
  • C : DBA_HIST_SYSSTAT

12. Segments by Current Blocks Received


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
CR BLOCK Received글로벌 현재 버퍼 배시를 수신한 횟수SUM(B.PHYSICAL_READ_DELTA) GROUP BY DATAOBJ#, OBJ#, DBID
% Total총 발생한 글로벌 현재 버퍼 캐시 수신 횟수 중에서 해당 오브젝트에 발생한 비율100 * (Current Block Received / SUM(C.VALUE) WHERE STAT_NAME = 'gc cr blocks received')
  • A : DBA_HIST_SEG_STAT_OBJ
  • B : DBA_HIST_SEG_STAT
  • C : DBA_HIST_SYSSTAT
설명
  • Segments by Global Cache Buffer Busy 단위 보고서는 gc buffer busy 대기 이벤트 발생 관련 오브젝트를 보여줌

13. Dictionary Cache Stats


                                   Get    Pct    Scan   Pct      Mod      Final
Cache                         Requests   Miss    Reqs  Miss     Reqs      Usage
------------------------- ------------ ------ ------- ----- -------- ----------
dc_awr_control                   1,834    9.2       0   N/A       26          1
dc_constraints                     150   94.0       0   N/A      150          0
dc_database_links                6,486    0.4       0   N/A        0          0
dc_files                         9,633   50.0       0   N/A        0      4,816
dc_free_extents                 34,284   36.6      58   0.0       24        197
dc_global_oids                 484,045    1.1       0   N/A    2,963        301
dc_histogram_data           14,114,458    1.5       0   N/A        0      3,621
dc_histogram_defs          143,366,320    1.8       0   N/A   28,456     23,214
dc_object_grants               263,207    4.6       0   N/A        0        131
dc_objects                  10,555,861    3.5       0   N/A    8,594      3,723
dc_profiles                    197,325    0.0       0   N/A        0          1
dc_rollback_segments        23,795,603    0.0       0   N/A        0     20,728
dc_segments                 73,394,662    5.6       0   N/A   52,333     53,968
dc_sequences                   133,807    7.0       0   N/A  133,806         69
dc_table_scns                      219   38.8       0   N/A        0          3
dc_tablespace_quotas            48,912    2.1       0   N/A   38,940         14
dc_tablespaces             286,332,494    0.0       0   N/A        0         45
dc_used_extents                      8  100.0       0   N/A        8          1
dc_usernames                 9,174,752    0.1       0   N/A        0        119
dc_users                   332,387,859    0.0       0   N/A        0        148
kqlsubheap_object                1,182    5.0       0   N/A        0          1
outstanding_alerts               6,454   90.0       0   N/A        0         32

의미
항목의미관련 컬럼
Cache로우 캐시에 저장된 딕셔너리 데이터 타입PARAMETER
Get Requests로우 캐시의 오브젝트 정보에 대한 요청 횟수GETS
Pct MissGet 요청에 대해서 캐시에서 정보를 찾지 못하고 실패한 횟수100 * (GETMISSES / GETS)
Scan ReqsScan 요청 횟수SCANS
Pct MissScan 요청에 대해서 캐시에서 정보를 찾지 못하고 실패한 횟수100 * (SCANMISSES / SCANS)
Mod Reqs로우 캐시 데이터에 대한 INSERT, UPDATE, DELETE 발생 횟수MODIFICATIONS
Final Usage로우 캐시 영역에 존재하는 로우 캐시 오브젝트 수USAGE
설명
  • Dictionary Cache Stats 단위 보고서는 공유 풀의 로우 캐시 영역 사용 통계 정보를 보여줌
    • DBA_HIST_ROWCACHE_SUMMARY 사용
    • V$ROWCACHE 참조
  • 체크포인트
    • 모든 SQL은 파스 단계에서 로우 캐시 영역을 반드시 참조하기 때문에 로우 캐시 영역에 대한 액세스 부하는 아주 높은 편임
    • 그러나 캐시 적중률이 낮다면 디스크 I/O 부하가 높아져 성능이 안좋아지므로, 가급적 Miss 비율이 2%를 넘지 않도록 해야 함.
  • 로우 캐시 적중률 확인 스크립트

SELECT ROUND((SUM(GETS - GETMISSES - FIXED)) / SUM(GETS) * 100, 2) DICT_HIT_RATION
FROM   V$ROWCACHE

  • AWR을 통한 로우 캐시 적중률 확인 스크립트

SELECT TO_CHAR(S.END_INTERVAL_TIME, 'YYYY-MM-DD HH24:MI:SS') DT,
       S.INSTANCE_NUMBER INST,
       ROUND(100 * (1 - (SUM(E.GETMISSES) - SUM(B.GETMISSES)) /
             (SUM(E.GETS) - SUM(B.GETS))),
             2) DICT_HIT_RATIO
FROM   DBA_HIST_ROWCACHE_SUMMARY B,
       DBA_HIST_ROWCACHE_SUMMARY E,
       DBA_HIST_SNAPSHOT         S
WHERE  S.INSTANCE_NUMBER = B.INSTANCE_NUMBER
AND    S.INSTANCE_NUMBER = E.INSTANCE_NUMBER
AND    E.SNAP_ID = S.SNAP_ID
AND    B.SNAP_ID = S.SNAP_ID - 1
AND    TO_CHAR(S.END_INTERVAL_TIME, 'YYYY-MM-DD HH24:MI:SS') BETWEEN '2009-09-21 00:00:00' 
                                                             AND     '2009-09-21 10:00:00'
GROUP  BY TO_CHAR(S.END_INTERVAL_TIME, 'YYYY-MM-DD HH24:MI:SS'),
          S.INSTANCE_NUMBER
HAVING SUM(E.GETS) - SUM(B.GETS) > 0
ORDER  BY INST,
          DT

  • Cache 항목별 튜닝방안
파라미터명설명
dc_tablespaces원인 : 새로운 익스텐트를 할당할 때 발생하며, INSERT 바하가 높은 세그먼트의 익스텐트가 너무 작게 설정되어 문제
해결방안 : 세그먼트의 NEST EXTENT 값을 크게 변경해야 하며, 로컬 테이블스페이스 사용 시 큰 UNIFORM 사이즈를 가지는 테이블스페이스로 이동시켜야 함.
dc_used_extents
dc_free_extents
원인 : 딕셔너리 테이블스페이스의 익스텐트 관리에 대한 경합으로 발생하며, 익스텐트 크기가 작거나 테이블스페이스 단편화가 과도하게 많이 발생하는 것이 원인
해결방안 : 가급적 로컬 테이블스페이스의 사용이 권고하며, 대용량 데이터 발생시키는 테이블은 큰 익스텐트가 설정된 별도의 테이블스페이스로 분리해야 함.
dc_sequences원인 : 시퀀스 사용 시 NEXTVAL 값 획득에 대한 경합으로 발생
해결방안 : CACHE 옵션을 크게 적용해야 함
dc_objects원인 : 오브젝트 속성 변경에 따른 재컴파일로 유발됨
해결방안 : 불필요한 오브젝트 변경은 피하고 업무외시간에 변경토록 함
dc_users원인 : DB 유저 정보를 획득하기 위해서 발생함
해결방안 : 오브젝트 소유 유저와 어플리케이션에서 사용하는 DB 유저를 최소화해야 함
dc_histogram_defs
dc_histogram_data
원인 : SQL 실행 계획 수립 시 테이블의 히스토그램 정보를 획득하기 위해 발생
해결방안 : 수행빈도가 높은 하드파스 SQL을 바인드 변수로 변경

13-1) row cache lock

  • 설명
    • 딕셔너리 캐시 영역에 저장된 정보를 변경하고자 락을 획득할 때 발생함
    • 해결방안은 CACHE 옵션 값을 크게 늘려야 함

14. Dictionary Cache Stats (RAC)


                                   GES          GES          GES
Cache                         Requests    Conflicts     Releases
------------------------- ------------ ------------ ------------
dc_awr_control                     219           75           96
dc_constraints                     236            0           77
dc_database_links                   30            0           29
dc_files                         4,817            0        4,817
dc_free_extents                 13,032            0       12,530
dc_global_oids                   9,901            0        5,899
dc_histogram_defs            2,538,991            0    2,547,276
dc_object_ids                  736,258           16      732,915
dc_objects                     383,387          743      369,957
dc_profiles                         10            0            7
dc_segments                  4,241,268          833    4,133,937
dc_sequences                   267,152        4,284        5,082
dc_table_scns                       85            0           94
dc_tablespace_quotas            97,504          250          808
dc_tablespaces                   2,983            0        2,980
dc_used_extents                     16            0            7
dc_usernames                     8,222            0        8,265
dc_users                         7,817            1        7,787
kqlsubheap_object                   59            0           60
outstanding_alerts              12,745        3,265        2,512

의미
항목의미관련 컬럼
GES Requests다른 인스턴스의 로우 캐시 정보 획득을 위해 락을 요청한 횟수DML_REQUESTS
GES Conflicts로우 캐시의 글로벌 락 경합에 따른 지연 횟수DML_CONFLICTS
GES Releases로우 캐시의 글로벌 락에 대한 해제 횟수DML_RELEASE
  • DBA_HIST_ROWCACHE_SUMMARY 사용
  • V$ROWCACHE 참조

15. Library Cache Activity


                         Get    Pct            Pin    Pct             Invali-
Namespace           Requests   Miss       Requests   Miss    Reloads  dations
--------------- ------------ ------ -------------- ------ ---------- --------
BODY               1,032,549    0.4     39,285,939    0.0      7,136        0
CLUSTER               13,706    0.8         24,686    1.7        304        0
INDEX             10,442,647    0.1     10,601,460    0.3     13,316        0
JAVA DATA                 84    0.0              0    N/A          0        0
JAVA RESOURCE            655   62.3          1,274   43.2         61        0
JAVA SOURCE              589   68.9          1,079   39.4         19        0
PIPE                 278,064    0.0        279,588    0.0          0        0
SQL AREA             542,533   51.1    875,051,923    0.3    607,793  282,126
TABLE/PROCEDURE   10,072,119    0.7    103,275,057    0.9    479,749        0
TRIGGER               75,588    1.4        935,313    0.6      3,970        0
          -------------------------------------------------------------

의미
항목의미관련 컬럼
Namespace라이브러리 캐시에 저장되어 있는 오브젝트 타입NAMESPACE
Get RequestsSQL 수행 단계에서 오브젝트 핸들에 대한 락을 요청한 횟수GETS
Pct MissGet 요청 발생 시 오브젝트 핸들을 찾지 못한 비율100 * (GETHITS / GETS)
Pin Requests오브젝트 핸들의 락을 획득하고 힙 오브젝트의 핀을 요청한 횟수PINS
Pct MissPin 요청 발생 시 힙 오브젝트를 찾지 못한 비율100 * (PINHITS / PINS)
Reloads디스크로부터 오브젝트 정보가 캐시 영역으로 다시 로딩된 횟수RELOADS
Invali-dations오브젝트 정보 변경으로 인해 캐시 정보가 무효화된 횟수INVALIDATIONS
설명
  • Library Cache Activity 단위 보고서는 라이브러리 캐시의 통계 정보를 보여줌
    • DBA_HIST_LIBRARTCACHE 사용
    • V$LIBRARYCAHE 참조

16. Library Cache Lock과 Library Cache Pin

설명
  • 라이브러리 캐시 내에 오브젝트 핸들과 오브젝트 힙을 액세스하기 위해 필요한 락과 핀을 획득하지 못하고 대기하면 발생하는 이벤트
  • 하드파스 SQL을 찾아 바인드 변수를 사용토록 해야 함

17. Library Cache Activity (RAC)


                    GES Lock      GES Pin      GES Pin   GES Inval GES Invali-
Namespace           Requests     Requests     Releases    Requests     dations
--------------- ------------ ------------ ------------ ----------- -----------
BODY                     223        4,257        3,978       3,953          49
CLUSTER               24,686          109          108         109           0
INDEX             10,601,440       14,153       13,840      14,003           0
JAVA RESOURCE          1,079          408          725           0           0
JAVA SOURCE            1,079          406          723           0           0
TABLE/PROCEDURE   13,306,135       62,925       63,748      50,932          30
TRIGGER                1,082        1,063        1,403         658           3
          -------------------------------------------------------------

의미
항목의미관련 컬럼
GES Lock Requests인스턴스 락에 대한 Get 요청 횟수DML_LOCK_REQUESTS
GES Pin Requests인스턴스 락에 대한 Pin 요청 횟수DML_PIN_REQUESTS
GES Pin Releases인스턴스 락에 대한 Pin 해제 요청 횟수DML_PIN_RELEASES
GES Inval Requests무효화된 인스턴스 락에 대한 Get 요청 횟수DML_INVALIDATIONS_REQUESTS
GES Invalidations다른 노드의 인스턴스로부터 무효화 요청을 받은 횟수DML_INVALIDATIONS
  • DBA_HIST_LIBRARYCACHE 사용
  • V$LIBRARYCACHE 참조

18. Process Memory Summary


                                                            Hist
                                    Avg  Std Dev     Max     Max
               Alloc      Used    Alloc    Alloc   Alloc   Alloc    Num    Num
  Category      (MB)      (MB)     (MB)     (MB)    (MB)    (MB)   Proc  Alloc
- -------- --------- --------- -------- -------- ------- ------- ------ ------
B Other      1,746.4       N/A      3.4     16.4     355     355    520    520
  Freeable     173.4        .0       .4       .8      14     N/A    416    416
  SQL          130.6      89.8       .3      1.6      30     930    490    458
  PL/SQL        33.9      16.2       .1       .2       2      25    520    519
  JAVA          27.0      26.9      3.4      1.5       6       7      8      8
E Other      2,495.0       N/A      3.6     14.9     362     362    695    695
  SQL        2,324.5   2,185.3      3.5     37.7     572     930    665    634
  Freeable     628.9        .0      1.2     14.4     334     N/A    536    536
  PL/SQL        97.5      21.5       .1       .5       5      75    695    694
  JAVA          42.3      42.1      2.8      2.0       7       8     15     15
          -------------------------------------------------------------

의미
항목의미관련 컬럼
Category카테고리 이름CATEGORY
Alloc (MB)프로세스에 할당된 메모리 크기(단위:MB)ALLOCATE_TOTAL / 1024 / 1024
Used (MB)프로세스가 사용 중인 메모리 크기(단위:MB)USED_TOTAL / 1024 / 1024
Avg Alloc (MB)프로세스에 할당된 평균 메모리 크기(단위:MB)ALLOCATE_AVG / 1024 / 1024
Std Dev Alloc (MB)프로세스에 할당된 평귬 메모리 크기 표준 편차(단위:MB)ALLOCATE_STDDEV / 1024 / 1024
Max Alloc (MB)프로세스에 할당된 최고 PGA 크기(단위:MB)ALLOCATE_MAX / 1024 / 1024
Hist Max Alloc (MB)프로세스에 할당될 수 있는 최대 PGA 크기(단위:MB)MAX_ALLOCATED_MAX / 1024 / 1024
Num Proc프로세스 수NUMPROCESSES
Num Alloc메모리를 실제 할당받은 프로세스 수NON_ZERO_ALLOCS
설명
  • Process Memory Summary 단위 보고서는 프로세스 카타고리별로 할당받은 PGA 메모리 크기 확인 가능
    • DBA_HIST_PROCESS_MEM_SUMMARY 사용
    • V$PROCESS_MEMORY 참조

19. SGA Memory Summary


                                                      End Size (Bytes)
SGA regions                     Begin Size (Bytes)      (if different)
------------------------------ ------------------- -------------------
Database Buffers                     6,710,886,400
Fixed Size                               2,092,776
Redo Buffers                            31,461,376
Variable Size                        8,287,944,984
                               -------------------
sum                                 15,032,385,536
          -------------------------------------------------------------

의미
항목의미관련 컬럼
SGA regionsSGA 영역 이름NAME
Begin Size (Bytes)스냅샷 시작 시점의 크기VALUE
End Size (Bytes)(if different)스냅샷 종료 시점의 크기VALUE
  • DBA_HIST_STAT 사용

20. SGA breakdown difference


Pool   Name                                 Begin MB         End MB  % Diff
------ ------------------------------ -------------- -------------- -------
java   free memory                             229.9          230.6    0.31
java   joxlod exec hp                           24.3           23.6   -2.96
large  PX msg pool                              59.7           59.7    0.00
large  free memory                             964.3          964.3    0.00
shared ASH buffers                              66.5           66.5    0.00
shared CCursor                                 166.9           71.9  -56.93
shared Checkpoint queue                        166.7          166.7    0.00
shared FileOpenBlock                            80.4           80.4    0.00
shared Heap0: KGL                              132.7          107.1  -19.31
shared KQR L PO                                106.3          105.9   -0.42
shared PCursor                                 113.7            N/A -100.00
shared PL/SQL DIANA                            224.4          219.4   -2.24
shared PL/SQL MPCODE                           234.9          228.4   -2.79
shared db_block_hash_buckets                   448.0          448.0    0.00
shared event statistics per sess               175.8          175.8    0.00
shared free memory                             602.7          751.1   24.63
shared gcs resources                           140.0          140.0    0.00
shared gcs shadows                              88.2           88.2    0.00
shared ges enqueues                            199.9          199.9    0.03
shared ges resource                            120.0          120.0    0.05
shared library cache                           593.5          535.9   -9.70
shared sessions                                101.2          101.2    0.00
shared sql area                              1,648.2        1,752.2    6.31
stream free memory                             608.0          608.0    0.00
       buffer_cache                          6,400.0        6,400.0    0.00
       fixed_sga                                 2.0            2.0    0.00
       log_buffer                               30.0           30.0    0.00
          -------------------------------------------------------------

의미
항목의미관련 컬럼
PoolSGA 풀 영역의 이름POOL
NameSGA 구성 영역에 대한 이름NAME
Begin MB스냅샷 시작 시점의 크기BYTES
End MB스냅샷 종료 시점의 크기BYTES
% Diff스냅샷 시작 시점 크기에 대한 종료 시점 크기의 증감 비율---
  • DBA_HIST_SGASTAT 사용
  • V$SGASTAT 참조
설명
  • SGA 각 풀 영역에 대한 free memory 뿐만 아니라 각 세부 영역별로 할당된 크기 확인 가능

21. Streams CPU/IO Usage

  • 오라클 스트림즈 관련 프로세스가 사용한 CPU 시간 보여줌

22. Streams Capture/Apply/Queues

  • 오라클 스트림즈의 수집/적용/버퍼 큐 백그라운드 프로세스 관련 통계 정보를 보여줌

23. Buffered Subscribers

  • 버퍼 큐 사용 상세 통계를 보여줌

24. Rule Set

  • 스트림즈가 사용되는 룰 셋 사용 통계 정보를 보여줌

25. Resource Limit Stats


-- 1. AWR에서는 데이터 없음(책 참조)
                  No data exists for this section of the report.
          -------------------------------------------------------------
;

의미
항목의미관련 컬럼
Resource Name오라클 자원 이름RESOURCE_NAME
Current Utilization종료 스냅 시 사용하고 있는 자원 개수CURRENT_UTILIZATION
Maximum Utiliztion인스턴스 시작 후 최대 사용 자원 개수MAX_UTILIZATION
Initial Allocation초기 설정 자원 개수INITIAL_UTILIZATION
Limit인스턴스에서 사용할 수 있는 한계 자원 개수LIMIT_VALUE
설명
  • Resource Limit Stats 단위 보고서는 현재 사용하고 있는 자원 개수나 최대 사용 리소스 한계 리소스 개수의 80% 이상 사용된 리소스에 한하여 보여줌
    • DBA_HIST_RESOURCE_LIMIT 사용
    • V$RESOURCE_LIMIT 참조

26. init.ora Parameters


Parameter Name                Begin value                       (if different)
----------------------------- --------------------------------- --------------
O7_DICTIONARY_ACCESSIBILITY   FALSE
_PX_use_large_pool            TRUE
_b_tree_bitmap_plans          FALSE
_bloom_filter_enabled         FALSE
_buffer_busy_wait_timeout     2
_cursor_features_enabled      10
_db_block_hash_latches        2097152
................
................
................

의미
항목의미관련 컬럼
Parameter Name파라미터 이름PARAMETER_NAME
Begin value시작 스냅 수행 시 파라미터 값VALUE
(if different)종료 스냅 수행 시 파라미터 값VALUE
  • DBA_HIST_PARAMETERS 사용
  • V$SYSTEM_PARAMETERS 참조

27. Global Enqueue Statistics


Statistic                                    Total   per Second    per Trans
--------------------------------- ---------------- ------------ ------------
messages queue sent logical         -2,824,480,068    -26,582.6       -521.0
messages received actual            -2,591,219,175    -24,387.3       -478.0
messages received logical              900,819,910      8,478.1        166.2
messages sent directly                 424,778,922      3,997.8         78.4
messages sent indirectly            -3,056,363,106    -28,765.0       -563.8
messages sent not implicit batche      450,110,445      4,236.2         83.0
messages sent pbatched              -1,832,668,539    -17,248.2       -338.1
msgs causing lmd to send msgs            2,533,729         23.8          0.5
msgs causing lms(s) to send msgs       290,802,570      2,736.9         53.6
msgs received queue time (ms)           12,922,629        121.6          2.4
msgs received queued                   898,256,674      8,454.0        165.7
msgs sent queue time (ms)               30,763,735        289.5          5.7
msgs sent queue time on ksxp (ms)      528,751,363      4,976.4         97.5
msgs sent queued                     1,380,097,345     12,988.8        254.6
msgs sent queued on ksxp             1,426,334,635     13,424.0        263.1
process batch messages received        436,940,546      4,112.3         80.6
process batch messages sent            436,277,471      4,106.0         80.5
          -------------------------------------------------------------

의미
항목의미관련 컬럼
Statistic통계 이름NAME
Total통계 값VALUE
per Second초당 발생 통계 값---
per Trans트랜잭션당 발생 통계 값---
  • DBA_HIST_DML_MISC 사용
  • V$DLM_MISC 참조

28. Global CR Served Stats


Statistic                                   Total
------------------------------ ------------------
CR Block Requests                         844,086
CURRENT Block Requests                    548,958
Data Block Requests                       844,086
Undo Block Requests                        19,780
TX Block Requests                         522,520
Current Results                         1,251,975
Private results                            95,993
Zero Results                               42,003
Disk Read Results                           3,058
Fail Results                                   13
Fairness Down Converts                    144,282
Fairness Clears                                 0
Free GC Elements                                0
Flushes                                    16,911
Flushes Queued                                  0
Flush Queue Full                                0
Flush Max Time (us)                             0
Light Works                                35,114
Errors                                          0
          -------------------------------------------------------------

의미
항목의미관련 컬럼
Statistic통계 항목---
Total통계 항목별 발생 건수---
  • DBA_HIST_CR_BLOCK_SERVICE 사용
  • V$CR_BLOCK_SERVER 참조

29. Global CURRENT Served Stats


Statistic         Total   % <1ms  % <10ms % <100ms    % <1s   % <10s
---------- ------------ -------- -------- -------- -------- --------
Pins         53,276,058    99.95     0.00     0.05     0.00     0.00
Flushes          19,893    57.09    41.76     1.07     0.09     0.00
Writes          268,678    34.77    60.10     4.94     0.14     0.05
          -------------------------------------------------------------

의미
항목의미관련 컬럼
Statistic통계 항목---
Total통계 항목별 발생건수PIN1 + PIN10 + PIN100 + PIN1000 + PIN10000
FLUSH1 + FLUSH10 + FLUSH100 + FLUSH1000 + FLUSH10000
WRITE1 + WRITE10 + WRITE100 + WRITE1000 + WRITE10000
% <1ms ~ <10s통계 항목별 수행 시간의 시간대별 비율100 * (PIN1 ~ PIN10000 / Total)
100 * (FLUSH1 ~ FLUSH10000 / Total)
100 * (WRITE1 ~ WRITE10000 / Total)
  • DBA_HIST_CURRENT_BLOCK_SERVER 사용
  • V$CURRENT_BLOCK_SERVER 참조

30. Global Cache Transfer Stats


-> Immediate  (Immed) - Block Transfer NOT impacted by Remote Processing Delays
-> Busy        (Busy) - Block Transfer impacted by Remote Contention
-> Congested (Congst) - Block Transfer impacted by Remote System Load
-> ordered by CR + Current Blocks Received desc

                                 CR                           Current
                   -----------------------------   -----------------------------
Inst Block           Blocks      %      %      %     Blocks      %      %      %
  No Class         Received  Immed   Busy Congst   Received  Immed   Busy Congst
---- -----------   -------- ------ ------ ------   -------- ------ ------ ------
   1 data block     789,146   97.6    2.4     .0   ########   99.7     .1     .1
   1 undo header    394,915   95.4    4.6     .0      8,752   99.9     .1     .0
   1 Others           6,550   99.3     .7     .0     51,597   99.8     .2     .0
   1 undo block      32,317   97.2    2.7     .0          2  100.0     .0     .0
          -------------------------------------------------------------

의미
항목의미관련 컬럼
Inst NoRAC 인스턴스 번호INSTANCE
Block Class블록 클래스CLASS
Blocks ReceivedAWR DB 보고서가 생성된 인스턴스에 서 다른 RAC 인스턴스로 전송된 읽기읽관성 블록/현재블록 전송량CR_BLOCK + CR_BUSY + CR_CONGEST + CURRENT_BLOCK + CURRENT_BUSY + CURRENT_CONGETS
% Immed전체 정송량 중 DB 경합 및 시스템 부하에 영향을 받지 않고 정상적으로 전송된 캐시 퓨전 블록 비율100 * (CR_BLOCK / Block Received)
100 * (CURRENT_BLOCK / Block Received)
% Busy전체 전송량 중 DB 경합으로 영향받은 캐시 퓨전 블록 비율100 * (CR_BUSY / Block Received)
100 * (CURRENT_BUSY / Block Received)
% Congst전체 전송량 중 시스템 부하로 인해 영향 바든 캐시 퓨전 블록 비율100 * (CR_CONGEST / Block Received)
100 * (CURRENT_CONGEST / Block Received)
  • DBA_HIST_INST_CACHE_TRANSFER 사용
  • V$INSTANCE_CACHE_TRANSFER 참조

문서에 대하여