본문 바로가기
IT/AWR-ASH

ASH와 Statspack 비교: Oracle 성능 모니터링 도구인 Statspack과 ASH의 차이점 분석.

by free-inf 2025. 2. 15.

서버 이관 프로젝트를 수행하는 과정에서 데이터베이스의 성능을 지속적으로 모니터링하고 최적화하는 것은 필수적인 작업이다. Oracle은 데이터베이스 성능을 모니터링하고 분석할 수 있는 여러 가지 도구를 제공하는데, 그중 대표적인 것이 ASH(Active Session History)와 Statspack이다.

 

이 두 도구는 데이터베이스 성능 문제를 진단하는 데 사용되지만, 데이터 수집 방식, 분석 가능 범위, 활용 목적 등이 서로 다르다.

  • ASH는 실시간 성능 모니터링에 초점을 맞춘 도구로, 초 단위로 활성 세션 데이터를 기록하여 성능 문제를 즉각적으로 분석하는 데 유용하다.
  • Statspack은 특정 시간 간격으로 데이터베이스 성능 정보를 스냅샷(Snapshot) 형태로 저장하여 장기적인 성능 추이를 분석하는 데 적합하다.

이러한 차이점을 이해하고, 어떤 상황에서 ASH를 사용하고, 어떤 상황에서 Statspack을 사용하는 것이 적절한지 판단하는 것이 중요하다. 본 글에서는 ASH와 Statspack의 주요 차이점을 비교하고, 두 도구를 효과적으로 활용하는 방법을 설명한다. 이를 통해 서버 이관 후 성능 분석을 수행할 때 최적의 모니터링 전략을 수립할 수 있도록 한다.


ASH(Active Session History) 개요

ASH란?

ASH(Active Session History)는 Oracle이 초 단위로 활성 세션 정보를 수집하여 SGA(Shared Global Area) 내에 저장하는 기능이다.

  • 활성 세션(Active Session)이란? 현재 CPU에서 실행 중이거나, 특정 자원(디스크, 락, I/O 등)을 기다리고 있는 세션을 의미한다.
  • ASH는 실행 중인 SQL, 대기 이벤트, 트랜잭션 정보 등을 기록하여 실시간 분석을 지원한다.

ASH의 주요 특징

  1. 실시간 성능 모니터링
    • 초 단위로 데이터를 기록하여 현재 발생하는 성능 문제를 즉각적으로 분석할 수 있다.
  2. 메모리에 저장 (SGA 내 보관)
    • ASH 데이터는 메모리에 저장되며, 일정 시간이 지나면 삭제된다.
    • 오래된 데이터는 AWR(Automatic Workload Repository)에 일부 저장된다.
  3. 성능 병목 및 세션 대기 분석 가능
    • CPU 사용량, I/O 대기, 블로킹 세션, Temp Tablespace 사용량 등을 실시간으로 분석할 수 있다.
  4. 단기적인 성능 문제 분석에 최적화
    • 최근 몇 분~몇 시간 내 발생한 성능 문제를 분석하는 데 유용하다.
    • 장기적인 추세 분석에는 적합하지 않음.

ASH 데이터 조회 예제

최근 10분간 CPU에서 실행된 SQL 목록 조회

SELECT 
  sql_id, 
  COUNT(*) AS execution_count 
FROM 
  v$active_session_history 
WHERE 
  session_state = 'ON CPU' 
  AND sample_time >= SYSDATE - (10 / 1440) 
GROUP BY 
  sql_id 
ORDER BY 
  execution_count DESC;
 
  • 특정 시간 동안 CPU에서 실행된 SQL을 조회하여 CPU 부하가 높은 SQL을 식별할 수 있다.

Statspack 개요

Statspack이란?

Statspack은 Oracle에서 제공하는 성능 분석 도구로, 일정 시간 간격으로 데이터베이스 상태를 스냅샷(Snapshot) 형태로 저장하여 성능 변화를 추적할 수 있도록 한다.

