개념

Automatic Performance Monitering

(매뉴얼) Tibero DBMS는 DBA가 성능 문제를 진단하는데 도움을 주기 위해 다양한 종류의 통계를 제공하고 있다. Automatic Performance Monitoring(이하 APM)은 이러한 통계 정보를 주기적으로 자동 수집하여 DBA가 이를 위한 작 업을 따로 할 필요가 없어졌고, 수집한 통계 자료에 대한 자체적인 분석 리포트 출력 기능을 제공하여 시스템 부하 분 석에 도움을 줄 수 있는 기능이다. Oracle의 AWR(Automatic Workload Repository)에 해당하는 기능이다.

주요기능

  • 스냅샷 (v$sysstat, v$system_event, v$sqlstats, v$sgastat 등 Tibero의 각종 성능 통계 정보를 주기적(보통 1 시간)으로 테이블에 저장
  • 세션상태 저장 : 1초에 한번씩 현재 RUNNING 상태인 세션들의 ID와 대기중인 이벤트 정보(WAIT_EVENT 등)를 메모리(ash queue)에 저장. v$active_session_history 뷰로 조회

저장된 스냅샷과 세션 상태는 테이블과 뷰를 통해 직접 이용할 수 있지만, 보통은 성능 분석 리포트를 만드는데 이용한다.

성능분석 리포트

1) 스냅샷 생성여부 확인

select * from _apm_snapshot;

→ 현재날짜는 2022-10 경이나, 생성된지 7일 이상인 스냅샷 32596 row 발견

※ 한번의 스냅샷으로 쌓이는 데이터 양
  • 한번의 스냅샷으로 쌓이는 데이터 총량 (최대치) : 약 150KB
  • 최대 차지하는 공갂 : 150KB * 7일 * 24시간 = 25MB
  • _APM_TS Tablespace에 공간 차지 <<<< 삭제가 안되고 있었다.

2) 성능리포트 생성 확인

$TB_HOME/instance/$TB_SID/apm_report.{mthr_pid}.{current_time}

→ 현재 생성된 성능 리포트는 없음

기타 특이사항

(매뉴얼) APM관련 테이블을 재생성하고 싶을경우 : $TB_HOME/scripts 내에 apm.sql, apm_drop.sql 을 이용하시기 바랍니다. 참고로 기존의 APM 데이터는 모두 제거 됩니다


작업내역

1. 방법1> TBS RESIZE (실패)

https://oracle.tistory.com/292 포스팅 (DATAFILE SIZE를 줄이는법 - 방법1)을 참고해 Tibero 에 맞도록 변경 작업

※ 이 방법은 TBS의 논리공간을 축소하는 것이기 때문에 물리공간(하드디스크를 차지하는을 의미)에 위치한 DATAFILE의 용량이 줄어들진 않음. 때문에 실패라 표기

-- 1. 관련 파라미터 확인 (FILD_ID, BLOCK_ID, BLOCKS)
 select * from dba_data_files
 where 1=1
 and tablespace_name in ('_APM_TS','UNDO_02')
 order by tablespace_name

--#    FILE_NAME    FILE_ID    TABLESPACE_NAME    BYTES    BLOCKS    STATUS    RELATIVE_FNO    AUTOEXTENSIBLE    MAXBYTES    MAXBLOCKS    INCREMENT_BY
--1    /home/jeus/Tibero/tibero5/database/tibero/undo_002.dbf    19    UNDO_02    104857600    12800    AVAILABLE    19    YES    34359738368    4194304    32
--2    /home/jeus/Tibero/tibero5/database/tibero/apm_ts.dtf    3    _APM_TS    11417288704    1393712    AVAILABLE    3    YES    34359738368    4194304    1280

/* 요약 
 - tablespace_name : _APM_TS
 - FILE_ID : 3 
 - BLOCK_ID : X
 - BLOCKS : 1393920 (*) 
 - BYTES : 11418992640
*/



-- 2. EXTENTS 검색
select * from dba_extents
where 1=1
and file_id = '3' 
and segment_type = 'TABLE' 
order by block_id*1 desc 
 -- 마지막 BLOCK_ID , BLOCK 로 차지하는 용량 계산. 각항목에 대한 설명은 TIBERO 매뉴얼 참고 

