2025. 2. 28. 21:08ㆍIT/Oracle
V$SESSION 뷰에서 STATE 값이 WAITING이면 해당 세션이 현재 어떤 이벤트를 기다리고 있다는 의미입니다.
즉, 실행 중이 아니라 특정 리소스(락, I/O, 네트워크, CPU 등) 대기 상태에 있다는 뜻입니다.
WAITING 상태의 주요 원인
• V$SESSION에서 WAIT_CLASS와 EVENT 컬럼을 확인하면 대기 원인을 찾을 수 있습니다.
SELECT sid, serial#, username, event, wait_class, seconds_in_wait
FROM v$session
WHERE state = 'WAITING'; • 이 결과에서 WAIT_CLASS 값에 따라 원인을 분석할 수 있습니다.
1. 락(Lock)으로 인한 대기
• 예시 : 한 트랜잭션이 특정 테이블을 UPDATE했지만 COMMIT을 하지 않으면, 다른 트랜잭션이 같은 행을 수정하려 할 때 대기하게 됨.
• 확인 방법
SELECT blocking_session, sid, serial#, event, wait_class
FROM v$session
WHERE state = 'WAITING'; • 해결방법
- 락을 건 세션을 찾아 COMMIT 또는 ROLLBACK
- 필요하면 강제로 세션 종료 (ALTER SYSTEM KILL SESSION 'SID,SERIAL#';)
2. 디스크 I/O로 인한 대기
• 예시 : 대량의 데이터를 읽거나 쓸 때 발생.
• EVENT 예시
- db file sequential read : 인덱스 스캔, 테이블 액세스
- db file scattered read : 풀 테이블 스캔
SELECT sid, serial#, event, p1, p2, p3
FROM v$session
WHERE wait_class = 'User I/O'; • 해결 방법
- 적절한 인덱스 사용 (EXPLAIN PLAN 분석)
- DBMS_STATS.GATHER_TABLE_STATS로 통계 업데이트
- DB_CACHE_SIZE 조정
3. 네트워크 대기
• 예시 : 클라이언트와의 통신 지연, 데이터 전송 대기.
• EVENT 예시
- SQL*Net message from client : 클라이언트 입력 기다리는 중
- SQL*Net more data to client : 클라이언트로 데이터 전송 중
• 확인 방법
SELECT sid, serial#, event, seconds_in_wait
FROM v$session
WHERE wait_class = 'Network'; • 해결 방법
- 클라이언트 애플리케이션 확인
- 네트워크 지연 문제 해결
4) CPU 부족 (Scheduler)
• 예시 : CPU가 부족해서 프로세스가 실행되지 못하고 대기하는 경우
SELECT sid, serial#, event, seconds_in_wait
FROM v$session
WHERE wait_class = 'Scheduler'; • 해결 방법
- CPU 사용률 확인 (top, vmstat 등)
- 리소스 관리 정책(RESOURCE_MANAGER) 확인
- 병렬 쿼리(PARALLEL_DEGREE_POLICY) 조정
5. UNDO/REDO 관련 대기
• 예시 : 트랜잭션 롤백 또는 redo log가 가득 찼을 때 발생.
• EVENT 예시
- log file sync : 트랜잭션 커밋 시 redo log에 기록하는 중
- log file switch (checkpoint incomplete) : redo log가 꽉 차서 스위칭 중
- 확인 방법
SELECT sid, serial#, event, seconds_in_wait
FROM v$session
WHERE wait_class = 'System I/O'; • 해결 방법
- Redo log 크기 증가
- UNDO 테이블스페이스 크기 조정
'IT > Oracle' 카테고리의 다른 글
| 실시간 연계 DB로서의 오라클 제공 기능 (1) | 2025.03.01 |
|---|---|
| 오라클 테이블 이름 변경하는 방법과 인덱스 자동 변경 여부에 대해 (1) | 2025.02.28 |
| ORA-12547 : TNS:lost contact 에러 원인 및 해결 방법(ㅇ) (2) | 2025.02.27 |
| 데이터베이스의 병행 제어(Concurrency Control) (0) | 2025.02.26 |
| 오라클 스마트 스캔 - 직접 경로 읽기 (2) | 2025.02.25 |