Statspack의 주요 특징

  1. 장기적인 성능 분석 가능
    • 일정 시간 간격(예: 30분, 1시간 등)으로 성능 데이터를 스냅샷 형태로 저장하여 장기적인 성능 변화를 분석할 수 있다.
  2. 디스크에 저장
    • Statspack 데이터는 디스크에 저장되므로 장기간 보관할 수 있다.
    • 여러 스냅샷을 비교하여 성능이 언제부터 저하되었는지 분석하는 데 유용하다.
  3. SQL 실행 빈도 및 성능 분석
    • 특정 SQL이 얼마나 자주 실행되었는지, 수행 시간이 얼마나 걸렸는지 분석할 수 있다.
  4. 실시간 분석은 불가능
    • Statspack은 일정 시간 간격으로 데이터를 수집하기 때문에 실시간 성능 문제를 즉각적으로 분석하는 데 적합하지 않다.

Statspack 데이터 조회 예제

특정 시간대에 가장 많이 실행된 SQL 확인

SELECT 
  sql_id, 
  executions, 
  buffer_gets, 
  disk_reads 
FROM 
  stats$sql_summary 
ORDER BY 
  executions DESC FETCH FIRST 10 ROWS ONLY;
  • 실행 횟수가 많은 SQL을 분석하여 장기적인 성능 최적화를 수행할 수 있다.

ASH와 Statspack 비교

비교 항목ASH (Active Session History)Statspack

데이터 수집 방식 초 단위로 활성 세션 기록 (실시간) 일정 시간 간격으로 스냅샷 저장
저장 위치 SGA(메모리) 디스크
보관 기간 메모리 내 제한적인 시간 (기본 몇 시간) 설정된 기간 동안 장기 저장 가능
실시간 분석 가능 여부 가능 불가능
성능 병목 분석 즉각적인 대기 이벤트 및 리소스 사용 분석 과거 데이터 비교 분석
활용 목적 단기적인 성능 문제 감지 및 해결 장기적인 성능 추세 분석
대표적인 분석 데이터 CPU 사용량, 대기 이벤트, 블로킹 세션 등 SQL 실행 빈도, 트랜잭션 수행 시간 등

ASH와 Statspack 활용 전략

ASH가 적합한 경우

  • 실시간 성능 이슈 분석: 현재 시스템에서 발생하는 성능 문제를 즉각적으로 확인해야 할 때.
  • CPU 과부하, I/O 병목, 블로킹 세션 분석: 특정 세션이 CPU를 과도하게 사용하거나, 디스크 I/O가 비정상적으로 높은 경우.
  • 단기적인 장애 분석: 최근 몇 분~몇 시간 내 발생한 장애 원인을 찾을 때.

Statspack이 적합한 경우

  • 장기적인 성능 트렌드 분석: 특정 SQL이 장기간에 걸쳐 성능이 어떻게 변했는지 확인할 때.
  • SQL 실행 빈도 및 자원 사용량 분석: 가장 자주 실행된 SQL을 찾아 최적화할 때.
  • 정기적인 성능 리포트 생성: 데이터베이스 성능을 주기적으로 모니터링하여 성능 보고서를 생성할 때.

Oracle에서 제공하는 ASH와 Statspack은 각각 다른 목적에 최적화된 성능 모니터링 도구로, 상황에 따라 적절하게 활용하는 것이 중요하다.

 

ASH는 실시간으로 활성 세션 데이터를 수집하여 즉각적인 성능 분석을 수행하는 데 적합하며, CPU 사용량, 대기 이벤트, 블로킹 세션 등의 문제를 신속하게 감지하고 해결할 수 있다.

 

반면, Statspack은 일정 시간 간격으로 스냅샷을 저장하여 장기적인 성능 추세를 분석하는 데 유용하며, 특정 SQL의 실행 빈도 및 리소스 사용량을 분석하여 성능 개선을 위한 방향성을 설정하는 데 도움을 준다.