데이터베이스 연구실.log

ADDM과 진단 도구

AWR 스냅샷과 ADDM 진단 결과를 확인하는 실습의 일곱 단계, 부하 전후 스냅샷으로 AWR, ADDM 보고서를 만들어 경합 원인을 찾는 RAC 실습의 사용 예

ADDMAWR스냅샷MMONMMNLASHawrrpt.sqladdmrpt.sqlDBA_ADVISOR_FINDINGSDBMS_WORKLOAD_REPOSITORY

#핵심 요약

AWR은 성능 통계를 스냅샷으로 쌓고, ADDM은 스냅샷 구간을 분석해 진단 결과(finding)와 권고를 냄
실습에서는 MMON과 MMNL 백그라운드 프로세스가 이 일을 맡는다고 보고 먼저 프로세스를 확인했음

실습 RAC 실습의 공통 패턴: 부하 전 스냅샷 → 부하 → 부하 후 스냅샷 → awrrpt.sql로 AWR 보고서, addmrpt.sql로 ADDM 보고서

수업 자료에 기록된 ADDM 권고 예: 리터럴 SQL에 대한 "Hard Parse Due to Literal Usage"(바인드 변수 또는 cursor_sharing = force), 작은 시퀀스 CACHE에 대한 캐시 확대

#개념과 동작 원리

ADDM은 AWR 구간에서 데이터베이스 시간을 많이 소비한 원인과 개선 권고를 분석함
DB time은 포그라운드 세션의 CPU 시간과 비유휴 대기를 합친 값임

ADDM 분석 실습 진단 결과와 권고
버퍼와 Shared Pool 경합 Hard Parse Due to Literal Usage, 바인드 변수 권고
시퀀스와 채번 성능 enq: SQ - contention 상위, 시퀀스 캐시 확대 권고
잠금과 공간 경합 동시 INSERT 부하의 HW 대기 분석

메모리 크기 어드바이저(PGA, Buffer Cache, Shared Pool)는 메모리 관리에서 다룸

#주요 용어와 구성 요소

구문 의미
AWR 스냅샷 특정 시점 성능 통계의 저장본이며 두 시점의 증분으로 구간을 해석함
ADDM 기본적으로 인접 스냅샷 구간을 분석해 문제와 권고를 제시함
ASH 활성 세션 활동의 표본이며 전체 SQL 실행 이력의 전수 기록은 아님
finding TYPE PROBLEM, SYMPTOM, ERROR, INFORMATION을 구분함

#필수 명령어 또는 SQL

항목 실행 조건
작업 대상 DB, 인스턴스의 스냅샷 구간, ADDM 작업과 ASH 표본
필요 권한 기존 SQL은 SYSDBA 위치를 전제로 함
AWR 보고서에는 DBA 역할과 해당 기능의 사용 조건 확인 필요
바꿀 입력값 보고서 형식, 파일명, 시작 및 끝 스냅샷, RAC 대상 인스턴스, ADDM 작업 식별값
결과 해석 SNAP_ID만으로 서로 다른 DB, 인스턴스의 구간을 섞지 않음
진단 권고는 실제 업무 영향과 함께 검토하며 새 보고서 출력은 기재 없음

#실습의 확인 일곱 단계

OS (oracle 사용자)조회만 함
ps -ef | grep -E "ora_mmon|ora_mmnl" | grep -v grep
SQL*Plus (SYSDBA)조회만 함
SELECT snap_interval, retention FROM dba_hist_wr_control;

SELECT snap_id, begin_interval_time, end_interval_time
  FROM dba_hist_snapshot
 ORDER BY snap_id DESC
 FETCH FIRST 5 ROWS ONLY;
SQL*Plus (SYSDBA)객체 또는 설정을 변경함
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
SQL*Plus (SYSDBA)조회만 함
SELECT task_name, status, TO_CHAR(execution_end, 'MM/DD HH24:MI') ended
  FROM dba_advisor_tasks
 WHERE advisor_name = 'ADDM'
 ORDER BY task_id DESC
 FETCH FIRST 5 ROWS ONLY;

SELECT task_name, type, impact, SUBSTR(message, 1, 60) message
  FROM dba_advisor_findings
 ORDER BY impact DESC
 FETCH FIRST 10 ROWS ONLY;

SELECT COUNT(*) FROM v$active_session_history;

결과 해석: 세 번째 조회는 스냅샷마다 ADDM 작업이 돌았는지, 네 번째는 영향(IMPACT)이 큰 진단부터 보여 줌
마지막은 MMNL이 다루는 세션 활동 기록(ASH) 건수임
TYPE은 진단 종류이며 IMPACT는 IMPACT_TYPE이 나타내는 영향 유형과 함께 해석함

#부하 구간 보고서

SQL*Plus (SYSDBA)객체 또는 설정을 변경함
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;   -- 부하 전
-- 부하 실행
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;   -- 부하 후
SQL*Plus (SYSDBA)조회만 함
@?/rdbms/admin/awrrpt.sql
@?/rdbms/admin/addmrpt.sql

결과 해석: 두 스크립트는 대화형으로 보고서 형식과 스냅샷 번호를 묻음
실습에서는 부하 전후 스냅샷 번호를 골랐음
RAC용 전체 보고서는 awrgrpt.sql을 사용하며 지정 데이터베이스의 RAC 보고서는 awrgrpti.sql로 구분함

#구문과 옵션 설명

기본 자동 스냅샷 간격은 1시간, 기본 보존 기간은 8일임
실제 설정은 DBA_HIST_WR_CONTROL 값으로 확인하며 기본값을 실습 환경 값으로 대입하지 않음

DBA_ADVISOR_FINDINGS에는 ADDM 이외 어드바이저의 결과도 포함될 수 있음
작업 이름, ID와 실행을 구분하고 해당 ADDM 작업의 finding인지 확인함
IMPACT를 항상 백분율이라고 가정하지 않으며 영향 유형을 함께 읽음

#사용 조건과 주의사항

AWR, ADDM, ASH와 관련 보고서의 사용에는 Diagnostics Pack 적용 여부를 확인함
기능이 켜져 있다는 사실만으로 사용 권한을 판단하지 않음

AWR 스크립트에는 DBA 역할이 필요함
보고서의 DB, 인스턴스, 스냅샷 구간을 맞추고 재기동 경계를 확인함
ASH 행 수 자체는 병목 크기나 전체 실행 건수가 아니며 실제 대기, SQL, 시간 범위를 함께 분석함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기