[Oracle] ora-12899 열에 대한 값이 너무 큼

    ORA-12899 오류는 "value too large for column" 즉, 열에 대한 값이 너무 큰 경우 발생하는 오류입니다. 이 오류는 대개 INSERT나 UPDATE와 같은 DML 문장에서 발생합니다.

    원인

    1. 열의 데이터 타입이 적합하지 않은 경우 : ORA-12899 오류는 열의 데이터 타입이 적합하지 않아서 발생할 수 있습니다. 예를 들어, VARCHAR2(10) 열에 20자 이상의 문자열을 INSERT나 UPDATE하려고 하면 ORA-12899 오류가 발생합니다.
    2. 열의 크기가 적합하지 않은 경우 : ORA-12899 오류는 열의 크기가 적합하지 않아서 발생할 수 있습니다. 예를 들어, VARCHAR2(10) 열에 20자 이상의 문자열을 INSERT나 UPDATE하려고 하면 ORA-12899 오류가 발생합니다.
    3. NLS_LENGTH_SEMANTICS 설정값이 적절하지 않은 경우 : NLS_LENGTH_SEMANTICS 설정값이 CHAR로 설정되어 있는 경우, 열의 크기는 문자 수에 따라 결정됩니다. 이 경우, 문자열이 열의 크기보다 크면 ORA-12899 오류가 발생합니다.

    해결 방법

    1. 열의 데이터 타입을 적합한 타입으로 변경하거나, 열의 크기를 늘리는 방법
    2. 열의 크기를 늘리거나, 데이터를 적절히 축소하여 문제를 해결
    3. 열의 크기를 늘리거나, NLS_LENGTH_SEMANTICS 설정값을 바이트 수에 따라 결정되도록 설정하여 문제를 해결

    select * from propS$ where NAME LIKE 'NLS_%';

    현재의값 'AL32UTF8'을  'KO16KS5601'로 변경한다.

    UPDATE PROPS$ SET VALUE$='AL32UTF8' WHERE NAME = 'NLS_CHARACTERSET';

    오라클 재시작하면 될 수도 있으나,

    오랔르을 재설치하여 캐릭터셋을 미리 설정 해둬도 좋다.

    이블로그의 포스팅을 보면 캐릭터셋을 미리 설정 하는 방법이 있습니다.

    댓글

    Designed by JB FACTORY