gc buffer busy: 대기(RAC): 인스턴스 간 전송 중인 cache fusion 블록에 대한 경합
Oracle의미
RAC 환경에서 세션이 다른 인스턴스와 cache fusion으로 주고받는 중이거나 해당 인스턴스가 사용 중으로 보유한 global 블록에 접근하기를 기다린다.
원인
RAC 노드 간에 공유되는 동일한 hot block(cross-instance hot block), 인터커넥트 지연/병목, 순차 키 인덱스에 대한 노드 간 경합, 또는 불균형한 워크로드 분산.
해결 방법
v$segment_statistics와 GV$ 뷰로 영향받는 세그먼트를 찾는다. 인터커넥트 상태와 지연을 확인한다(전용 고속 네트워크). hot 인덱스에는 reverse key 또는 hash 파티셔닝을 사용한다. 서비스별로 워크로드를 노드에 분리해 같은 블록에 대한 노드 간 경합을 줄인다.
같은 데이터베이스의 다른 항목
- db file sequential read대기: 단일 블록 물리 읽기, 보통 인덱스 또는 테이블 조회
- db file scattered read대기: 다중 블록 물리 읽기, 보통 full table scan 또는 index fast full scan
- buffer busy waits대기: 다른 세션이 이미 읽거나 수정 중인 버퍼에 대한 경합
- library cache lock대기: library cache 객체 핸들 경합(parse/DDL 직렬화)
- ORA-00604error occurred at recursive SQL level
- ORA-01438value larger than specified precision allowed for this column
- ORA-01400cannot insert NULL into (column)