DBAtlas · 데이터베이스 운영 아틀라스

ORA-00494: enqueue held for too long by 'inst N, osid M' (enqueue가 너무 오래 보유됨)

Oracle

의미

중요한 리소스 enqueue(예: CF - control file enqueue)를 프로세스가 허용 시간보다 훨씬 오래 보유해, Oracle이 시스템 행을 방지하기 위해 해당 프로세스를 종료했다. alert.log에 'killing enqueue blocker' 항목과 함께 나타난다.

원인

백그라운드 또는 사용자 프로세스가 I/O 병목, 높은 CPU 압박, OS 정체(swapping, 느린 디스크)로 인해 중요한 enqueue를 허용 시간 이상 보유했다. control file(CF) enqueue의 경우 이 시간은 _controlfile_enqueue_timeout(기본 900 s)으로 설정된다. 숨겨진(underscore) 파라미터는 Oracle Support의 안내하에서만 변경해야 한다. 보통 스토리지 지연이나 LGWR/CKPT 같은 느린 프로세스가 원인이다.

해결 방법

alert.log와 종료된 프로세스의 trace 파일을 검토해 어떤 enqueue(보통 control file)와 어떤 백그라운드 프로세스가 원인인지 파악한다. 실제 원인은 보통 스토리지/I/O 지연이므로 디스크 응답 시간, multipath, 컨트롤러 상태를 확인한다. CPU/메모리 압박과 swap 사용을 줄인다. 재발하면 trace 분석 결과를 Oracle Support와 공유한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목