owi 1
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 |
버퍼 캐시 정보 |