Tibero - APM(Automatic Performance Monitoring) 사용법
출처: https://m.blog.naver.com/noe08/221845115427
2020. 3. 9. 16:32
Tibero APM 사용법
1.APM(Automatic Performance Monitoring) = Oracle의 AWR에 해당하는 기능
: Tibero TBMS는 DBA가 성능 문제를 진단하는데 도움을 주기 위해 다양한 종류의 통계를 제공하고 있다.
APM은 이러한 통계 정보를 주기적으로 자동 수집하여 DBA가 이를 위한 작업을 따로 할 필요가 없어졌고, 수집한 통계 자료에 대한 자체적인 분석 리포트 출력 기능을 제공하여 시스템 부하 분석에
도움을 줄 수 있는 기능이다.
2.주요기능
→ 스냅샷 저장 기능 : V$sysstat, v$system_event, v$sqlstats, v$sgastat 등 Tibero의 각종 성능 통계 정보를 주기적으로(1시간) 테이블에 저장하여 둔다. ▶▶▶ 이렇게 저장된 정보를 스냅샷이라고 부른다.
이렇게 저장해 놓은 스냅샷 정보를 이용하여 성능 분석 리포트를 만드는 기능을 제공한다. DBA는 특정 구간을 지정하여 리포트를 생성하고 이를 이용해 DB의 성능 문제를 진단할 수 있다.
→ 세션 상태 저장 기능 : 세션 상태 저장 기능은 1초에 한번씩 현재 Running 상태인 세션들의 ID와 대기중인 이벤트 정보(WAIT_EVENT 등)를 메모리(ash queue)에 저장해둔다.
이렇게 저장해 놓은 정보를 v$active_session_history 뷰로 조회할 수 있다. 이 뷰를 이용해 DB의 성능 문제를 보다 세밀하게 진단할 수 있다.
3.APM 사용
→TIP 설정 : Tibero 5 버전 이후 APM을 기본으로 사용하게 되어 있어 따로 설정해 주지 않아도 된다.(Tibero 4sp1 이전 버전은 tip파일에 설정을 해주어야 한다.)
스냅샷 기능을 사용하려면 tip파일에 AUTOMATIC_PERFORMANCE_MONITORING=Y로 설정, 세션 상태 저장 기능을 사용하려면 ACTIVE_SESSION_HISTORY=Y 설정
SQL> SHOW PARAMETER AUTO
위와 같이 SQL 문을 쳐보면 AUTO라는 키워드가 들어가는 파라미터 값이 나와서 해당 파라미터 값을 확인해 보면 된다.
파라미터(show parameter [아래 값])
|
설명
|
||
AUTOMATIC_PERFORMANCE_MONITORING
|
스냅샷 기능 홗성화 (기본값 : Y)
|
||
ACTIVE_SESSION_HISTORY
|
세션 상태 저장 기능 홗성화 (기본값 : N)
|
||
APM_SNAPSHOT_SAMPLING_INTERVAL
|
스냅샷 저장 주기를 설정 (기본값 : 60(분))
|
||
APM_SNAPSHOT_RETENTION
|
스냅샷 저장 보관 주기 설정(기본값 : 7(일))
|
||
_ACTIVE_SESSION_HISTORY_SAMPLING_INTERVAL
|
세션 상태 저장 주기를 설정 (기본값 : 1(초))
|
||
GATHER_SQL_PLAN_STAT
|
Y로 설정하면 상세한 SQL 통계 정보 수집 (Tibero 5 기본값 : Y, 4sp1 이하 : N)
|

→저장한 스냅샷과 세션 상태는 관련 테이블과 뷰를 통해 확인할 수 있다.
테이블
|
설명
|
||
_APM_SNAPSHOT
|
저장된 스냅샷의 ID와 시간에 관한 정보를 관리하는 테이블이다.
|
||
_APM_SYSSTAT
|
V$SYSSTAT 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_SQLSTATS
|
V$SQLSTATS 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_LATCH
|
V$LATCH 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_SYSTEM_EVENT
|
V$SYSTEM_EVENT 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_SGASTAT
|
V$SGASTAT 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_LIBRARYCACHE
|
V$LIBRARYCACHE 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_SQLTEXT
|
V$SQLTEXT 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_FILESTAT
|
V$FILESTAT 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_PROCESS
|
V$PROCESS 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_UNDOSTAT
|
V$UNDOSTAT 뷰의 스냅샷 정보를 관리하는 테이블이다.
|
||
_APM_MISC
|
세션 수와 같은 기타 정보의 스냅샷 정보를 관리하는 테이블이다.
|
▶세션 상태 저장 기능
세션 상태 저장 주기에 활동 중인 세션들의 정보를 저장한다.
테이블
|
설명
|
|
_APM_ACTIVE_SESSION_HISTORY
|
활동 중인 세션 상태 정보를 관리하는 테이블이다.
|
|
V$ACTIVE_SESSION_HISTORY
|
최근 1시간 동안의 세션 상태 정보를 관리하는 테이블이다.
|
→수동 스냅샷 생성 기능 : APM을 설정하면 정해진 주기(DEFAULT : 1시간)에 자동으로 스냅샷이 생성되지만, 원하는 경우 현재 시점의 스냅샷을 남길 수 있다.
SQL> exec dbms_apm.create_snapshot();
→리포트 작성 : 저장된 스냅샷과 세션 상태는 테이블과 뷰를 통해 직접 이용할 수 있지만, 보통은 성능 분석 리포트를 만들게 된다. 스냅샷 정보를 분석한 리포트 생성으로 구현되어 있다.
→스냅샷 테이블을 조회하여 원하는 기간에 대한 시작,종료 시각을 확인한다.
SQL> alter session set nls_date_format='yyyymmdd hh24:mi:ss'
Session altered.
SQL> select snap_id, thread#, instance_number, begin_interval_time, end_interval_time
from _apm_snapshot;

