
Oracle Log file sync Event(AP) 느림 현상
Log file sync 이벤트는 트랜잭션 COMMIT 단계에서 발생하는 대표적인 대기 이벤트입니다.
Oracle의 LGWR(Log Writer) 프로세스가 Redo Buffer의 내용을 실제 Redo Log File로 쓰는 동안 세션이 기다리게 되며,
이 과정에서 디스크 I/O 지연이 발생하면 응답이 느려집니다.
1️⃣ 증상 개요
- Commit 또는 Insert 후 응답이 느려지고, CPU는 유휴 상태임
- AWR Report에서
log file sync이벤트 비중이 40% 이상 - DB ALERT 로그 또는 트레이스 파일에 ORA-00312 / ORA-27072 오류 기록
2️⃣ 관련 오류 코드
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/redo01.log'
ORA-00313: open failed for members of log group 1
ORA-00349: failure obtaining block size for redo file '/u01/app/oracle/oradata/redo01.log'
ORA-27072: File I/O error
Additional information: 4
Additional information: 1
Linux-x86_64 Error: 5: Input/output error
이 오류들은 LGWR(Log Writer)이 Redo Log 파일에 기록하는 과정에서 디스크 I/O 실패가 발생했음을 의미합니다.
Oracle 내부적으로는 log file sync 단계에서 대기 중인 세션이 LGWR의 write() 호출이 완료되길 기다리게 되며,
만약 I/O 계층에서 실패(예: SAN 오류, Disk Latency, 파일 손상)가 발생하면 위 오류와 함께 세션이 장시간 정지합니다.
3️⃣ ORA-00312 상세 해석
ORA-00312는 Redo Log 파일의 접근 실패를 의미하며, 특정 Log Group 멤버를 열거나 쓰기(Open/Write) 실패 시 기록됩니다.
LGWR은 활성화된 Log Group을 순차적으로 열고 쓰는데, 만약 다음과 같은 상태면 오류가 발생합니다:
- 해당 redo 파일이 OS에서 잠김 상태이거나 손상됨
- 파일 권한/소유권이 잘못되어 Oracle 프로세스 접근 불가
- 파일 경로가 mount 해제되었거나 NFS 네트워크 끊김
이 경우 ORA-00312는 Redo Log Group 번호와 실제 파일명을 함께 출력해 관리자가 장애 위치를 파악할 수 있도록 합니다.
예시:
ORA-00312: online log 3 thread 1: '/u02/oradata/redo03.log'
==> /u02 디스크 I/O 오류 또는 Mount 해제 상태로 인해 LGWR 쓰기 실패
4️⃣ ORA-27072 상세 해석
ORA-27072: File I/O error는 Oracle의 파일 I/O 호출 계층에서 OS로부터 직접 “Input/output error”를 반환받을 때 발생합니다.
일반적으로 Linux에서는 errno=5 (EIO)로 표시되며, 이는 디스크 장치 또는 SAN 스토리지의 물리적 지연, 손상, 또는 커널 버퍼 오류에 기인합니다.
- LGWR의
write()시스템 콜이 실패 → Commit 대기 세션이log file sync상태로 지속됨 - Redo Log 파일의 특정 블록에서 읽기 또는 쓰기 실패 시 ORA-27072와 함께 ORA-00312 병행 발생
- I/O 서브시스템(스토리지, RAID 컨트롤러, SAN Path, multipathd) 문제일 가능성이 높음
이 오류는 논리적 Oracle 문제보다 물리적 Storage 계층 문제와 밀접하며, LGWR I/O Thread의 OS-level Latency 증가로 log file sync를 유발합니다.
5️⃣ 예시 SQL — AWR 분석 및 LGWR 모니터링
-- 최근 log file sync 이벤트 평균 대기시간
SELECT event, total_waits, time_waited, average_wait
FROM v$system_event
WHERE event LIKE 'log file sync%';
-- LGWR 프로세스의 최근 I/O 작업 및 대기 이벤트
SELECT p.spid, s.sid, s.event, s.state, s.seconds_in_wait
FROM v$session s JOIN v$process p ON s.paddr=p.addr
WHERE s.module='LGWR';
-- Redo Log Group 상태 확인
SELECT group#, status, member FROM v$logfile ORDER BY group#;
위 쿼리에서 LGWR 세션이 장시간 동일 이벤트(log file parallel write)에 머물고 있다면, 디스크 쓰기 지연이 원인입니다.
6️⃣ 조치 및 대응 방안
- Redo Log 파일 손상 확인: OS 로그(`/var/log/messages`, `dmesg`) 및 ASM Alert Log 점검
- Redo Log 경로 변경: I/O 지연이 없는 다른 스토리지나 SSD로 이동
- 디스크 I/O 진단:
iostat -x 1,sar -d명령으로 실시간 Latency 분석 - Redo Log Group 재구성: 기존 로그 손상 시 새로운 Group 추가 후 손상 로그 제거
- LGWR Asynchronous I/O 활성화:
disk_asynch_io=TRUE설정 확인 - Archive Log 대상 확인: Archive Dest 경로에 지연 또는 접근 문제 여부 점검
7️⃣ 예방 및 모니터링
- AWR Report 주기적 수집 및 “log file sync”, “log file parallel write” 비교
- Redo Log Group 3개 이상 구성, 파일 크기 2~4GB 이상 권장
- ASM Diskgroup별 IOPS, Latency 주기적 점검
- OS-level multipath 장애나 I/O 재시도 로그 확인
'지식 공유 > DBMS' 카테고리의 다른 글
| [ORACLE] ORA-19511 — RMAN 백업/복구 중 I/O 오류 (2) | 2025.11.12 |
|---|---|
| PostgreSQL 오류: cannot merge attstreams with duplicate TIDs (2) | 2025.11.11 |
| DBMS의 종류와 특징 — 관계형부터 객체관계형까지 (1) | 2025.11.10 |
| [Oracle] 아카이브 풀(Archive Full) - ORA-16014, ORA-00257, ORA-19809 (5) | 2025.11.09 |
| [Oracle] 오라클 LogMiner — 실습 케이스 (시간/SCN 기반) & 자동 복구 SQL 생성 스크립트 (0) | 2025.11.02 |
