데이터베이스/ORACLE

오라클 데이터베이스 [ORA-00904, ORA-00060, ORA-00907] 오류

멈머이 2025. 6. 3. 20:48
728x90

JOIN, 트랜잭션, 함수 사용 시 자주 마주치는 오류

 

1.  ORA-00904: invalid identifier

  • 의미 : 잘못된 컬럼명 또는 식별자를 사용함
  • 원인 : 오타, 대소문자 구분 ("ColumnName" 처럼 따옴표 사용 시 구분), 존재하지 않는 컬럼 호출
SELECT usernmae FROM users;
-- 'username' 오타

	-- 해결방법
SELECT username FROM users;

-- SQL Developer에서는 컬럼 자동완성 기능 사용 권장

 

 

2. ORA-00060: deadlock detected while waiting for resource

  • 의미 : 두 트랜잭션이 서로가 가진 자원을 요청하면서 교착 상태 발생
  • 원인 : 두 개 이상의 세션이 서로 잠근 데이터에 접근 시도, 트랜잭션 간 Lock 순서가 꼬임
세션 1: UPDATE A → UPDATE B  
세션 2: UPDATE B → UPDATE A  
→ 서로 Lock 걸고 대기 → 교착 상태 발생

	-- 해결 방법
	-- 트랜잭션 순서 일관되게 유지, 가능하면 자동 커밋 사용, 교착 세션 강제 종료
SELECT * FROM dba_blockers;
SELECT * FROM dba_waiters;
ALTER SYSTEM KILL SESSION 'sid,serial#';

 

 

3. ORA-06512: at "스키마.프로시저", line N

  • 의미 :  PL/SQL에서 오류 발생 위치를 표시하는 메시지 (원인 아님, 추적 정보)
  • 원인 : 함수, 프로시저 내부에서 발생한 예외, 실제 오류는 ORA-00000번과 함께 출력됨
ORA-06512: at "HR.CALC_SALARY", line 14  
ORA-01403: no data found

	-- 해결 방법
	-- 실제 오류 (예: ORA-01403)를 먼저 보고 해결, 이후 ORA-06512는 자연스럽게 사라짐, 
   	-- 예외 처리 블록 추가로 방지 가능

BEGIN
  -- 로직
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL; -- 또는 로그 처리
END;
728x90