서버 이관 프로젝트를 수행하는 과정에서 데이터베이스 성능을 지속적으로 모니터링하고 최적화하는 것은 매우 중요한 과제다. 특히 ASH(Active Session History) 데이터는 데이터베이스에서 실행 중인 세션의 성능을 분석하는 데 중요한 역할을 하며, 성능 저하 원인을 파악하는 핵심적인 자료가 된다.
ASH 데이터는 Oracle 데이터베이스가 초 단위로 활성 세션 정보를 수집하는 방식으로 운영되며, 일정 기간 동안 보관되었다가 자동으로 삭제되는 특성을 가진다. 하지만 보관 기간이 너무 짧으면 장기적인 성능 분석이 어려워지고, 너무 길면 불필요한 데이터가 쌓이면서 시스템 리소스를 과도하게 사용할 수 있다.
따라서 적절한 ASH 데이터 보관 기간을 설정하고 관리하는 것은 데이터베이스 성능 모니터링과 튜닝을 위한 중요한 과정이다. 본 글에서는 ASH 데이터의 기본적인 보관 구조와 설정 방법, 보관 기간을 최적화하는 방법, 그리고 ASH 데이터를 효과적으로 관리하는 전략을 설명한다. 이를 통해 서버 이관 후 데이터베이스 성능 분석을 원활하게 수행하고, 필요할 때 적절한 데이터를 유지할 수 있도록 한다.
ASH 데이터 보관 구조 이해
ASH 데이터란?
ASH(Active Session History)는 Oracle 데이터베이스의 V$ACTIVE_SESSION_HISTORY 뷰에 저장되는 성능 분석 데이터다. Oracle은 초 단위로 활성 세션 정보를 수집하여 SGA(Shared Global Area)에 저장하며, 일정 시간이 지나면 AWR(Automatic Workload Repository) 스냅샷에 일부 데이터가 영구적으로 저장된다.
ASH 데이터의 보관 기간은 메모리(SGA) 내 보관 기간과 AWR 내 보관 기간으로 나뉜다.
- SGA 내 ASH 데이터
- 메모리(SGA)에 보관되는 ASH 데이터는 일반적으로 약 1시간에서 몇 시간까지만 유지된다.
- Oracle은 메모리 사용량을 최적화하기 위해 오래된 데이터를 자동으로 삭제한다.
- AWR 스냅샷으로 저장된 ASH 데이터
- AWR 스냅샷이 생성될 때 ASH 데이터의 일부가 AWR 테이블로 이동하여 장기적으로 보관된다.
- AWR에 저장된 ASH 데이터는 보관 기간이 설정된 만큼 유지되며, 기본적으로 8일 동안 저장된다.
따라서 ASH 데이터를 장기적으로 보관하고 싶다면 AWR의 보관 기간을 조정해야 하며, ASH 데이터를 보다 길게 유지하고 싶다면 별도의 저장 전략이 필요하다.
ASH 데이터 보관 기간 설정 방법
SGA 내 ASH 데이터 보관 기간 조정
ASH 데이터는 메모리(SGA)의 크기에 따라 보관 기간이 달라진다.
현재 SGA에서 보관되는 ASH 데이터 크기를 확인하려면 다음 SQL을 실행한다.
SELECT name, value FROM v$parameter WHERE name = 'shared_pool_size'; |
- shared_pool_size: SGA에서 ASH 데이터를 포함한 공유 메모리 크기를 설정하는 파라미터.
SGA에서 ASH 데이터를 더 오래 보관하려면 Shared Pool의 크기를 조정하면 된다.
ALTER SYSTEM SET shared_pool_size = 1024M SCOPE=SPFILE; SHUTDOWN IMMEDIATE; STARTUP; |
- shared_pool_size를 증가시키면 ASH 데이터가 메모리에 더 오래 유지될 수 있다.
- 단, SGA 크기를 너무 크게 설정하면 전체적인 메모리 사용량이 증가하므로 신중하게 설정해야 한다.
AWR에 저장되는 ASH 데이터 보관 기간 조정
AWR에서 ASH 데이터를 더 오래 보관하려면 보관 기간을 조정해야 한다. 현재 AWR의 보관 기간을 확인하려면 다음 SQL을 실행한다.
SELECT retention FROM dba_hist_wr_control; |
- retention: AWR 데이터 보관 기간(단위: 분).
- 기본적으로 8일(11,520분)로 설정되어 있다.
AWR 보관 기간을 변경하려면 다음과 같이 실행한다.
BEGIN DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings( retention => 20160, -- 14일(분 단위) interval => 60 -- 스냅샷 생성 주기 (60분) ); END; |
- retention을 20160으로 설정하면 AWR 데이터를 14일 동안 유지하게 된다.
- interval을 60으로 설정하면 1시간마다 스냅샷이 생성된다.
AWR 보관 기간을 늘리면 장기적인 성능 분석이 가능하지만, AWR 테이블의 크기가 증가할 수 있으므로 디스크 용량을 고려해야 한다.
ASH 데이터를 효과적으로 관리하는 방법
불필요한 ASH 데이터 삭제
AWR 보관 기간이 길어지면 필요 없는 ASH 데이터가 쌓이면서 테이블 크기가 증가할 수 있다. 특정 기간의 데이터를 삭제하려면 다음 SQL을 실행한다.
BEGIN DBMS_WORKLOAD_REPOSITORY.drop_snapshot_range( low_snap_id => 100, high_snap_id => 200 ); END; |
- low_snap_id ~ high_snap_id 범위에 해당하는 AWR 데이터를 삭제하여 공간을 확보할 수 있다.
ASH 데이터를 별도로 저장하여 장기 보관
SGA 내 ASH 데이터는 오래 보관되지 않으므로 중요한 ASH 데이터를 별도로 저장하는 것이 필요할 수 있다. 이를 위해 ASH 데이터를 주기적으로 별도 테이블에 저장하는 방식을 사용할 수 있다.
CREATE TABLE ash_backup AS SELECT * FROM v$active_session_history WHERE sample_time >= SYSDATE - 7; -- 최근 7일 데이터 저장 |
- ASH 데이터를 주기적으로 백업하면 필요할 때 상세 분석이 가능하다.
- 특정 기간 동안의 성능 이력을 장기적으로 보관하는 용도로 활용할 수 있다.
이렇게 저장한 ASH 데이터는 이후 분석할 때 유용하며, 서버 이관 후 예상치 못한 성능 변화가 발생할 경우 과거 데이터를 기반으로 비교 분석할 수 있다.
ASH 데이터 보관 전략 최적화
ASH 데이터를 효과적으로 관리하기 위해서는 보관 기간을 적절히 설정하고, 필요에 따라 데이터를 별도로 저장하는 전략을 활용하는 것이 중요하다.
- SGA 내 ASH 데이터 보관 기간 조정
- Shared Pool 크기를 늘려 ASH 데이터를 메모리에 더 오래 유지.
- AWR에 저장되는 ASH 데이터 보관 기간 최적화
- 기본 8일에서 14~30일 정도로 늘려 장기적인 성능 분석 가능하도록 설정.
- 불필요한 AWR 데이터 삭제
- 오래된 스냅샷을 삭제하여 공간 확보.
- 중요한 ASH 데이터 별도 저장
- 장기 분석이 필요한 경우 별도의 테이블에 주기적으로 백업하여 보관.
이러한 방법을 활용하면 데이터베이스 성능을 지속적으로 모니터링하면서도 불필요한 리소스 사용을 줄일 수 있다.
ASH 데이터는 Oracle 데이터베이스 성능 분석에서 중요한 역할을 하며, 보관 기간을 적절히 설정하고 관리하는 것이 필수적이다.
SGA 내 ASH 데이터는 기본적으로 수 시간 정도 유지되며, AWR 보관 기간을 조정하면 장기적인 성능 분석이 가능하다. 또한, 필요에 따라 ASH 데이터를 별도로 저장하면 성능 튜닝을 위한 중요한 자료로 활용할 수 있다.
'IT > AWR-ASH' 카테고리의 다른 글
ASH 데이터를 활용한 세션 히스토리 조회: 특정 사용자의 세션 히스토리를 조회하는 방법. (0) | 2025.02.17 |
---|---|
ASH에서 Temp Tablespace 사용량 분석: 정렬 연산 등의 임시 테이블스페이스 사용량을 분석. (0) | 2025.02.16 |
ASH와 Statspack 비교: Oracle 성능 모니터링 도구인 Statspack과 ASH의 차이점 분석. (0) | 2025.02.15 |
ASH 데이터를 활용한 트랜잭션 분석: 대량 트랜잭션이 시스템에 미치는 영향 분석. (0) | 2025.02.15 |
Oracle RAC 환경에서 ASH 활용하기: 다중 노드 환경에서 세션 성능을 분석하는 방법. (0) | 2025.02.13 |
조인 최적화와 ASH 분석: 조인이 많은 SQL의 실행 패턴을 분석하여 최적화하는 방법. (0) | 2025.02.11 |
인덱스 미사용 SQL 분석: ASH에서 특정 SQL이 인덱스를 사용하고 있는지 확인하는 방법. (0) | 2025.02.11 |
ASH 데이터를 활용한 병목 현상 해결하기: 시스템 성능을 저하시킬 수 있는 병목 요소 분석. (0) | 2025.02.11 |