ORA-12899: value too large for column
ORA-12899: "유저명"."테이블명"."컬럼명" 열에 대한 값이 너무 큼 (실제: 5, 최대값: 3)
위의 에러는 컬럼에 정의된 길이보다 큰 문자열을 입력하려할 때 발생하는 에러 입니다.
아래의 커리문처럼 NAME 이라는 컬럼에 NCHAR(3) 로 정의해주었으나, 3글자가 아닌 5글자를 입력하여 정의해준 문자열의 수 보다 많이 입력될 때에 발생 하기 때문에 NCHAR(3)를 NCHAR(5)와 같이 수정해주면 에러가 해결됩니다.
- 수정 전 쿼리 중 문제가 된 부분
"MEMBERNAME" NCHAR(3) NOT NULL ENABLE
- 수정 후
"MEMBERNAME" NCHAR(5) NOT NULL ENABLE
간혹 DB의 데이터 이관 시 UTF-8 과 ASCII 처럼 서로 Byte 수가 틀려 캐릭터셋의 문제로 에러가 발생하기도 합니다. 오라클의 캐릭터셋을 확인 후 변경을 해주어야 합니다.
1. 쿼리를 통해 캐릭터셋 조회
SELECT * FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER
LIKE '%CHARACTERSET%';
2. 캐릭터셋 변경(UTF-8 -> KO16MSWIN949)
SQL> update props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'; // value에 변경하려는 문자셋 입력
SQL> update props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET'; // value에 변경하려는 문자셋 입력
SQL> commit;
SQL> shutdown immediate
SQL> startup
주의 : 기존 데이터 깨짐 등의 가능성이 있기에 매우 조심히 작업해야 합니다. 기존 데이터를 모두 백업하고 테스트 후에 진행하는것을 권고 드립니다.
(원본 백업 파일은 필수)
'Database > Oracle' 카테고리의 다른 글
[Oracle] ORA-00904: 부적합한 식별자 (0) | 2019.11.13 |
---|---|
[Oracle] 테이블명 대소문자, 띄어쓰기 사용 방법 (1) | 2019.11.12 |
[Oracle] ORA-01722: 수치가 부적합합니다 (0) | 2019.11.12 |
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합 합니다. (0) | 2019.11.12 |
[Oracle] Express Edition (XE) 18c 설치 (0) | 2019.11.12 |