본문 바로가기
IT/DB

[ORACLE] 자주보는 오라클 에러 모음 / ORA-에러코드 모음

by 스터딩아재 2021. 8. 20.
반응형

 

 

* 오라클 사용 시 발생할 수 있는 각종 ORA 에러들의 원인 및 해결방법을 참고할 수 있도록 작성.

* 자주 보는 에러코드를 Ctrl+F로 찾을 수 있도록 정리.

* 전체는 ORA 에러코드에 대한 정보는 아래 공식 URL 참고.

 

https://docs.oracle.com/cd/B10501_01/server.920/a96525/e0.htm#ERRMG101

 

ORA-00000 to ORA-00899

 

docs.oracle.com

 

 

 

오라클 에러코드 모음

 

* ORA-00001 : 무결성 제약 조건에 위배됩니다. (PK 중복)

 - PK 채번 규칙 확인

 - 쿼리 2번 실행 확인

 - 송신 데이터 확인

 

 

* ORA-00600 : internal error code, arguments: [], [],[] (DB 내부 오류)

 - DB 내부오류라 검색해도 정보가 참 안 나옵니다.

 - 뒤에 argument를 통해 시간초과, 파일 손상, 메모리 오류 등 원인을 찾을 수 있다고 하는데 저의 경우는 CLOB 컬럼을 IS NOT NULL 했더니 발생했습니다. 혹 추가한 SQL에 CLOB이 있는지 확인해보세요.

   (CLOB_COLUMN IS NOT NULL => DBMS_LOB.SUBSTR(CLOB_COLUMN, 3000) IS NOT NULL)

 

 

* ORA-00904 : invalid identifier, 부적합한 식별자 (오타)

 - 오타 확인

 

 - WM_CONCAT이나 LISTAGG 사용 시 발생했다면 버전이 안 맞아서 나올 수 있습니다.

 

[ORACLE] 오라클 문자열 붙이기 / WM_CONCAT / LISTAGG

