성장하는yw 2014. 12. 8. 17:09

OWI(Oracle Wait Interface)

프로세스가 겪는 대기현상을 기록하고 관찰하는 일련의 기능과 인터페이스, 방법론을 통칭


xxx 이벤트를 대기한다 

= 자기 순서를 기다린다. 

프로세스가 특정 자원을 획득하지 못하고 대기하는 것

사용예) 

db file sequential read 이벤트를 대기한다. 

buffer busy waits 이벤드를 대기한다.


이벤트 혹은 대기 이벤트

프로세스가 특정 자원을 획득할 때까지 발생하기를 기다리는 사건


OWI 관점에서의 리소스 

리소스

하나의 인스턴스에 수십 개에 달하는 CPU, 수십 기가에 달하는 버퍼 캐시, 수십테라에 달하는 저장 공간이 사용되는 것을 말함


대기이벤트는 P1, P2, P3 세 개의 파라미터로 통해 현재 대기하는 리소스를 표현함

대기 이벤트의 P1, P2, P3의 값은 V$SESSION_WAIT 뷰나 V$SESSION 뷰와 같은 다이나믹 뷰나

SQL Trace 파일 등을 통해 관찰이 가능함 

각 이벤트마다 P1, P2, P3 의 의미는 각각 다르며 , V$EVENT_NAME 뷰를 통해 확인 가능


오라클에서의 대기현상 표현

대기회수 (회수) , 타임아웃회수 (기다렸는데 못 들어간 시간), 대기시간 (기다린 시간) 으로 표현


"프로세스는 특정시간동안 latch : library cache 이벤트를 총 10000번 대기하고, 

그 중 다섯 번의 타임아웃이 발생했으며 총 대기시간은 10초였다."


이 중 가장 의미 있는 것은 대기시간임(경합의 정도를 가장 정확하게 분석할 수 있기때문)


실제로 작업을 한 시간(Service time) + 이벤트를 대기한 시간(Wait time) = 응답시간(Response Time)


대체적으로 Service time, Wait time 낮추면 자연스럽게 응답시간이 낮아지고, 사용자의 성능만족도는 증가함

상황에 따라 다를 수도 있음



OWI  툴


>> OWI 다이나믹 뷰

>> Extended SQL Trace 실행계획 툴 보는 것 많이 사용함, 책을 좀 더 공부하고 다시 이 부분으로 와서 공부할 예정

>> oradebug와 덤프(dump) 메모리 덤프 뜨는 것, 반드시 sysdba 권한으로 실행 - 나중에 다시 봄 


V$EVENT_NAME

오라클에 정의된 모든 대기이벤트에 대한 참조성 정보를 제공

10g  부터 대기클래스(Wait Class)에 대한 정보가 추가됨


V$EVENT_NAME.WAIT_CLASEE 컬럼 참조시 특정 이벤트가 어떤 클래스에 속해있는지 조회 가능



V$SYSTEM_EVENT (DB 껐다키면 정보 사라짐)

인스턴스 가동 후 지금까지 모든 세션에서 발생한 대기이벤트의 누적정보


V$SESSION_EVENT (접속해 있는 모든 사용사별로 정보를 볼 수 있음)

현재 접속되어 있는 각 개별 세션별 대기이벤트의 누적 정보


V$SESSION_WAIT (현재 대기하는 유저의 정보를 볼 수 있음)

각 세션이 현재 대기하고 있는 이벤트에 대한 상세정보를 제공함


V$SESSION_WAIT_HISTORY

V$SESSION_WAIT 정보를 세션별로 최대 10개까지 누적해서 제공함


V$SYSTEM_WAIT_CLASS

V$SYSTEM_EVENT와 동일한 차원의 값을 클래스 기준으로 제공


V$SESSION_WAIT_CLASS

V$SESSION_EVENT와 동일한 차원의 값을 클래스 기준으로 제공


V$EVENT_HISTOGRAM

각 대기이벤트에 대해서 대기시간의 구간(버킷)별로 대기회수를 보여줌

10g부터는 V$LATCH 뷰의 SLEEP1~SLEEP4 컬럼의 값은 사용되지 않으며

V$EVENT_HISTOGRAM뷰가 이 컬럼들을 대신함


기타 중요 다이나믹 뷰

대기 현상을 분석하기 위해서는 다음과 같은 다이나믹 뷰를 활용할 수 있어야 함



 뷰 이름

 정보

V$SESSION

세션 정보 

V$ACTIVE_SESSION_HISTORY 

세션 히스토리 정보 

V$PROCESS

프로세스 정보 

V$TRANSACTION

트랜잭션 정보 

V$LATCH, V$LATCH_PARENT, V$LATCH_CHILDREN, V$LATCH_HOLDER 

래치 정보 

 V$LOCK, V$LOCKED_OBJECT, V$ENQUEUE_LOCK

락 정보 

V$SQL

SQL 정보 

V$LIBRARYCACHE, X$KGLLK, X$KGLPN 

Library Cache 정보

V$ROWCACHE, V$ROWCACHE_PARENT 

Row Cache 정보 

V$SGASATA 

SGA 정보 

V$SEGMENT_STATISTICS

세그먼트 레벨 통계 정보 

V$SESS_TIME_MODEL, V$SYS_TIME_MODEL

Time Model 정보 

V$BH, X$BH

버퍼 캐시 정보