안녕하세요, 이번에 작성한 내용은 ORA-00904 부적합한 식별자 invalid identifier 오류 코드 해결 방법 관련 사항입니다.
오라클 DB을 운영을 하시면서 여러 가지 오류 코드를 경험을 하실 건데 간혹 SQL 문장에서 잘못된 칼럼 이름을 사용할 경우 ORA-00904라는 오류 코드를 확인하실 수 있습니다.
해당 오류 코드의 경우에는 말 글대로 잘못된 칼럼 이름을 사용을 했기 때문에 칼럼 이름을 먼저 확인하고 숫자나 기호 같은 문구가 들어갔는지 첫 번째로 확인을 해주셔야 합니다.
ORA-00904 부적합한 식별자 오류 코드 원인
ORA-00904 오류 코드가 발생을 하게 되면 아래와 같은 형태로 출력이 되는 것을 확인하실 수 있습니다.
✔ ORA-00904 : invalid identifier
✔ ORA-00904 : 부적합한 식별자
일반적으로 위에 2가지 형식으로 출력이 되는데 해당 오류는 SQL 문장에서 칼럼 이름이 제대로 설정이 되어 있지 않아 발생하는 오류 코드입니다.
해당 코드가 발생을 하면 기존에 짜놓은 SQL 문장을 보시면 참조한 컬럼 이름이 유효하지 않거나 테이블에 존재하지 않는 것을 확인하실 수 있습니다.
아니면 정의 된 열 이름과 대소문자가 일지 하지 않거나 작은따옴표와 큰 따옴표 사용법의 오류로 인해 발생할 수도 있습니다.
ORA-00904 : 부적합한 식별자 invalid identifier 오류코드 발생 원인
✔ 존재하는 열이름과 정의된 열 이름 일치하지 않는 경우
✔ 존재하는 열이름과 정의된 열 이름의 대소문자가 일치하지 않는 경우
✔ SQL 문장에서 참조한 열이 존재하지 않는 경우
✔ 작은 따옴표와 큰따옴표 사용 방법의 오류인 경우 (작은따옴표 = ‘ , 큰 따옴표 =”)
사실 프로그래밍을 하시면서 이런 대소문자 구별을 못하는 언어가 바로 SQL이고, 내부적인 변수나 칼럼 이름을 명명할 때도 숫자나 기회가 들어가면 오류가 나게 됩니다.
▶ ORA-06502 PL/SQL 수치 또는 값 오류 해결 방법
ORA-00904 invalid identifier 오류 코드 해결방법
이제는 위에서 원인을 확인을 하는 과정을 설명을 드렸다면 이제는 해당 오류 코드를 해결하는 방법에 대해서 설명드리도록 하겠습니다.
원인을 확인을 했다면 그 원인을 해결하는 방법으로 오류 코드를 해결을 하시면 되는데 대표적인 원인과 해결방법에 대해서 아래와 같이 정리하였습니다.
| 원인 | 해결 방법 | 예시 |
| 컬럼명이 오타 | 정확한 컬럼명을 확인 | SELEC name FROM users; → SELECT name FROM users; |
| 컬럼이 존재하지 않음 | 테이블 구조를 확인 | SELECT age FROM employees; → employees 테이블에 age 컬럼이 존재하는지 확인 |
| 쌍따옴표 사용 오류 | 소문자 컬럼명을 쌍따옴표로 묶으면 대소문자 구분됨 | “Name”은 Name 컬럼만 찾고, name은 인식 못함 |
| 함수나 예약어 오용 | 함수 이름과 컬럼명을 혼동하지 말 것 | SELECT count FROM table; → count가 함수인지 컬럼인지 확인 필요 |
| 권한 문제 | DBA나 시스템 관리자에게 권한 요청 | SELECT 권한이 없을 경우 발생 가능 |
해당 오류는 SQL 구문에서 선언한 컬럼 이름이 제대로 설정이 되어 있지 않을 때 발생을 하게 됩니다.
또는 선언한 칼럼 이름이 존재하는 칼럼 이름과 일치하지 않거나 대소문자가 상이할 경우에 발생하기도 합니다.
즉 SQL 구문에서 선언한 칼럼 or 열 존재 유무 확인 및 선언한 열이나 테이블의 이름이 기존에 존재하는 열이나 테이블 이름과 일치하는지를 먼저 확인을 하셔야 합니다.
✔ 컬럼 이름이 제대로 설정이 되어 있지 않을 때 예시
예를 들어 아래와 같이 username을 잘못 선언을 해서 ‘usernamee’으로 기재했을 경우에 해당 오류코드가 발생하게 됩니다.
# 오타로 인해 usernamee 컬럼이 없어서 ORA-00904 발생
SELECT usernamee FROM users;
# username 컬럼 이름 수정
SELECT username FROM users;