--#    OWNER    SEGMENT_NAME    PARTITION_NAME    SEGMENT_TYPE    TABLESPACE_NAME    EXTENT_ID    FILE_ID    BLOCK_ID    BYTES    BLOCKS    RELATIVE_FNO
--1    SYS    _APM_SNAPSHOT    <NULL>    TABLE    _APM_TS    0    3    1393655    131072    16    3  <<< 
--2    SYS    _APM_SQLSTATS    <NULL>    TABLE    _APM_TS    49    3    1159799    1048576    128    3
--3    SYS    _APM_PGASTAT    <NULL>    TABLE    _APM_TS    16    3    1159671    1048576    128    3
--4    SYS    _APM_LATCH    <NULL>    TABLE    _APM_TS    48    3    805255    1048576    128    3
--5    SYS    _APM_UNDOSTAT    <NULL>    TABLE    _APM_TS    5    3    805111    131072    16    3


-- 3. 계산식
select (block_id * 2048) + (blocks * 2048) as BYTE,
       ((block_id * 2048) + (blocks * 2048)) / 1024 / 1024 / 1024 AS GB 
from dba_extents
where 1=1
and file_id = '3' 
and segment_type = 'TABLE' 
order by block_id*1 desc 

--#      BYTE              GB
-- 1 2854238208    2.6582164761.. 

-- → 약 2.6 GB 차지
# 4. TBS 용량 감축  
[... _tibero ~]$ tbsql

SQL> conn SYS/tibero 

Connected to Tibero.

SQL > alter database datafile '/home/jeus/Tibero/tibero5/database/tibero/apm_ts.dtf' resize 3000M 

# dataFile 경로 : /home/jeus/Tibero/tibero5/database/tibero/apm_ts.dtf 

[... _tibero ~]$ df -h 
# 용량 변화 없음! 

2. 방법2> TBS DROP/CREATE

[... _tibero ~]$ tbsql

SQL> conn SYS/tibero 

Connected to Tibero.


# 1. APM 관련 파라미터 확인  
SQL > show parameter APM;

# NAME                             TYPE        VALUE
# ------------------------------------------------------ 
# APM_METRIC                      INT32     NO 
# APM_SEGMENT_STATISTICS           INT32        NO 
# APM_SNAPSHOT_RETENTION           INT32        7 
# APM_SNAPSHOT_SAMPLING_INTERVAL  INT32        60 
# APM_SNAPSHOT_TOP_SEGMENT_CNT       INT32        5 
# APM_SNAPSHOT_TOP_SQL_CNT           INT32        5 
----------------------------------------

# - APM_SNAPSHOT_SAMPLING_INTERVAL : 스냅샷 저장 주기 (60분)
# - APM_SNAPSHOT_RETENTION : 스냅샷 보관 주기 (7일)
# - APM_SNAPSHOT_TOP_SQL_CNT : 리포트에 출력할 상위 SQL갯수
# - APM_SEGMENT_STATISTICS : 'Y'로 설정하면 APM에서 Segment별 Stat 수집 기능을 활성화 (기본값:N)

→ 한 시간에 1번씩 스냅샷을 보관하고 7일 동안 보관하는 것을 알 수 있다. 


# 2. _apm_snapshot 테이블 확인
SQL > SELECT * FROM _APM_SNAPSHOT; -- 5176
# -- 모든 스냅샷은 7일 주기로 지워져야하지만, 2022-07-11 생성된 스냅샷이 그대로 있는 것을 확인
# 해당 테이블을 TRUNCATE 했으나 이미 사용된 테이블스페이스 공간은 반납할 수 없음 



# 3. 테이블 스페이스 삭제
## 삭제 전 /home/jeus/Tibero/tibero5/database/tibero/script 경로의 `apm_ts.dtf` 파일을 카피해 백업

SQL > DROP TABLESPACE _APM_TS INCLUDING CONTENTS AND DATAFILES;

# 4. 테이블 스페이스 생성
SQL > CREATE TABLESPACE _APM_TS DATAFILE '/home/jeus/Tibero/tibero5/database/tibero/apm_ts.dtf'; 

# 5. `apm.sql`, `apm_drop.sql`  실행 
# cd 명령어로 /home/jeus/Tibero/tibero5/database/tibero/script 경로로 이동 

SQL > @apm_drop.sql
SQL > @apm.sql

참고자료

티베로 튜닝 및 모니터링 Tibero APM 사용법 - 8P : 주의사항
티베로 설치가이드 - 93P : A.2.2. TAC raw device 환경에서 APM관련 주의사항

반응형

BELATED ARTICLES (관련글)

more