서버 이관 프로젝트를 수행하는 과정에서 데이터베이스 성능을 유지하는 것은 매우 중요한 작업이다. 특히, 서버가 새로운 환경으로 이전되었을 때 예상치 못한 성능 저하가 발생할 가능성이 높기 때문에, 실시간으로 시스템의 상태를 모니터링하고 문제를 신속히 진단할 수 있는 도구가 필요하다.
Oracle 데이터베이스는 이러한 성능 분석을 위해 ASH(Active Session History) 보고서를 제공한다. ASH 보고서는 현재 활성화된 세션들의 정보를 기록하고, 이를 분석하여 성능 저하 원인을 파악하는 데 도움을 주는 도구다.
이 글에서는 ASH 보고서를 생성하는 방법과 함께, SQL 명령어를 활용하여 특정 SQL이나 세션에 대한 정보를 조회하는 실무적인 방법을 설명한다. 이를 통해 서버 이관 후 발생할 수 있는 성능 문제를 효과적으로 분석하고 대응할 수 있도록 한다.
1. ASH 보고서란?
ASH(Active Session History) 보고서는 Oracle 데이터베이스에서 현재 실행 중인 세션의 활동 정보를 수집하고 분석하는 보고서다. Oracle은 매 초마다 활성 세션의 정보를 메모리에 저장하며, 이를 통해 실시간으로 데이터베이스 성능을 모니터링할 수 있다.
ASH는 다음과 같은 상황에서 유용하게 활용된다.
- 실시간 성능 저하 분석: 특정 시점에 실행된 SQL과 발생한 대기 이벤트를 확인할 수 있다.
- SQL 튜닝: 실행 시간이 길거나 리소스를 과도하게 소비하는 SQL을 식별할 수 있다.
- 대기 이벤트 분석: CPU, I/O, 네트워크 등의 대기 시간을 분석하여 성능 문제를 해결할 수 있다.
- 블로킹 세션 감지: 특정 세션이 다른 세션을 차단하고 있는지 확인할 수 있다.
이러한 기능을 활용하면 서버 이관 후 성능 이슈가 발생했을 때 신속하게 원인을 파악하고 해결할 수 있다.
2. ASH 보고서 생성 방법
ASH 보고서는 SQL 명령어를 사용하여 생성할 수 있으며, 일반적으로 ashrpt.sql 스크립트를 실행하여 HTML 또는 텍스트 형식의 보고서를 생성한다.
2.1 ASH 보고서 생성 SQL 실행 방법
ASH 보고서를 생성하려면 다음과 같이 SQL*Plus 또는 SQL Developer에서 명령어를 실행하면 된다.
이 명령을 실행하면 다음과 같은 입력을 요구한다.
- 보고서 형식 선택: TEXT 또는 HTML 중 선택 가능.
- 분석할 시간 범위 입력: 특정 기간 동안의 ASH 데이터를 분석할 수 있도록 시작 및 종료 시간을 입력.
- 보고서 저장 위치 지정: 보고서를 특정 디렉터리에 저장할 수 있도록 경로 설정.
보고서가 생성되면 HTML 또는 텍스트 파일로 저장되며, 이를 브라우저에서 열어 분석할 수 있다.
3. 특정 SQL 또는 세션에 대한 ASH 데이터 조회
ASH 보고서는 전체적인 시스템 상태를 분석하는 데 유용하지만, 특정 SQL이나 특정 세션에 대한 정보를 세부적으로 조회하고 싶을 때는 SQL 쿼리를 직접 실행하는 것이 더욱 효과적일 수 있다.
3.1 특정 SQL 실행 내역 조회
아래 SQL을 실행하면 특정 SQL이 어떤 세션에서 실행되었으며, 어떤 대기 이벤트가 발생했는지를 확인할 수 있다.
- SQL_ID: 조회하려는 SQL의 고유한 ID
- sample_time: SQL이 실행된 시간
- wait_class 및 event: 해당 SQL이 실행 중 발생한 대기 이벤트
이 정보를 기반으로 특정 SQL이 실행될 때 CPU를 많이 소비하는지, 디스크 I/O 대기가 발생하는지 등을 분석할 수 있다.
3.2 특정 세션의 활동 내역 조회
아래 쿼리를 실행하면 특정 세션이 수행한 작업과 대기 상태를 조회할 수 있다.
- session_id: 조회하려는 세션의 ID
- session_state: 현재 세션이 실행 중인지(IDLE인지) 확인 가능
- event: 세션이 대기 중인 이벤트
이 정보를 활용하면 특정 세션이 CPU를 과도하게 점유하는지, 또는 특정 이벤트 때문에 지연되고 있는지를 분석할 수 있다.
4. ASH 보고서를 활용한 성능 분석 방법
4.1 CPU 사용량이 높은 SQL 찾기
- CPU를 많이 사용하는 SQL을 찾고 튜닝을 통해 실행 속도를 개선할 수 있다.
4.2 I/O 대기 시간이 긴 SQL 분석
- 디스크 읽기/쓰기로 인해 실행 속도가 느려지는 SQL을 분석하고 인덱스 적용 또는 테이블 파티셔닝을 고려할 수 있다.
4.3 블로킹 세션(Blocking Session) 감지
- 다른 세션을 차단하고 있는 블로킹 세션을 감지하여 트랜잭션 록 문제를 해결할 수 있다.
ASH 보고서는 실시간 데이터베이스 성능 분석 및 문제 해결에 필수적인 도구다. 이를 활용하면 실행 중인 SQL과 대기 이벤트를 실시간으로 분석하고, 성능 저하의 원인을 신속하게 파악할 수 있다.
SQL 명령어를 활용하여 ASH 보고서를 생성하거나 특정 SQL과 세션을 조회하면, 데이터베이스의 성능 문제를 더욱 세밀하게 분석할 수 있다. 특히 서버 이관 후 성능 저하가 발생했을 때 ASH 데이터를 활용하면 신속하게 원인을 파악하고 대응할 수 있다.
'IT > AWR-ASH' 카테고리의 다른 글
SQL 실행 빈도 분석: 가장 많이 실행되는 SQL을 찾아 성능 최적화를 수행하는 방법 (0) | 2025.02.09 |
---|---|
락(Lock) 관련 대기 분석: 테이블 락, 행(Row) 락 등 트랜잭션 대기로 인한 문제 해결 (0) | 2025.02.09 |
디스크 I/O 대기 분석: 디스크 읽기/쓰기 지연이 성능 저하에 미치는 영향 분석 (0) | 2025.02.09 |
CPU 대기 이벤트 분석: CPU 사용량이 높은 SQL을 식별하고 최적화하는 방법 (0) | 2025.02.09 |
ASH 보고서에서 Wait Event 분석하기: 가장 많이 발생하는 대기 이벤트를 식별하는 방법. (0) | 2025.02.09 |
대기 이벤트란?: SQL 실행이 지연되는 원인을 분석하는 중요한 요소 (0) | 2025.02.09 |
ASH 데이터를 활용한 성능 분석: 특정 시간 동안 실행된 SQL 및 대기 이벤트 분석 (0) | 2025.02.09 |
ASH 보고서란?: Oracle Database의 실시간 세션 활동을 분석하는 보고서 (0) | 2025.02.09 |