컴퓨터 활용(한글, 오피스 등)/기타

Tibero - APM(Automatic Performance Monitoring) 사용법

3604 2025. 2. 22. 18:18
728x90

출처: 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 데이터는 모두 제거 됩니다

728x90
반응형