1. Tip 파일 설정 parameter
TIBERO_PERFORMANCE_REPOSITORY | 'Y'로 설정하면 스냅샷 저장 기능 활성화한다. (기본값: Y) |
TPR_SNAPSHOT_SAMPLING_INTERVAL | 스냅샷을 추출하는 주기를 설정한다. (기본값: 60, 단위: 분) |
TPR_SNAPSHOT_RETENTION | 스냅샷을 최대 저장할 기간을 설정한다. (기본값: 7, 단위: 일) |
TPR_SNAPSHOT_TOP_SQL_CNT | 리포트에 출력할 상위 SQL 개수를 설정한다. (기본값: 5, 단위: 개) |
TPR_SEGMENT_STATISTICS | 'Y'로 설정하면 TPR에서 Segment별 Stat 수집 기능을 활성화한다. (기본값: N) |
TPR_SNAPSHOT_TOP_SEGMENT_CNT | 리포트에 출력할 상위 Segment 개수를 설정한다. (기본값: 5, 단위: 개) |
TPR_METRIC | 'Y'로 설정하면 TPR METRIC 기능을 활성화한다. (기본값: N) |
TPR_AGGREGATION | 'Y'로 설정하면 TPR AGGREGATION 기능을 활성화한다. (기본값: N) |
ACTIVE_SESSION_HISTORY | 'Y'로 설정하면 세션 상태 저장 기능 활성화한다. (기본값: N) |
_ACTIVE_SESSION_HISTORY_SAMPLING_INTERVAL | 세션 상태 저장 주기를 설정한다. (기본값: 1초, 단위: 초) |
2. TPR 관련 저장 View
_TPR_SNAPSHOT | 저장된 스냅샷의 ID와 시간에 관한 정보를 관리하는 테이블이다. |
_TPR_BASELINE | 등록된 Baseline의 정보를 관리하는 테이블이다. |
_TPR_ACTIVE_SESSION_HISTORY | 저장된 ASH Sample 정보를 관리하는 테이블이다. |
_TPR_METRIC | 저장된 TPR Metric 정보를 관리하는 테이블이다. |
_TPR_JCNTSTAT | _VT_JCNTSTAT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SQLSTATS | V$SQLSTATS 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SQL_PLAN | V$SQL_PLAN 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SQL_PLAN_STAT | V$SQL_PLAN_STATISTICS 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_LATCH | V$LATCH 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SYSTEM_EVENT | V$SYSTEM_EVENT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_WAITSTAT | V$WAITSTAT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SGASTAT | V$SGASTAT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_PGASTAT | V$PGASTAT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_LIBRARYCACHE | V$LIBRARYCACHE 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SQLTEXT | V$SQLTEXT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_FILESTAT | V$FILESTAT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SEGMENTSTAT | V$SEGMENT_STATISTICS 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_TEMPSEG_OP_USAGE | V$TEMPSEG_OP_USAGE 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_PROCESS | V$PROCESS 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SESSION | V$SESSION 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_WAITER_SESSION | V$WAITER_SESSION 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_UNDOSTAT | V$UNDOSTAT 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_OSSTAT2 | V$OSSTAT2 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_SQLWA_HIST | V$SQLWA_HIST 뷰의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_MODIFIED_PARAM | _VT_PARAMETER 테이블의 스냅샷 정보를 관리하는 테이블이다. |
_TPR_MISC | 세션 수와 같은 기타 정보의 스냅샷 정보를 관리하는 테이블이다. |
3. Snapshot 조회
select snap_id,to_char(BEGIN_INTERVAL_TIME, 'yyyy/mm/dd HH:MI:SS') begin1, to_char(END_INTERVAL_TIME,'yyyy/mm/dd HH:MI:SS') end1 from _TPR_SNAPSHOT;
select snap_id,to_char(BEGIN_INTERVAL_TIME, 'yyyy/mm/dd HH:MI:SS') , to_char(END_INTERVAL_TIME,'yyyy/mm/dd HH:MI:SS')
from V$TPR_SNAPSHOT;
|
4. Snapshot 추출
스냅샷
|
exec DBMS_TPR.CREATE_SNAPSHOT_ALL();
exec DBMS_TPR.CREATE_SNAPSHOT();
확인
select to_char(BEGIN_INTERVAL_TIME, 'yyyy/mm/dd HH:MI') , to_char(END_INTERVAL_TIME,'yyyy/mm/dd HH:MI')
from _TPR_SNAPSHOT;
|
특정시간 추출
|
아래의 예제는 1월 1일 00:00부터 2월 1일 23:59:59 사이에 월,수,금 오전 9시부터 오후 6시까지에 해당하는 스냅샷에 대한 리포트 생성을 하는 예제이다.
exec dbms_tpr.report_text('2016-04-08 15:30:00', '2016-04-08 16:40:00');
exec DBMS_TPR.REPORT_TEXT_SPECIFIC_TIMES('2015/01/01 00:00:00',
'2015/02/01 23:59:59',
'09:00', '18:00', 'MON,WED,FRI');
#html로 추출 exec DBMS_TPR.REPORT_HTML_ID(31811, 31843); |
마지막시간
|
마지막으로 찍힌 Snapshot 으로 TPR을 추출한다.
exec DBMS_TPR.REPORT_TEXT_LAST();
|
조회해서 SNAPSHOT ID로 TPR 분석
|
exec DBMS_TPR.REPORT_TEXT_ID(1, 5);
|
# TPR 분석
8. SQL Statistics
-. Case 별 Top sql 분석
8.1 SQL Ordered by Elapsed Time
-. Elapsed Time기준으로 DB Time의 40%가 넘는 쿼리지만 1회당 수행시간이 짧아서 문제 없어 보인다.
-. 하지만 해당 시점에 CPU가 높다면 전반적으로 모든 쿼리의 Elapsed Time이 급격하게 증가한다.
-. 즉 DB Time(%)로 판단하면 안된다.
8.2 SQL Ordered by Elapsed Time per Execution
-. 자주 실행되는 Execution을 통해 확인하고, DB전체의 Elapsed Time은 작더라도 Time/Exec(s)이 과도하게 큰지 확인한다.
8.3 SQL Ordered by Executions
-. Execution Count가 높은 순으로 출력된것이다.
-. 호출이 많은 SQL에 문제가 없는지 확인한다.
8.4 SQL Ordered by Gets
-. 과도하게 Buffer I/O를 발생시키는 쿼리를 확인한다.
-. 이 경우 통계정보가 잘못됫을 수도 있다. 잘못된 통계정보 삭제 후 현상을 해소한 경우도 있다.
8.5 SQL Order by Read
-. Disk Read Time이 과도하게 높게 발생시키는 쿼리 확인
8.6 SQL Ordered by Extra I/O
-. Temp Segment I/O Time(s)을 과도하게 쓰고 자주발생하는 쿼리인지 확인
8.7 SQL Ordered by CPU
-. CPU를 많이 잡아먹는 쿼리 확인
-. 순간적인 성능저하
-. 가끔 발생하는 SQL문 성능 저하
-. 비교 대상이 없는 리포트
-. 리포트 구간이 정확하지 않는 경우
위의 경우에는 SQL문 이외에도 다른 parameter의 영향이나 OS 적인 영향도 확인 해야하는데 어려움이 있다.
'Database > Tibero' 카테고리의 다른 글
[TIBERO] 인덱스 추가 시, Plan변화 TEST (0) | 2023.05.04 |
---|---|
[TIBERO] 특정 User로 접속시 Trigger로 DDL,DML 제한걸기 (0) | 2022.12.15 |
[TIBERO] Constraint , index 제거 (0) | 2022.12.08 |
[TEST] 백업 / 복구 스크립트 (0) | 2022.11.23 |
[TIBERO] datafile 경로 변경(rename 작업) (0) | 2022.11.10 |