SQL> exec dbms_apm.report_text('20200309 22:25:02', '20200309 23:45:03');
PSM completed.
→성능 분석 리포트는 다음의 경로에 파일로 생성된다.
$TB_HOME/instance/$TB_SID/apm_report.{mthr_pid}.{current_time}
▶성능 분석 항목
Report Summary
|
Cache Sizes
Load Profile
Instance Effieiency Percentages (Target 100%)
Shared Pool Statics
|
|
Wait Events & Active Stats
|
Wait Event Class
Wait Events
Instance Activity Stats
|
|
SQL Statistics
|
SQL Ordered by Elapsed Time
SQL Ordered by Gets
SQL Ordered by Executions
SQL Ordered by Parse Calls
|
|
IOStats
|
TableSpace IO Statistics
File IO Statistics
|
|
SGA Statistics
|
Buffer Pool Statistics
Library Cache Statistics
|
|
PGA Statistics
|
PGA Statistics
|
|
Wlock Statistics
|
Wlock Statistics
|
|
Undo Statistics
|
Undo Statistics
|
|
Spinlock Statistics
|
Undo Statistics
|
|
Tibero Init. Parameters(.tip)
|
[tibero@localhost TBTAC1]$ cd $TB_HOME/instance/TBTAC1/
[tibero@localhost TBTAC1]$ ls -l
total 1020
-rw-r--r--. 1 tibero dba 180044 Mar 9 22:53 apm_report.TBTAC.20200309_225357.txt
-rw-r--r--. 1 tibero dba 205012 Mar 9 23:54 apm_report.TBTAC.20200309_235400.txt
drwxr-xr-x. 2 tibero dba 23 Mar 9 18:57 audit
-rw-------. 1 root root 606220 Mar 9 23:55 cm.out.1896
drwxr-xr-x. 3 tibero dba 18 Mar 9 18:57 dump
drwxr-xr-x. 7 tibero dba 95 Mar 9 22:07 log
-rw-------. 1 tibero dba 0 Mar 9 20:40 lsnr.out.52609
-rw-------. 1 tibero dba 0 Mar 9 22:09 lsnr.out.95977
drwxr-xr-x. 2 tibero dba 210 Mar 9 20:40 path
-rw-------. 1 tibero dba 0 Mar 9 20:40 tbsvr.out.52610
[tibero@localhost TBTAC1]$ vi apm_report.TBTAC.20200309_235400.txt
★한 번의 스냅샷으로 쌓이는 데이터 양 (최대치) : 약 150KB
★최대 차지하는 공간 : 150KB * 7일 * 24시간 = 약 25M
===> _APM_TS Tablespace에 공간 차지한다.
★ASH(Active Session History)를 사용하며 차지하는 memory 양
ash queue 크기 = _ACTIVE_SESSION_HISTORY_QSIZE * 세션 수 * 240(하나의 세션 히스토리가 차지하는 크기가 240 BYTE)
기본 설정이 세션 50개 라면,
3600 * 500 * 240 = 41.2MB 정도의 SHARED MEMORY 차지
ash queue의 2/3 이상이 채워지면 그 내용을 _APM_ACTIVE_SESSION_HISTORY 테이블에 flush. 해당 테이블 내용 중 일주일이 지난 것들은 삭제 됨.
★ APM 기능을 수행하는 프로세스는?
티베로의 경우 => Working Process 에서 스냅샷 정보를 남김. (참고: 세션을 담당하는 워킹프로세스와는 별개로 존재하는 워킹프로세스로써 Crach Recovery, APM 기능 등을 수행함) 티베로에서도 APM 기능을 제공하지만 오라클과 아키텍처 차이로 별도의 MMON 프로세스가 필요하지 않음.
TAC 환경에서 APM REPORT 생성시 각 인스턴스 별로 수행을 하여야 하는 건가요? TAC 환경에서는 각 노드가 각자가 볼 수 있는 정보를 남기고(global view를 사용하지 않음), report 출력 시 merge 해서 보여주는 구조입니다.
APM관련 테이블을 재생성?
$TB_HOME/scripts 내에 apm.sql, apm_drop.sql 을 이용하시기 바랍니다.
참고로 기존의 APM 데이터는 모두 제거 됩니다