문서유형ㅣ장애해결
분야ㅣ관리/환경설정
적용제품버전ㅣ7FS02PS
문서번호ㅣTADTS085
고객사 환경에서 ERROR_CACHE_CANT_SWITCH_LOGFILE 에러가 발생하면서, 세션 인증 단계에서 즉시 연결이 종료되는 현상이 보고되었습니다.
본 문서는 해당 오류의 발생 원인, 동작 설계 배경, 그리고 해결 방안을 정리한 것입니다.
현상
09/07 00:45:53.536447 [CLK][0] CHECKPOINT done 3ms, 7 blocks ...
09/07 00:45:53.536477 [CLL][0] requested switch 7 -> 4 (next=..., rth_ckpt=...)
09/07 00:45:53.546320 [FRM][0] THROW. ec=ERROR_CACHE_CANT_SWITCH_LOGFILE(-1063)
[ Log writer is waiting for all logfiles to be archived. ]
09/07 00:45:53.546558 [FRM][0] ERROR_SESS_DISCONNECT(-512046) during user auth
09/07 00:45:53.950460 [CLA][0] LOG GROUP 4 ARCHIVED.
원인
고객사 환경의 TPR 리포트 분석 결과, 다음과 같은 사실이 확인되었습니다.
- Redo log 생성량: 약 12MB로 매우 적었음
- Redo log switch 횟수: 20회 이상 수행됨
이는 DB hot backup을 위해 redo log file에 실제 데이터가 쌓이지 않았음에도 불구하고, redo log switch DDL을 반복 수행한 것이 원인이었습니다.
redo log switch를 빈번하게 돌릴수록, 아직 archiving이 완전히 완료되지 않은 redo log group을 만날 확률이 높아지고, 이 타이밍에 접속하려는 클라이언트에게 ERROR_CACHE_CANT_SWITCH_LOGFILE 에러가 발생합니다.
이 에러는 버그가 아닌 설계상의 동작입니다. 특정 노드에서 log archiving 지연이 발생할 때, 신규 세션 접속을 의도적으로 차단하여 문제가 확산되는 것을 방지하기 위한 방어 메커니즘입니다.
해결
1. Redo log file size 확대: 로그 파일 크기를 키워서 log switch 간격을 늘림
2. Redo log group 개수 증가: group 수를 늘려 archiving 대기 시간을 줄임
3. 파라미터를 통한 개선 : 파라미터 _SESS_CONN_CHECK_LOG_SWITCH=N 을 설정하면, log switch 대기 중에도 세션 접속을 강제 허용하도록 동작하며, Tibero 6, 7 계열 패치셋 PS04부터 우회 파라미터가 제공 됩니다.
331502a 패치 적용 시 해당 파라미터 적용 가능합니다.