데이터베이스/ORACLE

오라클 데이터베이스 [ORA-03113, ORA-02049, ORA-01652] 오류

멈머이 2025. 5. 31. 00:51
728x90

자주는 아니기에 익숙하지 않은 실무에서 갑자기 등장할 수 있는 고급 오류.

 

1. ORA-03113: end-of-file on communication channel

  • 의미 : Oracle 클라이언트와 서버 간 연결이 비정상적으로 종료됨
  • 원인 : DB 서버 강제 종료 or crash, 네트워크 연결 문제, Oracle 백그라운드 프로세스 비정상 종료
-- SQL*Plus, JDBC 등에서 쿼리 실행 중 갑자기 연결 끊김
 -- 해결 방법
 --	DBA에게 alert log (alert_ORCL.log) 확인 요청, 서버 및 listener 상태 확인

 

 

2.  ORA-02049: timeout: distributed transaction waiting for lock

  • 의미 : 분산 트랜잭션 중 다른 세션의 락을 기다리다가 타임아웃
  • 원인 : DB 링크로 연결된 테이블에 동시에 여러 트랜잭션 접근, 분산 처리 도중 Lock 점유 충돌
-- A 서버에서 B 서버의 테이블에 접근 중 락 점유
 -- 해결 방법
 -- 락 대기 시간 설정 늘리기:
 
ALTER SESSION SET DISTRIBUTED_LOCK_TIMEOUT = 60;
	-- 분산 트랜잭션 쿼리 최소화, 병렬 작업 피하기, 락을 점유한 세션 확인
    
SELECT * FROM dba_2pc_pending;

 

 

3. ORA-01652: unable to extend temp segment by N in tablespace TEMP

  • 의미 : 임시 테이블스페이스가 부족해서 정렬, 해시 연산 등을 더 이상 수행 못함
  • 원인 : 대용량 ORDER BY, GROUP BY, HASH JOIN 처리 시 TEMP 공간 초과, 여러 세션이 동시에 TEMP 사용
SELECT * FROM big_table ORDER BY large_column;
 -- 해결 방법
 -- TEMP 테이블스페이스 용량 늘리기 (DBA 권한 필요)
 
ALTER TABLESPACE TEMP ADD TEMPFILE '/oracle/temp02.dbf' SIZE 1G AUTOEXTEND ON;

-- 쿼리 튜닝: 불필요한 정렬 제거, 인덱스 활용, 병렬 처리 줄이기 또는 세션별 사용량 제한
728x90