728x90
반응형

Oracle Database를 다루는 개발자라면, 하루에도 몇 번씩 ORA-xxxxx로 시작하는 오류 메시지와 맞닥뜨리게 됩니다. 단순 오타로 인한 쿼리 오류부터, Listener, Tablespace 문제, 네트워크 이슈까지 그 범위도 다양하지요. 저 역시 여러 SI/SM 프로젝트에서 크고 작은 에러를 경험하며, 문제 해결 능력이 개발자 역량의 핵심이라는 걸 뼈저리게 느꼈습니다.
오늘은 실무에서 자주 마주치는 Oracle 오류 코드 20가지와 그 해결법을 총정리해 보겠습니다.
1. ORA-00001: Unique Constraint Violated
- 원인: 중복된 값이 Primary Key 또는 Unique 제약 조건에 삽입될 때
- 해결: 중복 데이터 확인 후 삭제/수정, 시퀀스 값 초기화, 애플리케이션 단에서 중복 체크 로직 추가
2. ORA-00904: Invalid Identifier
- 원인: 잘못된 컬럼명, 오타, 대소문자 문제
- 해결: DESC 테이블명으로 실제 컬럼 확인, SQL 별칭(alias) 점검
3. ORA-00933: SQL Command Not Properly Ended
- 원인: SQL 문법 오류 (특히 ;, ORDER BY 위치, UNION 사용 시)
- 해결: SQL 문법 검토, Oracle 고유 문법에 맞게 수정
4. ORA-00942: Table or View Does Not Exist
- 원인: 존재하지 않는 테이블 접근, 권한 없음
- 해결: DBA에게 권한 부여 요청(GRANT), 스키마명 명시(스키마.테이블명)
5. ORA-01017: Invalid Username/Password
- 원인: 로그인 계정/비밀번호 오류 또는 계정 잠김
- 해결: 계정 비밀번호 확인, ALTER USER … ACCOUNT UNLOCK
6. ORA-01031: Insufficient Privileges
- 원인: 권한 부족 (SELECT, INSERT, EXECUTE 등)
- 해결: DBA에게 권한 부여 요청
-
GRANT SELECT ON 스키마.테이블명 TO 사용자명;
7. ORA-01400: Cannot Insert NULL
- 원인: NOT NULL 제약 조건이 있는 컬럼에 NULL 삽입
- 해결: INSERT 시 값 입력 여부 확인, 기본값 설정
8. ORA-01422: Exact Fetch Returns More Than Requested Number of Rows
- 원인: SELECT INTO 구문에서 단일 행을 기대했는데 여러 행 반환
- 해결: SELECT INTO → CURSOR 또는 LIMIT 1 조건 추가
9. ORA-01476: Divisor is Equal to Zero
- 원인: 0으로 나누는 연산 발생
- 해결: NVL 처리, CASE WHEN 분모=0 THEN … END 로 방어 로직 작성
10. ORA-01555: Snapshot Too Old
- 원인: Undo Tablespace 부족으로 대량 쿼리 실패
- 해결: Undo 공간 늘리기, 배치 작업 분할 실행
11. ORA-01652: Unable to Extend Temp Segment
- 원인: Temp Tablespace 부족
- 해결: Tempfile 추가
-
ALTER DATABASE TEMPFILE '경로/temp01.dbf' RESIZE 1G;
12. ORA-01722: Invalid Number
- 원인: 숫자 변환 불가능한 문자열을 숫자로 변환 시도
- 해결: TO_NUMBER 사용 전 데이터 검증, REGEXP_LIKE로 숫자만 필터링
13. ORA-01843: Not a Valid Month
- 원인: 잘못된 날짜 포맷 입력
- 해결: TO_DATE(컬럼, 'YYYY-MM-DD')로 변환, NLS 설정 확인
14. ORA-02049: Timeout: Distributed Transaction Waiting for Lock
- 원인: Deadlock 또는 Lock 대기 시간 초과
- 해결: Lock을 유발하는 세션 확인 후 Kill
-
SELECT * FROM v$locked_object;
15. ORA-02291: Integrity Constraint Violated – Parent Key Not Found
- 원인: 참조 무결성 위반 (FK 제약 조건 대상이 없는 값 입력)
- 해결: 부모 테이블에 데이터 삽입 후 자식 데이터 입력
16. ORA-02292: Integrity Constraint Violated – Child Record Found
- 원인: 부모 데이터를 삭제하려는데 자식 테이블에서 참조 중
- 해결: 자식 데이터 먼저 삭제, FK에 ON DELETE CASCADE 고려
17. ORA-03113: End-of-file on Communication Channel
- 원인: DB 인스턴스 다운, 네트워크 끊김
- 해결: 서버 로그 확인, 인스턴스 재기동
18. ORA-04098: Trigger is Invalid
- 원인: 트리거 컴파일 오류
- 해결: ALTER TRIGGER … COMPILE, 참조 객체 유효성 확인
19. ORA-12154: TNS Could Not Resolve Service Name
- 원인: tnsnames.ora 설정 오류
- 해결: 서비스명, 호스트, 포트 재확인, Easy Connect 사용
20. ORA-12541: TNS No Listener
- 원인: Listener 미기동
- 해결: lsnrctl start, 방화벽/포트 점검
🔑 실무에서 Oracle 오류 해결 팁
- 에러 메시지 전체 확인: 첫 줄만 보지 말고 라인 번호, 세부 메시지까지 읽기
- 공식 문서 활용: Oracle Error Messages Guide 적극 활용
- 재현 가능한 쿼리 준비: DBA나 동료에게 공유할 때 원인 파악이 훨씬 쉬움
- 로그 확인 습관화: alert.log, trace 파일 분석은 필수
- 권한/환경 변수 확인: 많은 오류가 단순 권한 부족, 환경 설정 불일치에서 발생
마무리: Oracle 에러, 경험이 쌓일수록 익숙해진다
처음 Oracle 오류를 접하면 당황스럽지만, 여러 번 겪다 보면 특정 패턴이 보이고 해결 속도도 빨라집니다. 저 역시 처음에는 ORA-00942 하나에도 반나절을 날렸지만, 지금은 코드만 봐도 대략 원인이 떠오릅니다. 중요한 건 문제를 두려워하지 않고, 차근차근 원인을 추적하는 태도입니다.
이번에 정리한 Top 20 오류와 해결 방법이 실무에서 여러분의 시간을 절약해 주길 바랍니다.
https://sl9028.tistory.com/1031
Oracle 오류 코드별 해결 방법 총 정리!
개발이나 운영을 하다 보면, 누구나 한 번쯤은 **Oracle DB 오류(ORA-xxxxx)**와 마주치게 됩니다. 에러 메시지를 보면 무슨 말인지 감도 안 오고, 구글 검색창에 복붙해서 답을 찾는 게 일상처럼 되어
sl9028.tistory.com
728x90
반응형
'꿀팁 정보' 카테고리의 다른 글
| Java 자주 발생하는 에러 및 해결방법 (0) | 2025.10.06 |
|---|---|
| ORA 오류별 SQL 예제 & 실무 해결 스크립트 모음집 (0) | 2025.10.06 |
| 렌트카(G Car, 쏘카 등) 업체별 대여료 비교 (0) | 2025.10.04 |
| 엑셀 매크로 작성을 200% 쉽게 해주는 챗GPT 명령 프롬프트 작성 방법 (0) | 2025.10.01 |
| 챗GPT를 200% 활용하는 명령 프롬프트 10가지 추천 (0) | 2025.10.01 |
댓글