이럴 경우에는 선언한 컬럼 이름을 ‘username’으로 수정을 해주면 해당 코드는 해결할 수 있습니다.
참고로 SQL 구문에서 컬럼명 확인 방법은 아래 구문을 이용을 하시면 됩니다.
DESC users;
-- 또는
SELECT column_name FROM all_tab_columns WHERE table_name = 'USERS';
✔ 작은따옴표와 큰따옴표 사용 방법 확인 및 수정
그리고 나서 만약 존재하는 열 이름과 SQL 문에서 선언한 열 이름이 동일할 경우에는 작은따옴표와 큰따옴표 사용 방법을 적절히 했는지 확인해주셔야 합니다.
왜냐하면 소문자 컬럼명을 큰따옴표로 묶으면 대소문자 구분이 되기 때문에 해당 칼럼명을 찾지 못할 수도 있습니다.
그러므로 소문자와 쌍따옴표 사용법을 제대로 익히시고 사용을 하신느 걸 추천 드리는데 많은 분들이 자주 실수하는 사항에 대해서 아래와 같이 정리하였습니다.
| 잘못된 사용 예시 | 원인 | 해결 방법 적용 예 |
| ‘컬럼명’ | 컬럼이 아니라 문자열로 인식됨 | 컬럼명 또는 “컬럼명” |
| “문자열” | 문자열이 아니라 식별자로 인식됨 | ‘문자열’ |
| “컬럼명” | 대소문자 구분, 정확히 일치해야 함 | “컬럼명” 그대로 사용 |
좀 더 간략하게 정리하면 ORA-00904 오류 코드 수정 방법은 아래와 같이 같이 정리할 수 있습니다.
ORA-00904 오류 코드 수정 방법
✔ SQL 구문에서 선언한 열 존재 유무 확인
✔ 선언한 열이나 테이블의 이름이 기존에 존재하는 열이나 테이블 이름과 일치 유무 확인
✔ 쌍따옴표 사용 방법을 적절히 했는지 확인
✔ 열 이름 앞에 숫자 혹은 기호가 사용하셨는지를 확인
추가적으로 빈번하게 발생할 수 있는 ORA 에러에 대해서 알아가시면 Oracle 운영하고 관리하시는데 도움이 되실 겁니다.
ORA 오류 코드 해결 방법 모음
▶ ORA-20001 Statistics Advisor Invalid task name 오류 코드 해결방법
▶ ORA-06502 수치 또는 값 오류: 문자열 버퍼가 너무 작습니다 오류 해결 방법
▶ ORA-06512 PL/SQL 수치 또는 값 오류 해결 방법
▶”액세스가 거부되었습니다.” 외장하드 문제 해결 방법
관련 글
결론
이상입니다. 지금까지 ORA-00904 부적합한 식별자 invalid identifier 오류 코드 해결 방법 대해서 포스팅을 작성하였습니다.
변수를 지정을 하거나 칼럼명을 지정할 때 자주 코드를 짜지 않으면 가장 기본적인 부분에 대해서 실수를 해서 코드 완성하는데 많은 시간이 소요가 될 수 있습니다.
그러므로, 눈으로만 보지 마시고 실제로 코드를 구현을 해보시는 걸 추천드립니다.
그럼 제 포스팅을 통해서 ORA-00904 오류 해결하시는데 도움이 되셨으면 하는 마음을 끝으로 마무리 하도록 하겠습니다.
감사합니다.









