본문 바로가기
IT/DBA

[ASH] ACTIVE SESSION HISTORY

by 노후설계 2021. 2. 23.
반응형

오라클 DB를 운영하다 문제가 생겨 성능 개선 포인트를 찾을 때 유용하게 사용되는 뷰가 있는

v$active_session_history (이하 ash) 입니다.

 

뷰의 명세를 보고서 많은 정보를 찾을 수 있는 session의 활동 정보, SQL 수행빈도 등을 통하여 문제점에 접근 할 수 있습니다.

 

ash에서 모든 쿼리를 볼 수 있는 것은 아니고, 누락이 되는 쿼리들이 있는데 이는 _ASH_SAMPLING_INTERVAL 숨김 파라미터에서 지정한 주기로 (기본 값 1초) 활동 중인 세션들 중 샘플을 추출하여 공유 풀에 위치한 ASH 버퍼에 저장하기 때문에 누락이 생기고 파라미터 조정을 통하여 더욱 많은 쿼리를 샘플링 할 수 있습니다.

 

<ASH 파라미터>

파라미터 의미 기본값
_ASH_DISK_WRITE_ENABLE ASH 정보를 디스크에 내려쓸지 여부 지정 TRUE
_ASH_DISK_FILTER_RATIO 메모리에 있는 ASH 정보를 디스크로 내려쓸 비율 지정 10
_ASH_EFLUSH_TRIGGER ASH 정보를 디스크로 내려쓰는 주기 지정, ASH 버퍼의 사용률이 이 파라미터에서 지정한 값 이상 사용되면 ASH 정보를 디스크로 내려씀 66
_ASH_ENABLE ASH 정보를 수집하고 디스크에 내려쓸지 여부 결정 TRUE
_ASH_SAMPLE_ALL 모든 접속 세션을 ASH 정보로 저장할지 지정 FALSE
_ASH_SAMPLING_INTERVAL ASH 정보 수집 주기 지정(단위: 1/1000초) 1000

 

ASH 버퍼 즉, 메모리 상에 기록되어 DBMS 재기동 시에 해당 정보는 사라지게 되고, 메모리 용량이 가득차면 오래된 데이터 부터 순차적으로 삭제 되게 됩니다.

 

<버퍼 사이즈 확인 하기>

SQL> select * from v$sgastat where name = 'ASH buffers';

POOL NAME BYTES
------------   --------------------------  -----------
shared pool        ASH buffers        32505856

 

<v$active_session_history 의 자주 보는 정보>

SAMPLE_ID

NUMBER

sample ID

SAMPLE_TIME

TIMESTAMP(3)

샘플이 표본화된 시간

IS_AWR_SAMPLE

VARCHAR2(1)

해당 sample이 AWR에 Flush 되었거나, 될 예정인지 또는 되지 않았는지를 나타내는 지표 (Y) or not (N)

SESSION_ID

NUMBER

Session id , V$SESSION.SID 와 조인 가능

SESSION_SERIAL#

NUMBER

Session serial 번호,  V$SESSION의 SID와 조인 가능

SESSION_TYPE

VARCHAR2(10)

Session type:

  • FOREGROUND

  • BACKGROUND

FLAGS

NUMBER

 앞으로 사용 위해 예약

USER_ID

NUMBER

Oracle user 식별자,  V$SESSION의 USER#와 조인 가능

SQL_ID

VARCHAR2(13)

SQL 문장의 식별자

IS_SQLID_CURRENT

VARCHAR2(1)

SQL_ID column 에 속한 SQL 식별자가 수행되었는가에 대한 지표 (Y) or not (N)

SQL_CHILD_NUMBER

NUMBER

Session의 SQL 문장의 Child number

SQL_OPCODE

NUMBER

SQL 문장이 어떤 작업의 단계에 속해 있는지를 나타내는 지표, V$SESSION의 COMMAND와 조인 가능

 

SQL_OPNAME

VARCHAR2(64)

SQL command 이름

FORCE_MATCHING_SIGNATURE

NUMBER

CURSOR_SHARING parameter 를 FORCE로 setting 했을 때 사용되는 Signature

TOP_LEVEL_SQL_ID

VARCHAR2(13)

top level SQL 문장의 식별자

TOP_LEVEL_SQL_OPCODE

NUMBER

top level SQL 문장이 어떤 작업의 단계에 속해 있는지를 나타내는 지표

SQL_PLAN_HASH_VALUE

NUMBER

Cursor에 대한 SQL 실행 계획의 숫자적인 표현 이 정보는 모든 Session Sample에 대해서 사용이 가능하지 않을 수 있지만, V$SESSION은 이 정보를 포함하고 있지 않음

SQL_PLAN_LINE_ID

NUMBER

SQL plan line ID

SQL_PLAN_OPERATION

VARCHAR2(30)

Plan operation 이름

SQL_PLAN_OPTIONS

VARCHAR2(30)

Plan operation options

SQL_EXEC_ID

NUMBER

SQL 실행 식별자

SQL_EXEC_START

DATE

SQL이 수행된 시간

EVENT

VARCHAR2(64)

SESSION_STATE = WAITING 인 경우 Session의 Event는 표본화 되는 시간을 기다림.

SESSION_STATE = ON CPU인 경우 이 Column은 NULL

EVENT_ID

NUMBER

대기하고 있거나, 마지막으로 대기한 Session의 Resource나 Event의 식별자

EVENT#

NUMBER

대기하고 있거나, 마지막으로 대기한 Session의 Resource나 Event의 Number

WAIT_CLASS

VARCHAR2(64)

Session이 기다리는 Event의 Wait class 이름, V$SESSION의 WAIT_CLASS와 조인 가능

WAIT_TIME

NUMBER

대기한 총 WAIT Time, 이 값이 0일 경우 Session은 표본화를 기다리는 중으로 간주
V$SESSION의 WAIT_TIME과 조인 가능

SESSION_STATE

VARCHAR2(7)

Session 상태:

  • WAITING

  • ON CPU

 

 

반응형