목차
1. Tablespace IO Stats
2. File IO Stats
3. Buffer Pool Statistics
4. Instance Recovery Stats
5. Buffer Pool Advisory
6. PGA Aggr Summary
7. PGA Aggr Target Stats
8. PGA Aggr Target Histogram
9. PGA Memory Advisory
10. Shared Pool Advisory
11. SGA Target Advisory
12. Streams Pool Advisory
13. Java Pool Advisory
1. Tablespace IO Stats
AWR DB 보고서 내용
Tablespace IO Stats DB/Inst: XSOFT/XSOFT2 Snaps: 90505-90564
-> ordered by IOs (Reads + Writes) desc
Tablespace
------------------------------
Av Av Av Av Buffer Av Buf
Reads Reads/s Rd(ms) Blks/Rd Writes Writes/s Waits Wt(ms)
-------------- ------- ------ ------- ------------ -------- ---------- ------
APPS_TS_SSD_DATA
374,001,758 3,520 0.8 1.7 1,903,439 18 ########## 2.1
APPS_TS_EXT_DATA
186,799,104 1,758 0.6 4.0 1,710,644 16 ########## 3.8
APPS_TS_EXT_IDX
66,380,204 625 0.5 1.0 5,618,575 53 8,598,510 0.8
APPS_TS_TX_DATA
70,836,490 667 1.0 10.8 241,141 2 2,469,910 1.5
APPS_TS_TX_IDX
66,176,821 623 0.7 1.0 607,256 6 2,619,839 2.2
.......................................
.......................................
.......................................
의미
항목 | 의미 | 관련 컬럼 |
---|
Tablespace | 테이블스페이스 이름 | TSNAME |
Reads | 읽기 디스크 I/O 발생 횟수 | SUM(PHYRDS) GROUP BY TSNAME |
Av. Reads/s | 초당 평균 발생한 읽기 디스크 I/O 횟수 | --- |
Av. Rd(ms) | 읽기 디스크 I/O 평균 속도(단위 : 1/1000초) | 10 * (SUM(READTIM) GROUP BY TSNAME / SUM(PHYRDS) GROUP BY TSNAME) |
Av. Blks/Rd | 1회 읽기 디스크 I/O 수행당 사용한 평균 블록 수 | SUM(PHYBLKRD) GROUP BY TSNAME / SUM(PHYRDS) GROUP BY TSNAME |
Writes | 쓰기 디스크 I/O 발생 횟수 | SUM(PHYWRTS) GROUP BY TSNAME |
Av. Writes/s | 초당 평균 발생한 쓰기 디스크 I/O 횟수 | --- |
Buffer Waits | 디스크 I/O를 하기 위해 대기한 횟수 | SUM(WAIT_COUNT) GROUP BY TSNAME |
Av. Buf Wt(ms) | 버퍼 캐시를 획득하기 위해 대기한 평균 시간(단위 : 1/1000초) | 10 * (SUM(TIME) GROUP BY TSNAME / SUM(WAIT_COUNT) GROUP BY TSNAME) |
설명
- Tablespace IO Stats 단위 보고서는 테이블스페이스별 디스크 I/O 발생 수치를 보여줌.
- DBA_HIST_FILESTATXS, DBA_HIST_TEMPSTATXS 사용
- V$FILESTAT, V$TEMPSTAT 참조
- 체크포인트
- 특정 테이블스페이스로 I/O가 집중될 경우, 디스크 경합을 일으키며 성능이 크게 저하되므로 점검 필요.
- 언두 테이블스페이스에 I/O가 많을 경우, 언두 관련 통계 및 대기 이벤트 수치 점검 필요.
- 특정 테이블스페이스 I/O 성능이 낮게 나올 경우 체크사항
테이블스페이스를 구성하는 데이터 파일들이 특정 볼륨 그룹으로 집중되어 있는가? | ▶ 데이터 파일들이 특정 볼륨 그룹으로 집중되어 있다면, 최적의 I/O 성능 보장받지 못함. ▶ 그러므로, 논리 볼륨과 볼륨 그룹에 대한 구성 정보를 확인하여 디스크 I/O 분산 체크 필요함. ▶ 서비스 이후 재배치는 어려우므로, 초기 DB 구성 단계에서 충분히 고려되어야 함. |
테이블스페이스를 구성하는 데이터 파일들의 논리 볼륨은 스트라이핑 구성을 가지는가? | ▶ 스트라이핑 구성이 아니라면, 데이터 저장 시 특정 시점의 데이터들이 특정 볼륨 그룹으로 편중될 가능성이 커지고 I/O 경합 유발함. ▶ 스프라이핑 구성이 안된 볼륨에 구성을 적용하려면, 논리 볼륨을 새로 만들어야 하므로, 초기 단계에서 고려되어야 함. |
업무 특성상 해당 테이블스페이스에 존재하는 세그먼트들의 디스크 I/O 비중은 높은가? | ▶ SQL 튜닝을 통해 디스크 I/O와 경합을 줄여야 함. |
테이블스페이스에 저장된 세그먼트에 경합이 발생하고 있는가? | ▶ SQL 튜닝을 통해 디스크 I/O와 경합을 줄여야 함. |
- 세그먼트 발생한 디스크 I/O 체크
- AWR 'Segments by Physical Reads'에서 체크 가능
- 아래 스크립트로 체크 가능
SELECT /*+ ORDERED USE_NL(SEG TBS) */
SEG.OWNER,
TBS.NAME TS_NAME,
SEG.OBJECT_NAME,
SEG.OBJECT_TYPE,
SEG.PHY_R,
ROUND(SEG.RATIO * 100, 1) RATIO
FROM (SELECT /*+ ORDERED USE_NL(A B) */
C.OWNER,
B.TS#,
C.OBJECT_NAME,
C.OBJECT_TYPE,
SUM(NVL(B.PHYSICAL_READS_DELTA, 0)) PHY_R,
RATIO_TO_REPORT(SUM(NVL(B.PHYSICAL_READS_DELTA, 0))) OVER(PARTITION BY 1) RATIO
FROM DBA_HIST_SNAPSHOT A,
DBA_HIST_SEG_STAT B,
DBA_OBJECTS C
WHERE A.SNAP_ID = B.SNAP_ID
AND B.OBJ# = C.OBJECT_ID
AND TO_CHAR(A.BEGIN_INTERVAL_TIME, 'YYYY/MM/DD:HH24:MI') BETWEEN '2012/12/10:00:00'
AND '2012/12/12:00:00' -- 검색 구간 지정
-- AND B.TS#=10 특정 테이블스페이스만 보고자 할 때 이용
GROUP BY C.OWNER,
B.TS#,
C.OBJECT_NAME,
C.OBJECT_TYPE
ORDER BY 6 DESC) SEG,
SYS.TS$ TBS
WHERE SEG.TS# = TBS.TS#
AND ROWNUM <= 20 -- 추출 행 수 지정
2. File IO Stats
AWR DB 보고서 내용
File IO Stats DB/Inst: XSOFT/XSOFT2 Snaps: 90505-90564
-> ordered by Tablespace, File
Tablespace Filename
------------------------ ----------------------------------------------------
Av Av Av Av Buffer Av Buf
Reads Reads/s Rd(ms) Blks/Rd Writes Writes/s Waits Wt(ms)
-------------- ------- ------ ------- ------------ -------- ---------- ------
APPS_TS_ARCHIVE /dev/rd_arch01
5,295 0 0.4 1.0 87 0 0 0.0
APPS_TS_ARCHIVE /dev/rd_data2024
106,278 1 0.4 1.1 12,415 0 14 1.4
APPS_TS_ARCHIVE /dev/rd_data4_20024
36,633 0 0.4 1.0 9,960 0 74 0.3
APPS_TS_ARCHIVE /dev/rd_data4_20943
43,578 0 0.5 1.0 10,352 0 11 2.7
의미
항목 | 의미 | 관련컬럼 |
---|
Filename | 파일 이름 | FILENAME |
Reads | 읽기 디스크 I/O 발생 횟수 | SUM(PHYRDS) GROUP BY FILENAME |
Av. Reads/s | 초당 평균 발생한 읽기 디스크 I/O 횟수 | --- |
Av. Rd(ms) | 읽기 디스크 I/O 평균 속도(단위 : 1/1000초) | 10 * (SUM(READTIM) GROUP BY FILENAME / SUM(PHYRDS) GROUP BY FILENAME) |
Av. Blks/Rd | 1회 읽기 디스크 I/O 수행당 사용한 평균 블록 수 | SUM(PHYBLKRD) GROUP BY FILENAME / SUM(PHYRDS) GROUP BY FILENAME |
Writes | 쓰기 디스크 I/O 발생 횟수 | SUM(PHYWRTS) GROUP BY FILENAME |
Av. Writes/s | 초당 평균 발생한 쓰기 디스크 I/O 횟수 | --- |
Buffer Waits | 디스크 I/O를 하기 위해 대기한 횟수 | SUM(WAIT_COUNT) GROUP BY FILENAME |
Av. Buf Wt(ms) | 버퍼 캐시를 획득하기 위해 대기한 평균 시간(단위 : 1/1000초) | 10 * (SUM(TIME) GROUP BY FILENAME / SUM(WAIT_COUNT) GROUP BY FILENAME) |
설명
- File IO Stats 단위 보고서는 '테이블스페이스 > 파일단위' 디스크 I/O 발생 수치를 보여줌.
- DBA_HIST_FILESTATXS, DBA_HIST_TEMPSTATXS 사용
- V$FILESTAT, V$TEMPSTAT 참조
- 체크포인트
- 특정 테이블스페이스의 특정 데이터 파일에 I/O가 집중될 경우, 테이블스페이스 I/O도 낮게 나오므로 튜닝 점검 필요.
- 하지만, 테이블스페이스의 I/O는 크지 않지만 특정 데이터파일의 I/O가 클 경우, I/O가 높은 세그먼트의 익스텐트가 특정 데이터파일에 집중적으로 할당되어 있기 때문.
- 해결방안
- 특정 세그먼트의 편중으로 인해 데이터 파일 I/O가 높게 니타날경우, 세그먼트를 재생성하거나 MOVE 명령으로 해당 세그먼트를 재구성함으로써 추가적인 I/O 분산처리함.
- 특정 세그먼트가 특정 데이터 파일에 얼마나 많은 데이터 블록들을 생성하고 있는지 체크
SELECT A.SEGMENT_NAME,
SUM(A.BLOCKS)
FROM DBA_EXTENTS A,
V$DBFILE B
WHERE A.FILE_ID = B.FILE#
AND B.NAME = '/oradata1/DATA/user_1.dbf'
AND A.SEGMENT_NAME IN ('EMPLOYEES', 'DEPARTMENT')
GROUP BY A.SEGMENT_NAME
ORDER BY 2 DESC
;
3. Buffer Pool Statistics
AWR DB 보고서 내용
Buffer Pool Statistics DB/Inst: XSOFT/XSOFT2 Snaps: 90505-90564
-> Standard block size Pools D: default, K: keep, R: recycle
-> Default Pools for other block sizes: 2k, 4k, 8k, 16k, 32k
Free Writ Buffer
Number of Pool Buffer Physical Physical Buff Comp Busy
P Buffers Hit% Gets Reads Writes Wait Wait Waits
--- ---------- ---- -------------- ------------ ----------- ---- ---- ----------
D 768,000 86 ############## ############ 55,462,235 0 1 ##########
-------------------------------------------------------------
의미
항목 | 의미 | 관련컬럼 |
---|
P | 버퍼 캐시 종류 | SUBSTR(NAME, 1, 1) |
Number of Buffers | 버퍼 블록의 수 | SET_MSIZE |
Pool Hit% | 버퍼 캐시 적중률 | 100 * (1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS))) |
Buffer Gets | 버퍼 획득 횟수 | DB_BLOCK_GETS + CONSISTENT_GETS |
Physical Reads | 읽기 디스크 I/O 발생 횟수 | PHYSICAL_READS |
Physical Writes | 쓰기 디스키 I/O 발생 횟수 | PHYSICAL_WRITES |
Free Buff Wait | 사용 가능한 버퍼 캐시의 부족으로 대기한 횟수 | FREE_BUFFER_WAIT |
Writ Comp Wait | 사용하려는 버퍼 캐시가 DBWR에 의해 디스크에 기록 중이어서 대기한 횟수 | WRITE_COMPLETE_WAIT |
Buffer Busy Waits | 사용하려는 버퍼 캐시를 다른 세션에서 사용하고 있어서 대기한 횟수 | BUFFER_BUSY_WAITS |
설명
- Buffer Pool Statistics 단위 보고서는 각 버퍼 캐시의 영역별로 별도의 정보들을 제공함
- DBA_HIST_BUFFER_POOL_STAT 사용
- V$BUFFER_POOL_STATISTICS 참조
- 체크포인트
- 적중룰과 디스크 I/O에 대한 읽기와 쓰기의 비율을 확인하여 현재 설정된 각 버퍼 풀의 크기 적절성을 판단함.
- 버퍼캐시 크기가 부족할 경우 디스크 I/O 발생 빈도가 높아져 성능에 좋지 않고, 반대로 너무 클 경우 메모리 사용 효율이 떨어지므로 적절한 설정값 필요함.
SELECT INSTANCE_NUMBER,
BEGIN_TIME,
ROUND(100 *
(1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS))),
2) RATIO
FROM (SELECT INSTANCE_NUMBER,
BEGIN_TIME,
SUM(DECODE(STAT_NAME, 'db block gets', DELTA_VALUE)) DB_BLOCK_GETS,
SUM(DECODE(STAT_NAME, 'consistent gets', DELTA_VALUE)) CONSISTENT_GETS,
SUM(DECODE(STAT_NAME, 'physical reads', DELTA_VALUE)) PHYSICAL_READS
FROM (SELECT B.INSTANCE_NUMBER,
B.STAT_NAME,
TO_CHAR(A.BEGIN_INTERVAL_TIME, 'YYYY/MM/DD:HH24') BEGIN_TIME,
(LEAD(B.VALUE, 1)
OVER(PARTITION BY B.INSTANCE_NUMBER,
B.STAT_NAME ORDER BY B.SNAP_ID) - VALUE) DELTA_VALUE
FROM DBA_HIST_SNAPSHOT A,
DBA_HIST_SYSSTAT B
WHERE A.SNAP_ID = B.SNAP_ID
AND TO_CHAR(A.BEGIN_INTERVAL_TIME, 'YYYY/MM/DD:HH24:MI') BETWEEN '2009/09/07:00:00'
AND '2009/09/08:00:00'
AND B.STAT_NAME IN ('db block gets', 'consistent gets', 'physical reads')
AND VALUE IS NOT NULL)
WHERE DELTA_VALUE > 0
GROUP BY INSTANCE_NUMBER,
BEGIN_TIME)
;
- 버퍼 캐시 영역에 저장되어 있는 각 세그먼트의 메모리 크기 점유 체크
-- X$ 테이블 조회 권한 필요
SELECT DECODE(KPD.BP_ID, 1, 'KEEP',
2, 'RECYCLE',
3, 'DEFAULT',
4, '2K SUBCACHE',
5, '4K SUBCACHE',
6, '8K SUBCACHE',
7, '16K SUBCACHE',
8, '32K SUBCACHE',
'UNKNOWN') SUBCACHE,
BH.OBJECT_NAME,
SUM(BH.BLOCKS)*8192/1024/1024 MBYTES
FROM X$KCBWDS KDS,
X$KCBWBPD KPD,
(SELECT /*+ USE_HASH(X) */
SET_DS,
O.NAME OBJECT_NAME,
COUNT(*) BLOCKS
FROM OBJ$ O,
X$BH X
WHERE O.DATAOBJ# = X.OBJ
AND X.STATE != 0
AND O.OWNER# != 0
GROUP BY SET_DS,
O.NAME) BH
WHERE KDS.SET_ID >= KPD.BP_LO_SID
AND KDS.SET_ID <= KPD.BP_HI_SID
AND KPD.BP_SIZE != 0
AND KDS.ADDR = BH.SET_DS
--AND KPD.BP_ID = 1 -- KEEP
GROUP BY DECODE(KPD.BP_ID, 1, 'KEEP',
2, 'RECYCLE',
3, 'DEFAULT',
4, '2K SUBCACHE',
5, '4K SUBCACHE',
6, '8K SUBCACHE',
7, '16K SUBCACHE',
8, '32K SUBCACHE',
'UNKNOWN'),
BH.OBJECT_NAME
;
3-1) buffer busy wait와 read by other sessions
buffer busy wait
- buffer busy wait 대기 이벤트는 읽으려는 데이터 블록을 버퍼 캐시를 통해 사용하려 할 때, 버퍼 캐시를 사용하지 못해서 대기함을 의미함.
- 동일 블록에 저장된 데이터를 동시에 조회하고 변경하거나 조회와 변경이 동시에 이루어질 때 발생함.
read by other sessions
- 버퍼 캐시에 존재하지 않는 블록을 동시 세션들이 참조하려고 할 때, 해당 블록이 디스크로부터 버퍼 캐시로 복사되는 동안 복사를 수행하는 세션을 제외한 다른 세션들은 read by other sessions 이벤트 발생시킴.
- 이 때 버퍼 캐시로 복사하는 세션은 db file sequential read나 db file scattered read 이벤트를 대기함.
해결방안
- 핫 블록 경합 해결
- 자동 세그먼트 공간 관리(ASSM) 사용
buffer busy wait와 read by other sessions 대기 이벤트 발생 시 파라미터 값 의미
P1 | 대기 이벤트가 발생하는 파일 번호 |
P2 | 대기 이벤트가 발생하는 블록 번호 |
P3 | 대기 이벤트가 발생하는 블록 클래스 ID |
1 | data block | 2 | sort block |
3 | save undo block | 4 | segment header |
5 | save undo header | 6 | free list |
7 | extent map | 8 | 1st level bmb |
9 | 2nd level bmb | 10 | 3rd level bmb |
11 | bitmap block | 12 | bitmap index block |
13 | file header block | 14 | Unused |
15 | system undo header | 16 | system undo block |
17 이상의 홀수 15 + (2 * Undo Segment#) | undo header block | | |
18 이상의 짝수 16 + (2 * Undo Segment#) | undo block | | |
3-2) gc buffer busy
- RAC 환경에서 로컬 인스턴스의 세션이 참조하고자 하는 블록이 다른 인스턴스의 다른 세션에 의해서 사용 중일 때 대기하는 이벤트.
- RAC 환경에서 인스턴스간 블록 요청 시 발생하는 것을 제외하면 buffer busy wait와 read by other sessions과 동일한 원인과 해결방안도 동일함.
3-3) free buffer waits와 write complete waits
free buffer waits
- 버퍼 캐시에 사용 가능한 프리 버퍼가 없을 때 발생함.
- 프리 버퍼가 없을 때 DBWR 프로세서가 더티 버퍼들을 디스크에 내리고, 프리 버퍼를 확보할 때까지 대기 이벤트 발생함.
write complete waits
- 버퍼 캐시가 DBWR에 의해 디스크로 내려쓰여지고 있을 때 발생함.
해결방안
- 두 개의 이벤트가 발생하는 주 원인은 DBWR의 성능이 낮을 경우에 발생할 확률 높음.
- 해결방안은 아래와 같음.
두 개의 대기 이벤트 발생 시 파라미터 값 의미
P1 | 대기 이벤트가 발생하는 파일 번호 |
P2 | 대기 이벤트가 발생하는 블록 번호 |
4. Instance Recovery Stats
AWR DB 보고서 내용
Instance Recovery Stats DB/Inst: XSOFT/XSOFT2 Snaps: 90505-90564
-> B: Begin snapshot, E: End snapshot
Targt Estd Log File Log Ckpt Log Ckpt
MTTR MTTR Recovery Actual Target Size Timeout Interval
(s) (s) Estd IOs Redo Blks Redo Blks Redo Blks Redo Blks Redo Blks
- ----- ----- ---------- --------- --------- ---------- --------- ------------
B 0 42 4540 95324 100000 15092100 241217 100000
E 0 42 4754 67364 100000 15092100 2653129 100000
-------------------------------------------------------------
의미
항목 | 의미 | 관련컬럼 |
---|
Target MTTR(s) | 스냅샷 수행 당시 가장 적정한 인스턴스 복구 시간(단위:초) FAST_START_MTTR_TARGET 값이 설정되지 않은 경우 0으로 표시 | TARGET_MTTR |
Estd MTTR(s) | 스냅샷 수행 당시의 인스턴스 복구에 필요한 소요 시간(단위:초) MTTR은 Mean Time To Recovery 약어 | ESTIMATED_MTTR |
Recovery Estd IOs | 버퍼 캐시에 있는 더티 버퍼의 수 | RECOVERY_ESTIMATED_IOS |
Actual Redo Blks | 스냅샷 당시의 인스턴스 복구에 필요한 리두 블록 수 | ACTUAL_REDO_BLKS |
Target Redo Blks | 인스턴스 복구에 필요한 목표 리두 블록의 수. 이 컬럼에 명시된 수 만큼 리두 블록이 생성되면 체크포인트가 발생하여서 더티 버퍼를 디스크에 내려씀. Log File Size Redo Blks, Log Chkpt Timeout Redo Blks, Log Ckpt Interval Redo Blks 값 중 최소 값 | TARGET_REDO_BLKS |
Log File Size Redo Blks | 체크포인트가 완료되기 전에 로그 스위치가 발생하지 않는 것을 보장하는 최대 리두 블록의 수 | LOG_FILE_SIZE_REDO_BLKS |
log Chkpt Timeout Redo Blks | LOG_CHECHPOINT_TIMEOUT 설정 값에 의해 체크포인트 발생 시 인스턴스 복구에 필요한 리두 블록의 수 | LOG_CHKPT_TIMEOUT_REDO_BLKS |
Log Ckpt Interval Redo Blks | LOG_CHECKPOINT_INTERVAL 설정 값에 의해 체크포인트 발생 시 인스턴스 복구에 필요한 리두 블록의 수 | LOG_CHKPT_INTERVAL_REDO_BLKS |
설명
- Instance Recovery Stats 보고서는 인스턴스 복구 관련 정보를 보여줌.
- DBA_HIST_INSTANCE_RECOVERY 사용
- V$INSTANCE_RECOVERY 참조
- Target MTTR(s) 수치는 보통 FAST_START_MTTR_TARGET 설정 값과 일치함.
- Target MTTR(s) 값이 FAST_START_MTTR_TARGET 값보다 작다면, 체크포인트 발생 주기 설정이 너무 높게 잡혀 있는 것이므로, FAST_START_MTTR_TARGET 값을 Target MTTR(s) 보다 낮춰 주어야 함.
- Target MTTR(s) 값이 FAST_START_MTTR_TARGET 값보다 크다면, 성능에 영향을 미치지 않는 수준보다 체크포인트가 적게 발생하는 것이므로 빠른 인스턴스 복구를 위해 Target MTTR(s) 수치 이하로 늘려야 함.
- FAST_START_MTTR_TARGET 설정 값 변경에 따른 디스크 I/O 변화 체크
SELECT -- FAST_START_MTTR_TARGET 설정 수치
MTTR_TARGET_FOR_ESTIMATE TARGET,
-- FAST_START_MTTR_TARGET 설정 시 증가되거나 감소되는 버퍼 캐시 I/O 양
ESTD_CACHE_WRITE_FACTOR CACHE_FACT,
-- FAST_START_MTTR_TARGET 설정 시 증가되거나 감소되는 전체 I/O 양
-- APPEND나 PAEALLEL 힌트의 사용 등으로 발생하는 DIRECT I/O 포함
ESTD_TOTAL_WRITE_FACTOR TOTAL_FACT
FROM DBA_HIST_MTTR_TARGET_ADVICE
WHERE DBID = (SELECT DBID
FROM V$DATABASE)
AND INSTANCE_NUMBER = :INST_ID -- 인스턴스 번호
AND SNAP_ID = :SNAP_ID -- 스냅샷 ID
ORDER BY 1
- MTTR 권고자 사용 위한 설정사항
- STATISTICS_LEVEL 파라미터를 TYPICAL이나 ALL로 설정
- FAST_START_MTTR_TARGET 파라미터를 0 이상으로 설정
5. Buffer Pool Advisory
AWR DB 보고서 내용
-- 1. AWR에서는 데이터 없음(책 참조)
No data exists for this section of the report.
-------------------------------------------------------------
;
-- 2. 추출쿼리
SELECT SUBSTR(NAME, 1, 1),
SIZE_FOR_ESTIMATE,
SIZE_FACTOR,
BUFFERS_FOR_ESTIMATE,
PHYSICAL_READS / BASE_PHYSICAL_READS,
PHYSICAL_READS * (ACTUAL_PHYSICAL_READS / BASE_PHYSICAL_READS)
FROM DBA_HIST_DB_CACHE_ADVICE
WHERE INSTANCE_NUMBER = 8
AND SNAP_ID >= 92167
AND SNAP_ID <= 92215
;
의미
항목 | 의미 | 관련컬럼 |
---|
P | 버퍼 캐시 종류 | SUBSTR(NAME, 1, 1), |
Size for Est(M) | 버퍼 캐시 예상 크기(단위 : MB) | SIZE_FOR_ESTIMATE, |
Size Factor | 현재 설정된 버퍼 캐시 대비 예상 버퍼 캐시 크기 비율 | SIZE_FACTOR, |
Buffers for Estimate | 버퍼 캐시 예사 블록 수 | BUFFERS_FOR_ESTIMATE, |
Est Phys Read Factor | 현재 발생하는 디스크 I/O 대비 예상 디스크 I/O 발생 비율 | PHYSICAL_READS / BASE_PHYSICAL_READS, |
Estimated Physical Reads | 디스크 I/O 예상 발생 횟수 | PHYSICAL_READS * (ACTUAL_PHYSICAL_READS / BASE_PHYSICAL_READS) |
설명
- Buffer Pool Advisory 보고서는 버퍼 캐시 크기 변경에 따른 영향도를 파악할 수 있으며, 버퍼 캐시 크기 설정이 도움을 줌.
- DBA_HIST_DB_CACHE_ADVICE 사용
- V$DB_CACHE_ADVICE 참조
- 체크포인트
- Size Factor 값이 1.0인 Size for Est(M) 수치 4,960M이 현재 버퍼 캐시와 가장 유사한 크기.
- 만약, 버퍼 캐시 크기를 현재의 10% 수준인 496MB로 설정하면 디스크 I/O는 27,900,510회로 현재 수준의 12.8배 증가함.
- 버퍼 캐시를 줄인다면, 예상되는 디스크 I/O가 30% 증가한 992M에서 0% 증가한 가장 큰 크기인 2,976M 까지 줄이는 것이 대안.
- 버커 캐시를 늘린다면, 예상되는 디스크 I/O가 30% 감소한 9,920M(2배)가 가장 좋으며, 그 이전 크기는 예상 디스크 I/O에 변동이 없으므로 불필요함.
- 동적 뷰에 저장된 버퍼 캐시 권고자 통계치 체크
COL size_for_estimate FORMAT 999,999,999 heading 'Size for|Est (M)'
COL buffers_for_estimate FORMAT 999,999,999 heading 'Buffers for|Estimate'
COL estd_physical_read_factor FORMAT 999.90 heading ' Est|Phys|Read|Factor'
COL estd_physical_reads FORMAT 999,999,999 heading 'Estimated|Physical Reads'
SELECT SUBSTR(NAME, 1, 1) P,
SIZE_FOR_ESTIMATE,
BUFFERS_FOR_ESTIMATE,
ESTD_PHYSICAL_READ_FACTOR,
ESTD_PHYSICAL_READS
FROM V$DB_CACHE_ADVICE
WHERE ADVICE_STATUS = 'ON'
ORDER BY 1,
2
/
- DB_CACHE_ADVICE - 버퍼 캐시 권고자 기능을 사용하지 여부를 결정하며, ALTER SYSTEM 명령으로 수정 가능.
- ON : 버퍼 캐시 권고자가 관련 통계를 수집
- READY : 버퍼 캐시 권고자가 관련 통계를 수집하지 않지만 메모리에 상주
- OFF : 버퍼 캐시 권고자가 관련 통계를 수집하지 않으며, 메모리에도 상주하지 않음.
이 상태에서 ALTER SYSTEM 명령을 사용하여 ON으로 설정 값을 변경하는 경우 에러가 발생할 수 있음.
6. PGA Aggr Summary
AWR DB 보고서 내용
PGA Cache Hit % W/A MB Processed Extra W/A MB Read/Written
--------------- ------------------ --------------------------
98.8 1,129,369 14,264
-------------------------------------------------------------
의미
항목 | 의미 | 관련컬럼 |
---|
PGA Cache Hit% | 전체 정렬 작업 중 메모리에서 처리한 정렬 작업의 비율 | 100 * (SUM(VALUE) WHERE NAME = 'bytes processed' / SUM(VALUE) WHERE NAME = IN('extra bytes read / written', 'bytes processed')) |
W/A MB Processed | 메모리 내에서 수행된 정렬 작업의 크기(단위:MB) | (SUM(VALUE) WHERE NAME = 'bytes processed') / 1024 / 1024 |
Extra W/A MBRead/Wri | 임시 테이블스페이스에서 수행된 정렬 작업의 크기(단위:MB) | (SUM(VALUE) WHERE NAME = 'extra bytes read / written') / 1024 / 1024 |
설명
- PGA Aggr Summary 보고서는 스냅 구간 중 PGA 사용 효율을 보여줌
- DBA_HIST_PGASTAT 사용
- V$PGASTAT 참조
- 체크포인트
- 'PGA Cache Hit %' 값은 디스크 I/O가 아닌 메모리에서 Hit된 블록을 읽은 비율이므로 100%에 근접할수록 좋음.
7. PGA Aggr Target Stats
AWR DB 보고서 내용
PGA Aggr Auto PGA PGA Mem W/A PGA W/A W/A W/A Global Mem
Target(M) Target(M) Alloc(M) Used(M) Mem Mem Mem Bound(K)
- ---------- ---------- ---------- ---------- ------ ------ ------ ----------
B 10,240 8,022 2,112.1 46.4 2.2 100.0 .0 1,048,570
E 10,240 6,978 5,587.7 1,649.7 29.5 100.0 .0 1,048,570
-------------------------------------------------------------
의미
항목 | 의미 | 관련컬럼 |
---|
PGA AggrTarget(M) | PGA_AGGREGATE_TARGET 파라미터 설정 값(단위 : MB) | (SUM(VALUE) WHERE NAME = 'aggregate PGA target Parameter') / 1024 / 1024 |
Auto PGA Target(M) | 오라클이 판단하는 실제 필요한 SQL 작업 공간의 크기. 스냅샷 수행 당시의 SQL 작업 영역의 사용 부하에 따라 지속적으로 수치가 조정(단위:MB) | (SUM(VALUE) WHERE NAME = 'aggregate PGA auto Parameter') / 1024 / 1024 |
PGA Mem Alloc(M) | PGA 영역으로 할당된 실제 메모리의 크기(단위:MB) | (SUM(VALUE) WHERE NAME = 'total PGA allocated') / 1024 / 1024 |
W/A PGA Used(M) | SQL 작업 영역으로 사용된 크기(단위:MB) | (SUM(VALUE) WHERE NAME IN ('total PGA used for auto workareas', 'total PGA used for manual workareas')) / 1024 / 1024 |
%PGA W/A Mem | PGA 영역으로 사용된 실제 메모리 중 SQL 작업 영역으로 사용된 비율 | 100 * (SUM(VALUE) WHERE NAME IN ('total PGA used for auto workareas', 'total PGA used for manual workareas') / SUM(VALUE) WHERE NAME = 'total PGA allocated') |
%Auto W/A Mem | W/A PGA Used(M) 크기 중 자동 PGA로 지정되어 사용된 비율 | 100 * (SUM(VALUE) WHERE NAME = 'total PGA used for auto workareas' / SUM(VALUE) WHERE NAME IN ('total PGA used for auto workareas', 'total PGA used for manual workareas')) |
%Man W/A Mem | W/A PGA Used(M) 크기 중 수동 PGA로 지정되어 사용된 비율 | 100 * (SUM(VALUE) WHERE NAME = 'total PGA used for manual workareas' / SUM(VALUE) WHERE NAME IN ('total PGA used for auto workareas', 'total PGA used for manual workareas')) |
Global Mem Bound(K) | SQL 작업 영역으로 사용할 수 있는 최대 크기 | (SUM(VALUE) WHERE NAME = 'global memory bound') / 1024 |
설명
- PGA Aggr Target Stats 보고서는 스냅 구간 중 PGA 사용 효율을 보여줌
- 체크포인트
- 'Auto PGA Target(M)' 컬럼의 값은 오라클이 판단하는 PGA의 필요한 SQL 작업 공간 크기이므로 PGA_AGGREGATE_TARGET 초기화 파라미터 설정 값인 PGA Aggr Target(M) 컬럼의 값과 다를 수 있음.
- 이 두 값의 차이는 PGA의 크기를 결정하는데 판단의 기준이 되며, 이 값이 파라미터 설정 값 보다 큰 경우 PGA 크기 확장을 고려해야 하고, 작을 경우 PGA 크기 축소를 고려해야 함.
8. PGA Aggr Target Histogram
AWR DB 보고서 내용
Low High
Optimal Optimal Total Execs Optimal Execs 1-Pass Execs M-Pass Execs
------- ------- -------------- -------------- ------------ ------------
2K 4K 41,286,726 41,286,726 0 0
64K 128K 203,589 203,589 0 0
128K 256K 7,484 7,484 0 0
256K 512K 83,353 83,353 0 0
512K 1024K 308,907 308,907 0 0
1M 2M 394,502 394,502 0 0
2M 4M 3,526 3,256 270 0
4M 8M 3,949 3,881 68 0
8M 16M 1,355 1,330 25 0
16M 32M 729 683 46 0
32M 64M 2,640 2,520 120 0
64M 128M 344 344 0 0
128M 256M 166 158 8 0
256M 512M 13 11 2 0
512M 1024M 4 0 4 0
-------------------------------------------------------------
의미
항목 | 의미 | 관련컬럼 |
---|
Low Optimal | SQL 작업 영역 버킷의 최소 값 | LOW_OPTIMAL_SIZE |
High Optimal | SQL 작업 영역 버킷의 최대 값 | HIGH_OPTIMAL_SIZE |
Total Execs | 각 버킷의 SQL 작업 영역을 사용한 횟수 | TOTAL_EXECUTIONS |
Optimal Execs | 각 버킷의 SQL 작업 영역을 최적 크기 처리로 사용한 횟수 | OPTIMAL_EXECUTIONS |
1-Pass Execs | 각 버킷의 SQL 작업 영역을 단일 패스 처리로 사용한 횟수 | ONEPASS_EXECUTIONS |
M-Pass Execs | 각 버킷의 SQL 작업 영역을 다중 패스 처리로 사용한 횟수 | MULTIPASSES_EXECUTIONS |
설명
- PGA Aggr Target Histogram 보고서는 스냅 구간 중 SQL 작업 영역의 사용 현황을 보여줌
- DBA_HIST_SQL_WORKAREA_HSTGRM 사용
- V$SQL_WORKAREA_HISTOGRAM 참조
- 체크포인트
- 2K ~ 4K 구간은 전체 수행 횟수 중 100%로 OPTIMAL_EXECUTIONS 영역에서 처리되었으며, 2M ~ 4M 구간은 전체 수행 횟수 중 270회가 ONEPASS_EXECUTIONS 영역에서 처리된 것을 알 수 있음
- 이처럼, 대부분의 작업 영역이 OPTIMAL_EXECUTIONS에서 처리되며 4K 이하이므로 OLTP 시스템임을 짐작할 수 있음.
9. PGA Memory Advisory
AWR DB 보고서 내용
Estd Extra Estd PGA Estd PGA
PGA Target Size W/A MB W/A MB Read/ Cache Overalloc
Est (MB) Factr Processed Written to Disk Hit % Count
---------- ------- ---------------- ---------------- -------- ----------
1,280 0.1 17,602,339.5 388,001.2 98.0 5,588
2,560 0.3 17,602,339.5 155,786.3 99.0 668
5,120 0.5 17,602,339.5 60,040.9 100.0 0
7,680 0.8 17,602,339.5 60,040.9 100.0 0
10,240 1.0 17,602,339.5 24,691.3 100.0 0
12,288 1.2 17,602,339.5 19,821.0 100.0 0
14,336 1.4 17,602,339.5 19,821.0 100.0 0
16,384 1.6 17,602,339.5 19,821.0 100.0 0
18,432 1.8 17,602,339.5 19,821.0 100.0 0
20,480 2.0 17,602,339.5 19,821.0 100.0 0
30,720 3.0 17,602,339.5 19,821.0 100.0 0
40,960 4.0 17,602,339.5 19,821.0 100.0 0
61,440 6.0 17,602,339.5 19,821.0 100.0 0
81,920 8.0 17,602,339.5 19,821.0 100.0 0
-------------------------------------------------------------
의미
항목 | 의미 | 관련컬럼 |
---|
PGA Target Est (MB) | PGA 예상 크기(단위:MB) | PGA_WARGET_FOR_ESTIMATE / 1024 / 1024 |
Size Factr | 현재 설정된 PGA 크기 대비 예상 PGA 크기 비율 | PGA_TARGET_FACTOR |
W/A MB Processed | PGA 사용 효율 예측 시 고려된 전체 SQL 작업 공간 크기 | BYTES_PROCESSED / 1024 / 1024 |
Estd Extra W/A MB Read/Written to Disk | PGA 크기 변경 시 예측되는 디스크 I/O 발생 크기(단위:MB) | ESTD_EXTRA_BYTES_RW / 1024 / 1024 |
Estd PGA Cache Hit % | PGA 크기 변경 시 예측되는 PGA 사용 효율 | ESTD_PGA_CACHE_HIT_PERCENTAGE |
Estd PGA Overalloc Count | PGA 크기 변경 시 예상되는 추가 메모리 할당 수 | ESTD_OVERALLOC_COUNT |
설명
- PGA Memory Advisory 보고서는 PGA 크기 변경 시 예상되는 사용 효율을 나타냄
- DBA_HIST_PGA_TARGET_ADVICE 사용
- V$PGA_TARGET_ADVICE 참조
- 체크포인트
- 'Estd PGA Overalloc Count' 컬럼은 예상 PGA 크기 적용 시 발생하는 추가 메모리 할당 횟수이며, 이 값이 0 이상이 되지 않도록 해야함.
- 'PGA Target Est' 값을 20% 늘릴 경우 'Estd Extra W/A MB Read/Written to Disk' 값이 줄어드므로, DISK I/O 발생량을 줄어들이는 효과는 있으니 효과는 미비함.
- 하지만 70%을 줄일 경우 급격하게 DISK I/O가 증가하므로 줄일 경우 최대 50%까지만 줄여야 함.
10. Shared Pool Advisory
AWR DB 보고서 내용
-- 1. AWR에서는 데이터 없음(책 참조)
No data exists for this section of the report.
-------------------------------------------------------------
;
-- 2. 추출쿼리
SELECT SHARED_POOL_SIZE_FOR_ESTIMATE,
SHARED_POOL_SIZE_FACT,
ESTD_LC_SIZE,
ESTD_LC_MEMORY_OBJECTS,
ESTD_LC_TIME_SAVE,
ESTD_LC_TIME_SAVED_FACTOR,
ESTD_LC_LOAD_TIME,
ESTD_LC_LOAD_TIME_FACTOR,
ESTD_LC_MEMORY_OBJECT_HITS
FROM DBA_HIST_SHARED_POOL_ADVICE
WHERE INSTANCE_NUMBER = 8
AND SNAP_ID >= 92167
AND SNAP_ID <= 92215
;
의미
항목 | 의미 | 관련컬럼 |
---|
Shared Pool Size(M) | 공유 풀 예상 크기(단위:MB) | SHARED_POOL_SIZE_FOR_ESTIMATE |
SP Size Factr | 현재 설정된 공유 풀 대비 예상 공유 풀 크기 비율 | SHARED_POOL_SIZE_FACT |
Est LC Size(M) | 라이브러리 캐시 예상 크기(단위:MB) | ESTD_LC_SIZE |
Est LC Mem Obj | 라이브러리 캐시 오브젝트 예상 개수 | ESTD_LC_MEMORY_OBJECTS |
Est LC Time Saved(s) | 예상 파스 단축 시간(단위:초) | ESTD_LC_TIME_SAVE |
Est LC Time Saved Factr | 현재 파스 시간 대비 예상 파스 단축 시간 비율 | ESTD_LC_TIME_SAVED_FACTOR |
Est LC Load Time(s) | 예상 공유 풀 적재 시간(단위:초) | ESTD_LC_LOAD_TIME |
Est LC Load Time Factr | 현재 공유 풀 적재 시간 대비 예상 공유 풀 적재 시간 비율 | ESTD_LC_LOAD_TIME_FACTOR |
Est LC Mem Obj hits | 예상 라이브러리 캐시 오브젝트 적중 횟수 | ESTD_LC_MEMORY_OBJECT_HITS |
설명
- Shared Pool Advisory 보고서는 공유 풀 크기에 따른 영향도를 보여줌
- DBA_HIST_SHARED_POOL_ADVICE 사용
- V$SHARED_POOL_ADVICE 참조
- 체크포인트
- 'Shared Pool Size(M)' 값이 608MB보다 증가할 경우 'Est LC Time Saved Factr' 비율은 0.9%에서 1.0으로 증가하여 효과는 있지만, 그 이상은 효과 없음.
- 또한 288MB로 줄일 경우 30% 가량 효율이 낮아지므로, 하드파싱 확률이 높아짐.
- 이를 통해 확인 가능한 내용은, 공유 풀 크기가 크다고 해서 반드시 효율이 높아지는 것은 아니며, 이 항목을 체크하려면 Literal SQL을 최대한 바인드 변수로 변경 후 체크해야 함.
11. SGA Target Advisory
AWR DB 보고서 내용
-- 1. AWR에서는 데이터 없음(책 참조)
No data exists for this section of the report.
-------------------------------------------------------------
;
-- 2. 추출쿼리
SELECT SGA_SIZE,
SGA_SIZE_FACTOR,
ESTD_DB_TIME,
ESTD_PHYSICAL_READS
FROM DBA_HIST_SGA_TARGET_ADVICE
WHERE INSTANCE_NUMBER = 8
AND SNAP_ID >= 92167
AND SNAP_ID <= 92215
;
의미
항목 | 의미 | 관련컬럼 |
---|
SGA Target Size(M) | SGA예상 크기(단위:MB) | SGA_SIZE |
SGA Size Factor | 현재 설정된 SGA 대비 예상 SGA 크기 비율 | SGA_SIZE_FACTOR |
Est DB Time(s) | 예상 DB Time(단위:초) | ESTD_DB_TIME |
Est Physical Reads | 예상 디스크 I/O 횟수 | ESTD_PHYSICAL_READS |
설명
- SGA Target Advisory 보고서는 SGA 크기에 따른 영향도를 보여줌
- DBA_HIST_SGA_TARGET_ADVICE 사용
- V$SGA_TARGET_ADVICE 참조
- 체크포인트
- SGA_TARGET 설정 값은 160MB이며, 이 크기를 200MB 이상으로 증가시키면 'Est DB Time(s)' 값이 거의 변하지 않으므로 30%까지만 증가시키는 것이 가장 효율적임.
12. Streams Pool Advisory
AWR DB 보고서 내용
Size for Size Est Spill Est Spill Est Unspill Est Unspill
Est (MB) Factor Count Time (s) Count Time (s)
---------- --------- ----------- ----------- ----------- -----------
96 0.2 0 0 0 0
160 0.3 0 0 0 0
224 0.4 0 0 0 0
288 0.5 0 0 0 0
352 0.6 0 0 0 0
416 0.7 0 0 0 0
480 0.8 0 0 0 0
544 0.9 0 0 0 0
608 1.0 0 0 0 0
672 1.1 0 0 0 0
736 1.2 0 0 0 0
800 1.3 0 0 0 0
864 1.4 0 0 0 0
928 1.5 0 0 0 0
992 1.6 0 0 0 0
1,056 1.7 0 0 0 0
1,120 1.8 0 0 0 0
1,184 1.9 0 0 0 0
1,248 2.1 0 0 0 0
1,312 2.2 0 0 0 0
-------------------------------------------------------------
설명
- Streams Pool Advisory 보고서는 스트림즈 풀의 크기에 따른 영향도를 보여줌.
- 스트림즈는 오라클에서 제공하는 데이터 복제 기능 중 하나이며, 9i부터 사용 가능.
- 스트림즈는 별도의 스트림즈 관련 프로세스가 오라클의 로그 마이너 기능을 사용하여 원본 DB의 리두 로그 데이터 중 변경된 데이터만 수집하여 복제 대상 DB로 전송해서 적용하기 때문에 데이터 복제에 따른 부하를 최소화할 수 있음.
13. Java Pool Advisory
AWR DB 보고서 내용
-- 1. AWR에서는 데이터 없음(책 참조)
No data exists for this section of the report.
-------------------------------------------------------------
;
-- 2. 추출쿼리
SELECT JAVA_POOL_SIZE_FOR_ESTIMATE,
JAVA_POOL_SIZE_FACTOR,
ESTD_LC_SIZE,
ESTD_LC_MEMORY_OBJECTS,
ESTD_LC_TIME_SAVED,
ESTD_LC_TIME_SAVED_FACTOR,
ESTD_LC_LOAD_TIME,
ESTD_LC_LOAD_TIME_FACTOR,
ESTD_LC_MEMORY_OBJECT_HITS
FROM DBA_HIST_JAVA_POOL_ADVICE
WHERE INSTANCE_NUMBER = 8
AND SNAP_ID >= 92167
AND SNAP_ID <= 92215
;
의미
항목 | 의미 | 관련컬럼 |
---|
Java Pool Size(M) | 추정되는 자바 풀 크기(단위:MB) | JAVA_POOL_SIZE_FOR_ESTIMATE |
JP Size Factr | 현재 설정된 자바 풀 크기 대비 에상 자바 풀 크기 비율 | JAVA_POOL_SIZE_FACTOR |
Est LC Size(M) | 자바 소스 관련 라이브러리 캐시에서 사용되는 예상 크기(단위:MB) | ESTD_LC_SIZE |
Est LC Mem Obj | 자바 풀 오브젝트 예상 개수 | ESTD_LC_MEMORY_OBJECTS |
Est LC Time Saved(s) | 예상 파스 단축 시간(단위:초) | ESTD_LC_TIME_SAVED |
Est LC Time Sved Factr | 현재 파스 시간 대비 예상 파스 단축 시간 비율 | ESTD_LC_TIME_SAVED_FACTOR |
Est LC Load Time (s) | 예상 자바 풀 적재 시간(단위:초) | ESTD_LC_LOAD_TIME |
Est LC Load Time Factr | 현재 자바 풀 적재 시간 대비 예상 자바 풀 적재 시간 비율 | ESTD_LC_LOAD_TIME_FACTOR |
Est LC Mem Obj Hits | 예상 자바 풀 오브젝트 적중 횟수 | ESTD_LC_MEMORY_OBJECT_HITS |
설명
- Java Pool Advisory 보고서는 자바 풀 사용 통계를 보여줌.
- DBA_HIST_JAVA_POOL_ADVICE 사용
- V$JAVA_POOL_ADVICE 참조
- 체크포인트
- 'Java Pool Size(M)' 값이 일정 값 이상 증가할 경우 'Est LC Time Sved Factr' 값이 더 이상 증가하지 않으며, 효과가 없음을 의미함.
- 그러므로, 이 보고서에서 사이즈는 48MB가 아닌 24MB로 유지하는 것이 가장 효율적임을 알 수 있음.
문서에 대하여