코딩헤딩

오라클 데이터베이스 [ORA-00904, ORA-01722, ORA-12801 + ORA-00600 / ORA-07445, ORA-10046] 오류 본문

데이터베이스/ORACLE

오라클 데이터베이스 [ORA-00904, ORA-01722, ORA-12801 + ORA-00600 / ORA-07445, ORA-10046] 오류

멈머이 2025. 8. 6. 20:56
728x90

1. ORA-00904: "COLUMN_NAME": invalid identifier

  • 의미 : 존재하지 않는 컬럼을 SELECT 하거나, 힌트에 잘못된 컬럼명을 지정한 경우
SELECT /*+ INDEX(emp emp_xyz_idx) */ enamee FROM emp;
-- ename → 오타: enamee

 

 * 해결

  • 컬럼명/테이블명 오타 확인
  • 힌트 내 객체명도 정확히 기입

 
 
2. ORA-01722: invalid number
  • 의미 : 숫자형 컬럼에 문자형 데이터를 비교하거나, WHERE 조건에서 암묵적 형변환이 일어남
SELECT * FROM emp WHERE sal = 'A1000';
-- sal은 NUMBER형인데 문자열 비교

 

* 해결

  • TO_NUMBER(), TO_CHAR() 등 명시적 형변환 사용
  • WHERE절에 형변환이 필요하면 컬럼 쪽에 하지 말고 입력값 쪽에 적용


 
 
3. ORA-12801 + ORA-00600 / ORA-07445

  • 의미 :  병렬 힌트나 특정 인덱스 힌트가 오라클 내부 버그와 충돌, ORA-00600, 07445는 내부 오류 (지원 요청 대상)
  • 원인 : 병렬 처리나 힌트 적용 후 내부 오류 발생

* 해결

  • 힌트를 제거해보고 실행
  • 병렬 처리를 줄이거나 OFF
  • 패치 적용 여부 확인

 

 

4. ORA-10046 / tkprof 사용 시 “unparsed” 오류

  • 의미 : SQL Trace 분석 시 쿼리가 파싱되지 않음
  • 원인 : 구문 오류가 있거나 바인드 변수 값이 잘못 전달됨

* 해결

  • SQL 문장을 직접 수행해 파싱 가능 여부 확인
  • 바인드 변수 값 검토


 

 

728x90