본문 바로가기
유용한 정보

Oracle 오류 코드별 해결 방법 총 정리!

by sk9028 2025. 10. 6.
728x90
반응형

개발이나 운영을 하다 보면, 누구나 한 번쯤은 **Oracle DB 오류(ORA-xxxxx)**와 마주치게 됩니다. 에러 메시지를 보면 무슨 말인지 감도 안 오고, 구글 검색창에 복붙해서 답을 찾는 게 일상처럼 되어 있죠. 저 역시 실무에서 프로젝트를 진행하며 수많은 오류와 씨름했던 경험이 있습니다. 오늘은 그런 경험을 토대로 자주 발생하는 Oracle 오류 코드와 해결 방법을 총정리해 보겠습니다.


1. ORA-00001: Unique Constraint Violated

에러 내용

 
ORA-00001: unique constraint (스키마.제약조건명) violated

원인
기본 키(Primary Key)나 Unique 제약 조건이 걸린 컬럼에 중복된 값이 입력될 때 발생합니다. 예를 들어 회원 테이블에서 동일한 아이디를 두 번 삽입하려 하면 발생하죠.

해결 방법

  1. 중복 데이터가 있는지 확인
  2.  
    SELECT 컬럼명, COUNT(*) FROM 테이블명 GROUP BY 컬럼명 HAVING COUNT(*) > 1;
  3. 시퀀스를 사용하는 컬럼이라면 시퀀스 값이 꼬이지 않았는지 확인
  4. 데이터 입력 로직에서 중복 체크 로직 추가

2. ORA-00904: Invalid Identifier

에러 내용

 
ORA-00904: invalid identifier

원인
SQL 문장에서 존재하지 않는 컬럼명이나 잘못된 별칭을 사용했을 때 발생합니다. 오타나 대소문자 구분 문제도 흔한 원인입니다.

해결 방법

  1. 컬럼명이 실제 테이블에 존재하는지 확인
  2.  
    DESC 테이블명;
  3. 대소문자가 구분되는 경우 쿼리에서 큰따옴표("") 사용 여부 점검
  4. 컬럼명 오타 또는 별칭(alias) 확인

3. ORA-00942: Table or View Does Not Exist

에러 내용

 
ORA-00942: table or view does not exist

원인
존재하지 않는 테이블을 조회하거나, 권한이 없는 경우 발생합니다.

해결 방법

  1. DBA 권한으로 테이블 존재 여부 확인
  2.  
    SELECT * FROM all_tables WHERE table_name = '테이블명';
  3. 권한 문제라면
  4.  
    GRANT SELECT ON 스키마.테이블명 TO 사용자명;
  5. 다른 스키마의 객체를 접근할 경우 스키마명.테이블명 형식으로 호출

4. ORA-01017: Invalid Username/Password

에러 내용

 
ORA-01017: invalid username/password; logon denied

원인
아이디 또는 비밀번호가 잘못되었거나, 계정이 잠겨 있는 경우 발생합니다.

해결 방법

  1. 계정명/비밀번호 정확히 입력했는지 재확인
  2. 계정이 잠겼다면 DBA에게 풀어 달라고 요청
  3.  
    ALTER USER 사용자명 ACCOUNT UNLOCK;
  4. 비밀번호 변경
  5.  
    ALTER USER 사용자명 IDENTIFIED BY 새비밀번호;

5. ORA-12154: TNS Could Not Resolve Service Name

에러 내용

 
ORA-12154: TNS:could not resolve service name

원인
Oracle 클라이언트에서 DB 접속 시 TNS 설정 파일(tnsnames.ora)에 명시된 서비스명을 찾지 못할 때 발생합니다.

해결 방법

  1. $ORACLE_HOME/network/admin/tnsnames.ora 파일 확인
  2. 서비스명이 실제로 맞는지 점검
  3. 환경 변수 ORACLE_SID 확인
  4. Easy Connect 방식으로 접속 시도
  5.  
    sqlplus 사용자/비밀번호@호스트:포트/서비스명

6. ORA-12541: TNS No Listener

에러 내용

 
ORA-12541: TNS:no listener

