본문 바로가기
IT/AWR-ASH

Oracle Exadata에서 ASH 보고서 활용법: Exadata 환경에서 ASH를 활용한 성능 분석 기법.

by free-inf 2025. 2. 19.

서버 이관 프로젝트를 수행하는 과정에서 Oracle Exadata 환경에서는 기존의 일반적인 데이터베이스 환경과 다른 방식으로 성능을 분석하고 최적화할 필요가 있다. Exadata는 대용량 데이터를 빠르게 처리하기 위한 고성능 데이터베이스 어플라이언스로, Exadata Storage Server, Smart Scan, Hybrid Columnar Compression 등의 기술을 활용하여 성능을 극대화한다.

 

이러한 Exadata 환경에서 데이터베이스의 성능을 지속적으로 모니터링하고 최적화하기 위해 ASH(Active Session History) 보고서를 효과적으로 활용하는 것이 중요하다. ASH는 Oracle이 초 단위로 활성 세션 정보를 기록하여 실시간 성능 분석을 가능하게 하는 기능으로, Exadata에서 SQL 실행 패턴, 스토리지 사용량, 대기 이벤트, 네트워크 병목 등의 요소를 분석하는 데 활용할 수 있다.

 

본 글에서는 Exadata 환경에서 ASH 데이터를 활용하여 성능 문제를 분석하는 방법과, Exadata의 특성을 고려한 최적화 기법을 상세히 설명한다. 이를 통해 서버 이관 후 Exadata에서 발생할 수 있는 성능 문제를 신속하게 감지하고 해결할 수 있도록 한다.


Oracle Exadata의 주요 특성과 ASH 활용 필요성

Exadata의 주요 성능 최적화 기술

Exadata는 일반적인 Oracle 데이터베이스와 달리 스토리지 및 네트워크 계층에서 성능 최적화를 지원하는 기능을 제공한다.

  1. Smart Scan
    • SQL 실행 시 필요한 데이터만 스토리지에서 직접 필터링하여 데이터베이스 노드로 전송하는 기능.
    • Full Table Scan을 수행할 때 데이터베이스 노드의 부하를 줄이고, 디스크 I/O를 최소화할 수 있다.
  2. Smart Flash Cache
    • 자주 사용되는 데이터를 Exadata 스토리지의 고속 플래시 메모리에 저장하여 성능을 향상.
    • 읽기 성능을 최적화하고, 디스크 I/O 병목을 줄이는 데 기여.
  3. Hybrid Columnar Compression(HCC)
    • 데이터를 컬럼 단위로 압축하여 저장 공간을 절약하고, I/O 성능을 개선.
    • 읽기 집중적인 워크로드(분석 쿼리)에서 특히 효과적.
  4. InfiniBand 네트워크
    • Exadata 노드 간 초고속 데이터 전송을 지원하여 병렬 처리 및 분산 쿼리 성능을 향상.

Exadata 환경에서는 이러한 최적화 기술이 SQL 실행 방식에 큰 영향을 미치므로, 성능 문제를 정확히 진단하려면 ASH 데이터를 활용한 분석이 필요하다.


ASH 데이터를 활용한 Exadata 성능 분석 방법

1. Smart Scan이 정상적으로 동작하는지 확인

Exadata의 핵심 기능인 Smart Scan이 적용되지 않으면 Full Table Scan 시 불필요한 데이터 전송이 증가하고 성능이 저하될 수 있다. ASH 데이터를 활용하여 Smart Scan이 제대로 수행되고 있는지 확인할 수 있다.

SELECT 
  sql_id, 
  COUNT(*) AS smart_scan_usage 
FROM 
  v$active_session_history 
WHERE 
  event = 'cell smart table scan' 
  AND sample_time >= SYSDATE - (30 / 1440) -- 최근 30분 조회 
GROUP BY sql_id ORDER BY smart_scan_usage DESC;
  • event = 'cell smart table scan' → Smart Scan이 수행된 SQL을 조회.
  • smart_scan_usage → Smart Scan이 발생한 횟수.

Smart Scan이 발생하지 않는다면, 해당 SQL이 Smart Scan을 활용할 수 있도록 힌트를 추가하거나 실행 계획을 조정해야 한다.


2. Exadata Storage Server에서 발생하는 대기 이벤트 분석

Exadata 환경에서는 스토리지에서 발생하는 I/O 관련 대기 이벤트를 분석하는 것이 중요하다.

