h1.10.대기 이벤트란
h3.(1) 대기 이벤트란?
- 오라클 인스턴스도 프로세스 간 커뮤니케이션과 상호작용이 필요하고 때로는 다른 프로세스가 일을 마칠 때까지 기다려야만 하는 상황이 자주 발생한다.
- 오라클 프로세스는 일을 계속 진행할 수 있는 조건이 충족될 때까지 수면(sleep) 상태에 빠지는 현상이 발생하는 것을 '대기 이벤트(Wait Event)' 라고 부른다. 그리고 그때마다 오라클은 그 상태정보를 파일 또는 SGA 메모리 내에저장해둔다.
h3.(2) 대기 이벤트는 언제 발생할까?
- 다른 프로세스가 일을 끝마치기를 기다릴 때 발생하는 대기 이벤트가 지속적으로 많이 발생하면 데이터베이스에 병목이 있음을 알리는 신호지만 모든 대기 이벤트가 그렇지는않다.
1. 자신이 필요로 하는 특정 리소스가 다른 프로세 스에 의해 사용 중일 때
2. 다른 프로세 스에 의해 선행작업이 완료되기 를 기다랄 때
3. 할 일 이 없을 때(- idle 대기 이벤트)
h3.(3) 대기 이벤트는 언제 사라질까?
- 오라클 프로세스도 수면 상태로 들어갈 때 타이머를 설정한다.
- 타임아웃(timeout) 설정 값은 대기 이벤트마다 모두 다르다.
- DBWR와 LGWR간상호작용에 의한 대기 이벤트 발생 시 타임아웃은 둘 다 3초
- 커멋할 때마다 LGWR를 깨워 Redo 버퍼를 비우도록 할 때 발생하는 log file sync 대기 이벤트의 타임아웃은 1초
- buffer busy wait 대기 이벤트도 1초
- enqueue 관련 Lock 대기 이벤트의 타임아웃은 3초
h3.(4) 래치와 대기 이벤트 개념 명확화
- v$latch 뷰를 조회해 보면, 각 래치 종류별로 gets, misses, spin_gets, sleeps 항목들 이 집계돼 있는데
- gets : 래치 요청 횟수를 말한다 .
- misses 다른 프로세스에 의해 자원이 사용 중이어서 첫 번째 시도에서 곧바로 래치를 얻지 못한 횟수다.
- spin_gets : 래치를 요청한 첫 번째 시도에서 실패후 spin하는 과정에서 래치 획득에 성공한 횟수다.
- sleeps : 래치를 얻지못하여 대기 상태로 빠진횟수