본문 바로가기
ORACLE

ORA-00904 오류 해결 방법 | Oracle SQL 컬럼 오류 완전 정복

by samie 2025. 4. 9.
ORA-00904 오류 해결 방법 | Oracle SQL 컬럼 오류 완전 정복

ORA-00904: 잘못된 식별자 오류 해결 방법

Oracle SQL을 작성하다 보면 아래와 같은 오류 메시지를 접한 적 있으신가요?


ORA-00904: "COLUMN_NAME": invalid identifier

이 오류는 SQL 문장에서 사용된 컬럼명, 함수명, 식별자가 Oracle에서 인식할 수 없는 경우 발생합니다. 초급부터 고급 개발자까지 자주 겪는 실수 중 하나이므로, 원인과 해결 방법을 확실히 알아두는 것이 중요합니다.

1. ORA-00904란?

ORA-00904 오류는 Oracle에서 SQL 문장의 식별자(identifier), 즉 컬럼명 또는 함수명이 유효하지 않을 때 발생합니다.

오류 메시지 예시:


ORA-00904: "USERNAME": invalid identifier

2. 주요 발생 원인

  • 📝 존재하지 않는 컬럼명을 사용
  • ✍️ 컬럼명 오타 또는 대소문자 구분 오류
  • 🔍 함수명을 잘못 입력하거나 괄호 누락
  • ⚠️ 쌍따옴표로 정의된 컬럼명 사용 시 대소문자 구분

3. 해결 방법

✔️ 1. 컬럼명이 테이블에 존재하는지 확인

먼저 사용 중인 컬럼명이 테이블에 실제로 존재하는지 확인합니다:


SELECT column_name 
FROM all_tab_columns 
WHERE table_name = 'EMPLOYEES' AND owner = 'HR';

✔️ 2. 컬럼명 오타 수정


-- 잘못된 예
SELECT usernme FROM employees;

-- 수정된 예
SELECT username FROM employees;

✔️ 3. 대소문자 문제 해결

쌍따옴표(")를 사용하면 Oracle은 대소문자를 구분합니다.


-- 컬럼을 "UserName"으로 생성한 경우
SELECT "UserName" FROM users; -- OK
SELECT username FROM users;   -- 오류 발생

✔️ 4. 함수명 오류 또는 괄호 생략


-- 잘못된 예 (함수 괄호 생략)
SELECT sysdate FROM dual; -- OK
SELECT sysdate; -- ORA-00904 오류 발생 가능

4. 예제 및 실습

예제 1: 컬럼명이 존재하지 않을 때


SELECT age FROM employees;
-- ORA-00904: "AGE": invalid identifier

해결: 테이블에 해당 컬럼이 존재하는지 확인

예제 2: 오타로 인한 오류


SELECT enamee FROM emp;
-- ORA-00904: "ENAMEE": invalid identifier

예제 3: 대소문자 구분


-- 컬럼을 "Email"로 만들었다면
SELECT Email FROM users; -- 오류
SELECT "Email" FROM users; -- 정상 작동

5. 예방 팁

  • ✅ SQL Developer나 DB 툴을 통해 컬럼 목록 확인
  • ✅ 테이블 이름과 컬럼명을 항상 대문자로 확인
  • ✅ 쌍따옴표를 남용하지 않도록 주의
  • ✅ 커밋된 스키마 구조와 실제 사용하는 쿼리가 일치하는지 점검

🔚 마무리

ORA-00904 오류는 Oracle SQL 초급자들이 흔히 겪는 실수이지만, 올바른 컬럼명과 함수명 확인만으로도 간단하게 해결할 수 있습니다.

오류 메시지 속 "COLUMN_NAME"을 중심으로 테이블 구조를 점검하고, 대소문자나 쌍따옴표 문제도 함께 확인하세요!

도움이 되셨다면 댓글과 좋아요 부탁드립니다. 😊 Oracle SQL 오류 시리즈는 계속 업데이트 됩니다!