SELECT 
  sql_id, 
  event, 
  COUNT(*) AS wait_count 
FROM 
  v$active_session_history 
WHERE 
  wait_class = 'User I/O' 
  AND sample_time >= SYSDATE - (30 / 1440) 
GROUP BY 
  sql_id, 
  event 
ORDER BY 
  wait_count DESC;
  • wait_class = 'User I/O' → 디스크 I/O 대기 발생 SQL을 조회.
  • event → Exadata 스토리지에서 발생한 주요 대기 이벤트.

주요 대기 이벤트의 의미는 다음과 같다.

  • cell single block physical read → 스토리지에서 단일 블록을 읽는 경우.
  • cell smart table scan → Smart Scan이 수행된 경우.
  • cell flash cache read → 플래시 캐시에서 데이터를 읽는 경우.

이 데이터를 활용하면 스토리지 I/O 병목을 파악하고, Smart Scan이 제대로 활용되지 않는 SQL을 최적화할 수 있다.


3. Smart Flash Cache 활용 분석

Smart Flash Cache는 Exadata 스토리지에서 자주 사용되는 데이터를 캐싱하여 읽기 성능을 최적화하는 기능이다. ASH 데이터를 활용하여 Flash Cache에서 데이터를 읽고 있는지 확인할 수 있다.

SELECT 
  sql_id, 
  COUNT(*) AS flash_cache_reads 
FROM 
  v$active_session_history 
WHERE 
  event = 'cell flash cache read' 
  AND sample_time >= SYSDATE - (30 / 1440) 
GROUP BY 
  sql_id 
ORDER BY 
  flash_cache_reads DESC;
  • event = 'cell flash cache read' → Smart Flash Cache에서 데이터를 읽은 SQL을 조회.
  • flash_cache_reads → Flash Cache에서 데이터를 읽은 횟수.

이 데이터를 활용하면 어떤 SQL이 Flash Cache에서 데이터를 효과적으로 읽고 있는지 확인할 수 있으며, 캐싱 정책을 조정하여 성능을 최적화할 수 있다.


4. InfiniBand 네트워크 성능 분석

Exadata는 노드 간 데이터 전송을 InfiniBand 네트워크를 통해 수행하므로, 네트워크 병목이 발생하는 경우 성능 저하가 발생할 수 있다.

SELECT 
  sql_id, 
  event, 
  COUNT(*) AS network_waits 
FROM 
  v$active_session_history 
WHERE 
  event IN (
    'gc buffer busy', 'gc current block busy', 
    'gc cr block busy'
  ) 
  AND sample_time >= SYSDATE - (30 / 1440) 
GROUP BY 
  sql_id, 
  event 
ORDER BY 
  network_waits DESC;
 
  • gc buffer busy → RAC 노드 간 버퍼 전송 대기 발생.
  • gc current block busy → RAC 환경에서 블록을 가져오는 동안 발생하는 대기.
  • gc cr block busy → Consistent Read 블록 전송이 지연된 경우.

이 데이터를 활용하면 네트워크 부하가 높은 SQL을 분석하고, InfiniBand 네트워크 튜닝이 필요한지 여부를 판단할 수 있다.


Exadata에서 ASH를 활용한 성능 최적화 전략

  1. Smart Scan 최적화
    • Full Table Scan을 수행하는 SQL이 Smart Scan을 활용하도록 실행 계획을 조정.
    • HINT 사용 예제:
      sql
      복사편집
      SELECT /*+ FULL(emp) PARALLEL(emp,4) */ * FROM employees emp;
  2. Flash Cache 활용 극대화
    • 자주 사용하는 테이블을 Flash Cache에 저장하도록 설정.
    • ALTER TABLE 명령어 사용:
      sql
      복사편집
      ALTER TABLE employees STORAGE (CELL_FLASH_CACHE KEEP);
  3. 네트워크 병목 최소화
    • 노드 간 블록 전송을 줄이기 위해 SQL 튜닝 수행.
    • 조인 순서 변경 및 인덱스 최적화.

Oracle Exadata 환경에서는 Smart Scan, Flash Cache, InfiniBand 네트워크 등의 특성을 고려하여 성능 분석을 수행해야 한다.

ASH 데이터를 활용하면 실시간으로 SQL 실행 상태를 분석하고, Smart Scan 활용 여부, 디스크 I/O 병목, 네트워크 지연 등을 감지할 수 있으며, 이를 기반으로 최적화 작업을 수행할 수 있다.