ORA-01722: Invalid number
Oracle의미
숫자 컨텍스트가 필요한 곳에 숫자로 변환할 수 없는 문자열이 사용되었다. 암시적 또는 명시적 변환이 실패했다.
원인
숫자 컬럼과 텍스트 비교(예: WHERE num_col = 'ABC'), 숫자 필드에 문자가 포함된 값 삽입, TO_NUMBER에 부적합한 포맷, 또는 소수점/그룹 구분자 불일치(쉼표 vs 마침표).
해결 방법
변환에 실패한 표현식을 찾는다. 대개 WHERE 조건 또는 INSERT 값이다. 텍스트/숫자 비교에서 타입 호환성을 보장하고 필요하면 명시적 변환을 사용한다: TO_NUMBER(my_column) 또는 텍스트 쪽에 TO_CHAR. 애플리케이션 계층에서 숫자 컬럼에 비숫자 입력이 들어가지 않도록 막는다. NLS_NUMERIC_CHARACTERS 설정에 주의한다.
같은 데이터베이스의 다른 항목
- ORA-00018Maximum number of sessions exceeded
- ORA-28000The account is locked
- ORA-01578Oracle data block corrupted (file #, block #)
- ORA-02049Timeout: distributed transaction waiting for lock
- enq: TX - row lock contention대기: 다른 트랜잭션이 보유한 행 수준 락에 세션이 블로킹됨
- log file sync대기: 커밋 시 LGWR이 redo를 디스크에 플러시하기를 세션이 기다림
- db file sequential read대기: 단일 블록 물리 읽기, 보통 인덱스 또는 테이블 조회