[Oracle] gc buffer busy

HYEOB KIM·2023년 10월 26일
0

Oracle

목록 보기
54/58
post-custom-banner

gc buffer busy

RAC 환경에서 딜레이가 발생하는 경우 gc buffer busy에 관련된 wait event들을 확인해봐야 합니다.
(AWR에서도 확인 가능)

gc buffer busy는 로컬 프로세스가 읽고자 하는 블록이 현재 리모트 노드의 요청에 의해 사용 중임을 의미합니다.

gc buffer busy acquire
: 세션이 원격 인스턴스의 버퍼 캐시에서 버퍼를 읽으려고 시도하지만 이미 다른 세션에서 버퍼를 읽고 있는 경우 gc buffer busy acquire 대기 이벤트가 기록됩니다.

gc buffer busy release
: 세션이 로컬 인스턴스의 버퍼 캐시에서 버퍼를 읽으려고 시도하지만 해당 원격 인스턴스에 연결된 세션이 이미 로컬 캐시에서 원격 인스턴스의 버퍼 캐시로 버퍼를 읽고 있는 경우 gc buffer busy release 대기 이벤트가 기록됩니다.

해결방안

  • 핫 블록이 가장 일반적인 원인. 핫 블록을 분산시킴으로 문제 해결.
  • 세그먼트 레벨의 파티셔닝, 적절한 인덱스 생성, 우편향 인덱스 현상 해소, 시퀀스 캐시 크기의 증가, PCTFREE 증가 등.
  • FLM을 사용하는 경우에는 세그먼트 헤더 블록이 버퍼 경합의 원인이 되므로 FREELIST GROUPS 속성을 노드 수와 동일하게 설정.
  • SQL 튜닝을 통해 불필요하게 많은 블록이 교환되는 것을 방지.
  • 동일한 세그먼트에 대한 대량의 DML 작업이 여러 노드에서 동시 다발적으로 발생하면 어플리케이션 실행을 적절히 분배.

참고

profile
Devops Engineer
post-custom-banner

0개의 댓글