원인
DB Listener 프로세스가 실행 중이지 않을 때 발생합니다.

해결 방법

  1. 서버에서 Listener 상태 확인
  2.  
    lsnrctl status
  3. Listener가 꺼져 있다면 실행
  4.  
    lsnrctl start
  5. 네트워크 방화벽에서 포트(기본 1521) 열려 있는지 확인

7. ORA-03113: End-of-file on Communication Channel

에러 내용

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

원인
DB 서버와 클라이언트 간의 네트워크 연결이 끊기거나, DB 인스턴스가 비정상 종료된 경우 발생합니다.

해결 방법

  1. DB 서버 로그(alert.log) 확인
  2. 네트워크 상태 점검 (VPN, 방화벽 등)
  3. DB 인스턴스가 죽어있다면 재기동 필요

8. ORA-04098: Trigger is Invalid and Failed Re-validation

에러 내용

 
ORA-04098: trigger '트리거명' is invalid and failed re-validation

원인
트리거가 컴파일되지 않았거나, 참조하는 객체가 삭제/변경되어 유효하지 않음

해결 방법

  1. 트리거 컴파일
  2.  
    ALTER TRIGGER 트리거명 COMPILE;
  3. 참조하는 테이블/컬럼/프로시저가 존재하는지 확인
  4. 필요하다면 트리거 삭제 후 재작성

9. ORA-01555: Snapshot Too Old

에러 내용

 
ORA-01555: snapshot too old: rollback segment number with name "" too small

원인
대량 데이터를 처리하는 도중 Undo Tablespace가 부족할 때 발생합니다.

해결 방법

  1. Undo Tablespace 크기 늘리기
  2.  
    ALTER DATABASE DATAFILE '경로/undotbs01.dbf' RESIZE 500M;
  3. 대량 처리 시 배치 작업을 나누어 실행
  4. 커밋(commit) 주기를 조절하여 Undo 사용량 분산

10. ORA-06512: PL/SQL Error

에러 내용

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

원인
PL/SQL 블록 내에서 발생한 오류를 나타내며, 정확한 원인은 위에 함께 표시되는 다른 오류 코드와 연계되어 있습니다.

해결 방법

  1. ORA-06512와 함께 발생한 원인 에러 코드 먼저 확인
  2. 프로시저나 함수의 특정 라인 번호 확인 후 디버깅
  3. 예외 처리(Exception Handling) 구문 추가

Oracle 오류 대처 시 유용한 팁

  • Alert Log 파일 확인: DB 내부 에러는 alert.log 파일에서 원인을 쉽게 찾을 수 있음
  • DBA 권한자와 협업: 권한 문제, Listener 문제는 DBA 지원이 필요
  • 재현 가능한 쿼리 남기기: 에러 발생 시 상황을 재현할 수 있는 SQL을 준비해야 해결이 빠름
  • 공식 문서 활용: Oracle 공식 문서(https://docs.oracle.com)에는 에러 코드별 상세 설명이 정리되어 있음

마무리: Oracle 에러, 겁내지 말고 차근차근 해결하자

Oracle 오류 메시지는 처음 보면 낯설고 당황스럽지만, 차근차근 원인을 추적하면 대부분 해결할 수 있습니다. 제가 경험했던 프로젝트에서도 한 줄의 에러 메시지가 원인을 알려주고, 해결 방법을 찾아가는 나침반 역할을 했습니다. 중요한 건 에러 코드를 두려워하지 않고, 근본 원인을 찾는 습관입니다. 이 글이 Oracle DB를 다루는 분들에게 작은 길잡이가 되길 바랍니다.

 

https://sl9028.tistory.com/1032

 

Oracle 오류 코드별 해결 방법 총 정리!

개발이나 운영을 하다 보면, 누구나 한 번쯤은 **Oracle DB 오류(ORA-xxxxx)**와 마주치게 됩니다. 에러 메시지를 보면 무슨 말인지 감도 안 오고, 구글 검색창에 복붙해서 답을 찾는 게 일상처럼 되어

sl9028.tistory.com

 

728x90
반응형

댓글