서버 이관 프로젝트를 수행하는 과정에서 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 데이터베이스와 달리 스토리지 및 네트워크 계층에서 성능 최적화를 지원하는 기능을 제공한다.
- Smart Scan
- SQL 실행 시 필요한 데이터만 스토리지에서 직접 필터링하여 데이터베이스 노드로 전송하는 기능.
- Full Table Scan을 수행할 때 데이터베이스 노드의 부하를 줄이고, 디스크 I/O를 최소화할 수 있다.
- Smart Flash Cache
- 자주 사용되는 데이터를 Exadata 스토리지의 고속 플래시 메모리에 저장하여 성능을 향상.
- 읽기 성능을 최적화하고, 디스크 I/O 병목을 줄이는 데 기여.
- Hybrid Columnar Compression(HCC)
- 데이터를 컬럼 단위로 압축하여 저장 공간을 절약하고, I/O 성능을 개선.
- 읽기 집중적인 워크로드(분석 쿼리)에서 특히 효과적.
- 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를 활용한 성능 최적화 전략
- Smart Scan 최적화
- Full Table Scan을 수행하는 SQL이 Smart Scan을 활용하도록 실행 계획을 조정.
- HINT 사용 예제:
sql복사편집SELECT /*+ FULL(emp) PARALLEL(emp,4) */ * FROM employees emp;
- Flash Cache 활용 극대화
- 자주 사용하는 테이블을 Flash Cache에 저장하도록 설정.
- ALTER TABLE 명령어 사용:
sql복사편집ALTER TABLE employees STORAGE (CELL_FLASH_CACHE KEEP);
- 네트워크 병목 최소화
- 노드 간 블록 전송을 줄이기 위해 SQL 튜닝 수행.
- 조인 순서 변경 및 인덱스 최적화.
Oracle Exadata 환경에서는 Smart Scan, Flash Cache, InfiniBand 네트워크 등의 특성을 고려하여 성능 분석을 수행해야 한다.
ASH 데이터를 활용하면 실시간으로 SQL 실행 상태를 분석하고, Smart Scan 활용 여부, 디스크 I/O 병목, 네트워크 지연 등을 감지할 수 있으며, 이를 기반으로 최적화 작업을 수행할 수 있다.
'IT > AWR-ASH' 카테고리의 다른 글
ASH 데이터와 TKPROF 비교: SQL 추적 도구인 TKPROF와 ASH의 차이점. (0) | 2025.02.23 |
---|---|
ASH 데이터를 활용한 커넥션 풀 성능 분석: 데이터베이스 연결 풀의 성능 문제 진단. (0) | 2025.02.22 |
ASH를 이용한 장기적인 성능 트렌드 분석: 장기적인 관점에서 데이터베이스 성능을 모니터링. (0) | 2025.02.21 |
ASH에서 롤백(Rollback) 이벤트 분석: 롤백이 발생하는 원인을 분석하고 해결하는 방법. (0) | 2025.02.20 |
ASH 데이터를 활용한 애플리케이션 성능 분석: 특정 애플리케이션이 사용하는 SQL 성능 분석. (0) | 2025.02.18 |
ASH 데이터를 활용한 세션 히스토리 조회: 특정 사용자의 세션 히스토리를 조회하는 방법. (0) | 2025.02.17 |
ASH에서 Temp Tablespace 사용량 분석: 정렬 연산 등의 임시 테이블스페이스 사용량을 분석. (0) | 2025.02.16 |
ASH와 Statspack 비교: Oracle 성능 모니터링 도구인 Statspack과 ASH의 차이점 분석. (0) | 2025.02.15 |