—
—
Tibero Guide
—
TPR 생성 방법 가이드
2023.08
1. 개요
본 문서는 TPR(Tibero Performance Repository) 생성을 위한 가이드 내용 입니다.
더 자세한 정보는 Tibero tbPSM 참조 안내서 제41장 DBMS_TPR을 참고하시기 바랍니다.
2. 설명
Tibero TPR은 통계 정보를 주기적으로 자동 수집하고 수집한 통계 자료에 대한 자체적인 분석 리포트 출력 기능을 제공하여 성능 문제 진단 및 시스템 부하 분석에 도움을 주는 기능이다.
2.1 주요 파라미터
파라미터 | 설명 |
TIBERO_PERFORMANCE_REPOSITORY | 'Y'로 설정하면 스냅샷 저장 기능 활성화한다. (기본값: Y) |
TPR_SNAPSHOT_SAMPLING_INTERVAL | 스냅샷을 추출하는 주기를 설정한다. (기본값: 60, 단위: 분) |
TPR_SNAPSHOT_RETENTION | 스냅샷을 최대 저장할 기간을 설정한다. (기본값: 7, 단위: 일) |
TPR_SNAPSHOT_TOP_SQL_CNT | 리포트에 출력할 상위 SQL 개수를 설정한다. (기본값: 5, 단위: 개) |
Interval 주기에 해당 시점에 스냅샷을 찍기 때문에 Interval간, 내용은 반영이 되지 않음.
Interval 주기를 너무 짧게 할 경우, 부하가 심해질수 있음.
2.2 _TPR_SNAPSHOT테이블
desc _TPR_SNAPSHOT
저장된 스냅샷의 ID와 시간에 관한 정보를 관리하는 '_TPR_SNAPSHOT' 테이블 정보이다.
다음은 수동으로 현재 시점의 스냅샷을 저장하는 예이다.
exec dbms_tpr.create_snapshot();
2.3 TPR 레포트 생성 방법
_TPR_SNAPSHOT 테이블에 수집된 스냅샷 정보를 이용하여 TPR 레포트를 생성한다.
생성된 TPR 레포트는 $TB_HOME/instance/$TB_SID/ 디렉토리에 저장된다.
2.3.1 REPORT_TEXT
특정 구간의 성능 분석 리포트(text)를 생성한다.
파라미터 | 설명 |
begin_time | 성능 분석 리포트 대상 구간 중 시작 시간이다. |
end_time | 성능 분석 리포트 대상 구간 중 종료 시간이다. |
instance_no | 성능 분석 리포트 대상 인스턴스 번호이다. (기본값: ALL) |
file_name | 만들어질 성능 분석 리포트 파일명이다. (기본값: tpr_report.{db_name}.{current_time}.txt) |
Ex)
alter session set NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS";
select sysdate from dual ;
exec dbms_tpr.report_text('2023/08/16 16:00:00', '2023/08/16 17:00:00');
수집된 스냅샷이 없는 구간을 선택할시 오류가 발생한다.
select min(begin_interval_time), max(begin_interval_time), min(end_interval_time), max(end_interval_time)
from _tpr_snapshot;
exec dbms_tpr.report_text('2023/08/15 16:00:00', '2023/08/15 17:00:00');
2.3.2 REPORT_TEXT _ID
특정 스냅샷 ID 혹은 ID 구간의 성능 분석 리포트(text)를 생성한다.
REPORT_TEXT_ID 프러시저는 input이 특정 ID 혹은 ID 구간 두 종류로 나누어 진다.
a) 특정 ID
원하는 sap_id 한개의 리포트를 생성한다.
snap_id는 unique 하기 때문에, instance 한개에 대해서만 출력할 수 있다.
Ex)
exec dbms_tpr.report_text_id(1006);
b) ID 구간
원하는 snap_id 구간을 입력하여 리포트를 생성한다.
3번째 인자인 instance_no를 입력하지 않으면 입력한 snap_id에 대한BEGIN_INTERVAL_TIME 구간에 포함되는 모든 instance들의 snapshot들이 대상이 된다.
파라미터 | 설명 |
begin_snap_id | 성능 분석 리포트 대상 구간 중 시작 스냅샷 ID이다. |
end_snap_id | 성능 분석 리포트 대상 구간 중 종료 스냅샷 ID이다. |
instance_no | 성능 분석 리포트 대상 인스턴스 번호이다. (기본값: ALL) |
file_name | 만들어질 성능 분석 리포트 파일명이다. (기본값: tpr_report.{db_name}.{current_time}.txt) |
Ex)
exec dbms_tpr.report_text_id (1000, 1006);
2.3.3 REPORT_TEXT _LAST
현재 _TPR_SNAPSHOT 테이블에서 마지막으로 남긴 snap_id 하나에 대해 리포트를 생성한다.
Ex)
exec dbms_tpr.report_text_last();
2.4 번외
-- 부하시점 SNAP_ID 추출하는 쿼리
select n.begin_interval_time, n.end_interval_time, o.snap_id,
sum(case when v.stat_name = 'DB_CPU_TIME' then o.value else 0 end) db_cpu_time,
sum(case when v.stat_name = 'BG_CPU_TIME' then o.value else 0 end) bg_cpu_time,
sum(case when v.stat_name = 'BUSY_TIME' then o.value else 0 end) busy_time,
sum(case when v.stat_name in ('USER_TIME', 'NICE_TIME') then o.value else 0 end) user_time,
sum(case when v.stat_name = 'SYS_TIME' then o.value else 0 end) sys_time,
sum(case when v.stat_name = 'IDLE_TIME' then o.value else 0 end) idle_time,
sum(case when v.stat_name = 'IOWAIT_TIME' then o.value else 0 end) iowait_time
from _tpr_osstat2 o, _tpr_snapshot n, v$osstat2 v
where o.thread# = 0 -- TAC에서 1번노드는 0, 2번노드는 1로 조회할것!!!
and o.thread# = n.thread#
and o.snap_id = n.snap_id
and o.id = v.id
and v.stat_name in ('DB_CPU_TIME', 'BG_CPU_TIME', 'BUSY_TIME', 'USER_TIME','NICE_TIME', 'SYS_TIME', 'IDLE_TIME', 'IOWAIT_TIME')
group by o.snap_id, n.begin_interval_time, n.end_interval_time
order by o.db_cpu_time;
'DB > Tibero' 카테고리의 다른 글
[Tibero] tbrmgr을 이용한 백업 및 복구 (0) | 2023.11.30 |
---|---|
[Tibero] 티베로 DBA 교육 (0) | 2023.11.14 |
[Tibero] HA구조, TSC구조, TAC구조 (0) | 2023.08.09 |
[Tibero] 티베로 Troubleshooting 가이드 (0) | 2023.08.02 |
[Tibero] Tibero Dump 가이드 (0) | 2023.07.28 |