* WM_CONCAT, LISTAGG, 문자열 연결, 컬럼 붙이기, 컬럼연결, 여러행합치기 * 10g~11g R1에서는 WM_CONCAT, 11g R2 이상부터는 LISTAGG 사용 (버전모르겠으면 그냥 다해보고 되는거 해라) 1. WM_CONCAT ( 10g ~ 11..

studyingazae.tistory.com

 

 

 

* ORA-00918 : column ambiguously defined, 열의 정의가 애매합니다. 모호합니다.

 - SELECT 혹은 WHERE 절에 특정 컬럼이 어떤 테이블의 컬럼을 사용하는 건지 명확하지 않다는 것.

-- CASE 1
SELECT AGE ( -- 둘 중 어떤 AGE?
  SELECT A.AGE, B.AGE
  FROM   A, B
)

-- CASE 2
SELECT *
FROM   A , B
WHERE  AGE = '50' -- A, B에 모두 AGE가 있을 때

 

 

 

* ORA-00942 : 테이블 또는 뷰가 존재하지 않습니다.

 

 

 

* ORA-01031 : 권한이 불충분합니다.

 

 

 

* ORA-01400 : NULL을 삽입할 수 없습니다. (NOT NULL 속성에 NULL 삽입)

 

 

 

* ORA-01438 : 이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다.

 - 데이터타입보다 큰 값을 넣으려 함.

 

 

* ORA-01461 : LONG 값은 LONG 열에 삽일할 때만 바인드 할 수 있습니다.

 - VARCHAR2에 4000자 이상 저장할 때 발생

 

 - CLOB으로 컬럼 타입 변경이 필요(아래 포스팅 내 컬럼 타입 변경 참고)

 

 

[ORACLE] 오라클 DDL ALTER 문

* 컬럼 추가/삭제, 데이터 타입 변경, 코멘트 변경 * ALTER문 일하다 보면 자주 쓰는데 정말 기억 안 나고 매번 찾기 귀찮다. 모아 두자. 1. 컬럼 추가/수정/삭제 -- 추가 ALTER TABLE 테이블명 ADD(컬럼명

studyingazae.tistory.com

 

 

 

* ORA-01489 : result of string concatenation is too long

 - WM_CONCAT, LISTAGG 중 너무 길게 붙인 경우 발생

 

 - SUBSTR로 잘라쓰던지 LISTAGG의 경우 ON OVERFLOW TRUNCATE (아래 포스팅 참고)

 

 

[ORACLE] LISTAGG 4000자 초과/길이 초과 ON OVERFLOW TRUNCATE 절(12c 이상)

* Oracle 12c 이상 * LISTAGG 쓰다가 ORA-01489: result of string concatenation is too long 에러날 때 참고 1. 4000바이트 초과 건 생략 방법 -- 초과분 생략하기 SELECT LISTAGG(컬럼명, ',' ON OVERFLOW TRUN..

studyingazae.tistory.com

 

 

 

* ORA-01732: 뷰에 대한 데이터 조작이 부적합합니다

- UNION 혹은 GROUP BY 된 VIEW를 직접 조작하려 할 때 발생합니다. (아래 참고)

 

 

[ORACLE] ORA-01732 : 뷰에 대한 조작이 부적합합니다.

ORA-01732의 경우 뷰를 INSERT, UPDATE, DELETE 하는 경우 발생할 수 있습니다. 예시 SQL UPDATE V_USER_INFO SET PWD = '1111' WHERE USER_ID = 'A' 아마 해당 에러가 발생하신 분들은 이와 같은 뷰에 대해 직접..

studyingazae.tistory.com

 

 

 

* ORA-01758 : table must be empty to add mandatory(Not Null) column

 - 테이블은 필수 열을 추가하기 위해(NOT NULL) 비어 있어야 합니다.

 - 테이블에 신규 컬럼 추가를 위해 ALTER 문 실행 시 발생. 이미 테이블에 row가 존재하는데 not null 속성의 새로운 컬럼을 만들려고하다보니 기존 row들은 해당 컬럼을 가지고 있지 않기 때문에 발생하는 오류.

 

- 기존 row를 모두 지우고 추가하던지, default를 주고 먼저 생성한 다음 not null 속성을 추가해주면 된다.

 

ALTER TABLE ooo ADD (xxx VARCHAR2(1) DEFAULT 'Y');

ALTER TABLE ooo MODIFY (xxx VARCHAR2(1) NOT NULL);

 

 

* ORA-01810: 형식 코드가 두 번 나타났습니다. (format code appears twice)

- TO_CHAR, TO_DATE 등에서 format 부분을 2번 쓴 경우 발생

- YYYY-MM-DD HH:MM:SS (오타 확인 필요)

 

 

* ORA-01818: 'HH24'와 AM/PM은 혼재할 수 없습니다. ('HH24' precludes use of meridian indicator)

- TO_DATE 시 format에 HH24와 AM/PM을 동시에 사용하면 발생

- AM/PM을 쓸거면 HH24를 HH로 변경하면 TO_DATE 후 알아서 24시 형태로 표현됨.

- HH24 쓸거면 AM/PM 제거

 

 

* ORA-01843: 지정한 월이 부적합합니다. ( not a valid month )

- TO_DATE 시 월이 1~12 외의 값이 들어 간 것

- 또는 TO_DATE('05-MAY-2022', 'DD-MON'-YYYY')를 그대로 date타입에 저장 시 발생합니다.

  DB툴에선 정상인데, 서버에서 에러가 나는 경우면 서버와 디비간 NLS_LANG 차이로 발생합니다. 

  3번째 인자를 추가해주면 해결됩니다.

- TO_DATE('05-MAY-2022', 'DD-MON'-YYYY', 'NLS_DATE_LANGUAGE=AMERICA')

 

 

 

* ORA-01849: 시간은 1과 12사이여야 합니다. (hour must be between 1 and 12 )

- 'YYYYMMDD HH24MISS' 

- 시간에 HH24 추가

 

 

* ORA-01861: 리터럴이 형식 문자열과 일치하지 않음 ( literal does not match format string )

- 주로 SQL문의 데이터 타입 차이로 발생함.

- TO_DATE, TO_CHAR 등 부분 검토 필요

 

 

 

* ORA-06550 : PL/SQL 스크립트에서 에러가 발생한 Line과 Column을 알려주는 에러

 - 해당 메시지 아래 찍힌 PLS-00000 에러는 확인 해봐야함.

 

 

 

* ORA-06553 : arguments의 갯수가 다르다.

 - 내장함수 쓸 때 찾아보고 쓰자. 뭔가 잘못 쓴거다. 

 

 - WM_CONCAT, LIST_AGG 사용 시 매개변수 갯수가 안 맞을 때 발생

 

 

 

반응형

 

 

* ORA-12154 : TNS:could not resolve the connect identifier specified

 - TNSname.ora 파일에 문제가 있는거다. 

 - DB IP나 Port 확인해보고, DB 별칭 앞에 공백있어도 에러나더라.

  ( ' 'DEV_DB = () 이라고 시작하는 맨앞에 공백은 지워주자 )

 

 

* ORA-12899 : 열에 대한 값이 너무 큼(실제: 2, 최대값: 1)

 - 데이터타입 사이즈보다 긴 값을 넣으려 함.

 

 

* ORA-22858 : 데이터유형의 변경이 부적당합니다.

 - VARCHAR2를 CLOB으로 ALTER 시 발생 (자세한 내용 아래 포스팅 4.2 참고)

 

[ORACLE] 오라클 DDL ALTER 문(컬럼명/타입 변경,코멘트 추가,디폴트 추가,CLOB 변경)

* 컬럼 추가/삭제, 데이터 타입 변경, 코멘트 변경 * ALTER문 일하다 보면 자주 쓰는데 정말 기억 안 나고 매번 찾기 귀찮다. 모아 두자. 1. 컬럼 추가/수정/삭제 -- 추가 ALTER TABLE 테이블명 ADD(컬럼명

studyingazae.tistory.com

 

 - ORACLE 11g에서 VISIBLE ALTER문 실행 시 발생 (자세한 내용 아래 포스팅 참고)

 

[ORACLE] 테이블 컬럼 순서 변경

* 컬럼을 추가했는데, 순서가 엉망이다 순서를 바꾸고 싶다. * 오라클 12c 이상이면 쉬운데, 11g 이하면 꼭 해야되는거 아니면 안하는게 낫다. 1. 컬럼 순서 변경(오라클 12c 이상) * COL A, C, D, B 순서

studyingazae.tistory.com

 

 

* ORA-38104 : Columns referenced in the ON Clause cannot be updated

 - MERGE문에서 ON절에서 사용한 컬럼을 UPDATE 할 때 발생(MERGE문 사용법은 아래 포스팅 참고)

 

 

[ORACLE] MERGE문 사용법

* 머지도 진짜 안 쓰고 싶은데, 필요할 때가 있다. * MERGE문의 다양한 형태를 알아보자. 1. MERGE문 기본 형태 MERGE INFO 테이블 or 뷰 USING 테이블 or 뷰 or 서브쿼리 or DUAL ON join조건 or MATCH조건 -- TA..

studyingazae.tistory.com

 

 

 

그리드형

댓글