행위

Gc wait event

DB CAFE

thumb_up 추천메뉴 바로가기


gc cr/current grant 2-way 프리 블록에 대한 권한을 부여 받는 경우 오라클 10g에서는 gc current grant 2-way 이벤트를 대기한 것으로 관찰되지만, 오라클 9i에서 global cache open x 이벤트를 대기한 것으로 관찰됩니다.

gc cr/current grant 2-way 이벤트는 gc cr/current request 이벤트에 대한 Fixed-up 이벤트로, 블록을 요청한 프로세스가 마스터 노드로부터 블록을 읽을 권한을 부여 받았음을(Grant) 의미합니다.

  • gc cr/current request 이벤트가 gc cr/current grant 2-way 이벤트로 바뀌는(Fixed-up되는) 흐름은 다음과 같습니다.
  1. 요청 노드의 유저 프로세스가 특정 데이터 블록을 읽고자 한다.
  2. 유저 프로세스는 해당 데이터 블록의 적절한 버전이 로컬 버퍼 캐시에 없는 것을 확인하고, 마스터 노드의 LMS(Lock Monitoring Services) 프로세스에 블록 전송을 요청한다. 유저 프로세스는 응답을 받을 때까지 gc cr/current request 이벤트를 대기한다.
  3. 마스터 노드의 LMS 프로세스는 GRD를 참조하여, 클러스터의 어떤 노드도 해당 블록 이미지를 로컬 캐시에 가지고 있지 않다는 것을 확인하고, 요청 노드에 블록을 직접 읽을 권한을 부여한다.
  4. 유저 프로세스는 블록을 읽을 권한을 부여 받은 후, gc cr/current request 이벤트를 Fixed-up 이벤트인 gc cr/current grant 2-way 이벤트로 변경한다.

권한을 부여 받은 후에는 일반적으로 싱글 블록 I/O를 통해 해당 블록을 디스크에서 직접 읽어 들이며, db file sequential read 이벤트에 대한 대기가 뒤따른다. 만일 로컬 캐시에 BL 락을 업그레이드(S→X) 혹은 다운그레이드(X→S) 가능한 버전의 블록이 있다면 해당 블록에 대해 락 변환을 수행한 후 사용한다.

출처: https://12bme.tistory.com/337 [길은 가면, 뒤에 있다.:티스토리]