서버 이관 프로젝트를 진행하면서 가장 중요한 과제 중 하나는 데이터베이스 성능의 안정성과 효율성을 유지하는 것이다. 특히, 새로운 서버 환경에서 예상치 못한 성능 저하가 발생할 가능성을 최소화하고, 운영 환경의 성능 문제를 신속하게 해결하기 위해서는 효과적인 성능 모니터링 도구가 필수적이다.
Oracle 데이터베이스는 이러한 요구를 충족하기 위해 다양한 성능 모니터링 도구를 제공하며, 그중 대표적인 것이 ASH(Active Session History) 와 AWR(Automatic Workload Repository) 이다. 두 도구는 데이터베이스의 성능을 분석하고 최적화하는 데 중요한 역할을 하지만, 수집 방식과 분석 목적에서 뚜렷한 차이가 있다.
본 글에서는 ASH와 AWR의 개념, 주요 차이점, 활용 사례를 통해 각각의 역할과 효율적인 사용 방법을 설명한다. 이를 통해 서버 이관 후에도 데이터베이스 성능을 안정적으로 유지하고 최적화할 수 있는 방안을 제시하고자 한다.
1. AWR(Automatic Workload Repository)란?
1.1 AWR의 개념
AWR은 Oracle 데이터베이스에서 성능 데이터를 장기적으로 수집 및 저장하는 리포지토리로, 주로 전체 시스템 성능을 분석하고 장기적인 성능 추세를 모니터링하는 데 사용된다.
AWR은 MMON(Manageability Monitor) 프로세스에 의해 자동으로 실행되며, 기본적으로 1시간 간격으로 스냅샷을 생성한다. 이러한 스냅샷 데이터는 7일 동안 보관되며, 오래된 데이터는 자동으로 삭제된다.
1.2 AWR의 주요 특징
- 장기적인 성능 분석: 주기적으로 수집된 데이터를 통해 성능 트렌드 분석 가능.
- 스냅샷 기반 데이터: 특정 시간대의 데이터베이스 상태를 정밀하게 분석.
- 보고서 자동 생성: SQL 명령어를 통해 텍스트 또는 HTML 형식의 리포트 생성 가능.
- 상세한 성능 데이터 제공: CPU, 메모리, I/O 사용량 등 다양한 지표 제공.
2. ASH(Active Session History)란?
2.1 ASH의 개념
ASH는 Oracle 데이터베이스에서 현재 활성화된 세션(Active Session)의 데이터를 실시간으로 수집하는 기능이다. 데이터베이스가 초당 활성 세션 데이터를 샘플링하여 메모리에 저장하며, 실시간으로 SQL 실행 상태, 대기 이벤트, 자원 사용량 등을 분석할 수 있다.
ASH는 즉각적인 문제 해결을 위해 설계된 도구로, 실시간 데이터를 기반으로 성능 문제를 신속하게 식별하고 원인을 파악할 수 있다.
2.2 ASH의 주요 특징
- 실시간 성능 분석: 현재 실행 중인 세션의 데이터를 실시간으로 수집.
- 세션별 상세 분석: 특정 세션의 상태, SQL, 대기 이벤트 등을 추적 가능.
- 단기적인 데이터 저장: 메모리에 저장되며, 장기적인 분석은 AWR을 통해 보완.
- 빠른 문제 해결 지원: 대기 이벤트 분석을 통해 즉각적인 성능 문제 해결 가능.
3. ASH와 AWR의 주요 차이점
항목ASH(Active Session History)AWR(Automatic Workload Repository)
수집 주기 | 초 단위(1초마다 샘플링) | 1시간 간격으로 스냅샷 생성 |
저장 위치 | 메모리(단기 데이터 저장) | 데이터베이스 테이블(장기 데이터 저장) |
분석 대상 | 실시간 활성 세션 | 장기적인 성능 데이터 |
활용 목적 | 실시간 문제 진단 | 장기적인 성능 분석 및 트렌드 모니터링 |
주요 데이터 | SQL 실행 상태, 대기 이벤트, 자원 사용량 | CPU, 메모리, I/O 사용량, SQL 실행 통계 등 |
활용 시점 | 즉각적인 성능 문제 해결 시 | 장기적인 성능 추세 분석 및 튜닝 시 |
4. ASH와 AWR의 활용 방법
4.1 ASH의 활용 사례
- 실시간 대기 이벤트 분석
- ASH를 통해 현재 발생 중인 대기 이벤트를 실시간으로 분석하고 문제를 해결한다.
SELECT session_id, sql_id, event, wait_timeFROM v$active_session_historyWHERE sample_time > SYSDATE - INTERVAL '5' MINUTE; - 활성 세션 데이터 추적
- 특정 세션이 CPU, 메모리, I/O를 과도하게 사용하고 있는지 확인한다.
SELECT session_id, session_state, eventFROM v$active_session_historyWHERE session_id = 1234; - 실시간 SQL 성능 분석
- 실행 중인 SQL의 대기 이벤트와 자원 소비 상태를 분석한다.
4.2 AWR의 활용 사례
- 장기적인 성능 트렌드 분석
- AWR 리포트를 생성하여 데이터베이스의 성능 트렌드를 파악한다.
@$ORACLE_HOME/rdbms/admin/awrrpt.sql - SQL 실행 빈도 및 성능 분석
- 특정 SQL이 얼마나 자주 실행되었는지, 자원을 얼마나 소비했는지 확인한다.
- 병목 현상 및 자원 소비 분석
- 장기적인 관점에서 CPU, I/O, 메모리 부하를 확인하고 최적화 방안을 마련한다.
5. ASH와 AWR의 상호 보완적 역할
ASH와 AWR은 각각의 장점이 뚜렷하며, 상호 보완적인 역할을 한다.
- ASH는 실시간 데이터를 제공하므로, 긴급 상황에서 빠르게 문제를 진단하고 해결하는 데 유용하다.
- AWR은 장기적인 데이터를 통해 성능 트렌드 분석과 장기적인 성능 개선 작업에 적합하다.
예를 들어, 특정 시간대에 성능 문제가 발생한 경우 ASH를 활용하여 즉각적인 원인 분석을 수행하고, 이후 AWR 데이터를 통해 해당 문제가 반복적으로 발생하는지 여부를 확인할 수 있다.
서버 이관 프로젝트와 같은 대규모 작업에서는 데이터베이스의 성능을 지속적으로 모니터링하고 최적화하는 것이 필수적이다. 이 과정에서 ASH와 AWR은 각각 실시간과 장기적인 분석에 특화된 도구로, 서로 보완적인 역할을 수행한다.
ASH는 실시간 문제 해결에, AWR은 장기적인 튜닝에 적합하며, 두 도구를 적절히 활용하면 데이터베이스 성능 문제를 신속하고 효과적으로 해결할 수 있다. 이를 통해 새로운 서버 환경에서도 안정적이고 효율적인 운영을 유지할 수 있을 것이다.