데이터베이스/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