본문 바로가기

IT관련

오라클 Varchar2 타입 길이제한 4000 에서 32K 확장 (max_string_size 설정)

오라클 Varchar2 타입의 길이제한은 4000 바이트입니다. 더 크게 사용하려면 Long 이나 LOB 타입을 써야합니다.

하지만, Long 이나 LOB 을 사용하는 경우 각종 스트링 작업관련 함수들을 못쓰는 불편함이 있습니다.

Oracle 12c 부터는 이것을 늘릴 수 있는 방법이 제공되는데, DB 파라메타 max_string_size 를 바꿔주면 됩니다. (standard -> extended)

 

이걸 alter system 명령으로 그냥 바꾸면 아래와 같이 ORA-14694 에러를 만나게 됩니다.

 

SQL> alter system set max_string_size=extended;
alter system set max_string_size=extended
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-14694: database must in UPGRADE mode to begin MAX_STRING_SIZE migration
 

 

max_string_size 파라메타를 바꿔주려면 DB를 Upgrade 모드로 기동한 후에 변경해줘야 합니다.

 

 

Upgrade 모드로 DB를 Open 한 후에 alter system 커맨드로 파라메타를 변경해주고, utl32k.sql 스크립트를 실행해줘야 합니다.

 

Invalid Object 들에 대한 재컴파일을 위해서 아래 utlrp.sql 스크립트도 실행해줍니다.

 

SQL> @?/rdbms/admin/utlrp.sql

 

 

DB를 재기동해주면 이제부터는 32K 바이트까지 Varchar2 타입을 사용가능합니다.

 

 

Multi-tenant DB 의 경우는 작업방식이 약간 다릅니다. 매뉴얼을 참조바랍니다.

>> https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/MAX_STRING_SIZE.html#GUID-D424D23B-0933-425F-BC69-9C0E6724693C