MAX_STRING_SIZE = EXTENDED

설정을 하게 되면 varchar2(4000) 에서 varchar2(32767) 까지 사용이 가능 합니다.

 

오라클 문서

https://docs.oracle.com/…/GUID-D424D23B-0933-425F-BC69…

장점은 무엇이며 단점을 무엇이 있을까요?

 

1. 장점

: 지금은 거의 LONG 타입이 없겠지만 대체 가능 합니다.

: LOB 타입까지 사용 할 필요성이 없다고 판단이 되시면 대체 가능 하여 여러가지 기대 효과도 있겠네요.

: 프로그램 구현 즉 SQL문 구현시 복잡함이 덜 하고 특히 프로시저 사용시 기존에 VARCHAR2(4000) 까지 사용 했던 방식그대로 길이만 조정해서 사용 가능 합니다.

 

2. 단점

: 기존 DBMS 즉 운영중 또는 지금 현재 개발 중 인 곳은 많은 테스트와 준비를 한 후 변경 해 주시길 바랍니다. 신규 DB 서버에서 부터 설정을 권해 드리고 싶습니다.

: ORA-14695 에러가 나면서 DB가 안올라 옵니다.

: 인덱스를 사용하는 방식이 다릅니다. 따라서 주의 해 주셔야 합니다.

 

인덱스 사용 방법은 아래와 같습니다.

 

#. 테스트 환경

select VERSION, EDITION, DATABASE_TYPE from v$instance;

VERSION EDITION DATABASE_TYPE

—————– ——- —————

12.2.0.1.0 EE SINGLE

 

1) 테이블 생성

CREATE TABLE TBL_SQLID

(

ONWER VARCHAR2(128),

TABLE_NAME VARCHAR2(128),

SQL_TEXT VARCHAR2(32000),

SQL_ID VARCHAR2(32000),

SQL_ID_COUNT NUMBER,

IN_DATE VARCHAR2(30)

) NOLOGGING;

 

2) 인덱스 생성

ALTER TABLE TBL_SQLID ADD (

SQL_ID_HASH AS (STANDARD_HASH(SQL_ID)),

SQL_TEXT_HASH AS (STANDARD_HASH(SQL_TEXT))

);

 

ALTER TABLE TBL_SQLID ADD CONSTRAINT PK_TBL_SQLID UNIQUE( SQL_ID_HASH, SQL_TEXT_HASH);

 

실질적으로 수집한 데이타 카운터 한 내용 입니다.

SELECT LENGTHB(SQL_ID) FROM TBL_SQLID order by LENGTHB(SQL_ID) DESC NULLS LAST;

 

LENGTHB(SQL_ID)

—————

15203

9659

7517

6439

5011

3723

3625

~~~~~~~~~

=======================================

 

참고로 저는 장점을 선택 하여 가급적 설정을 해 놓은 상태 이고, 개발자분들에게 알려드리고 사용을 권하지만, 결과적으로 보면 처음부터 개발 되지 않은 테이블을 변경해서 사용하지 않습니다.

 

https://docs.oracle.com/database/121/REFRN/GUID-D424D23B-0933-425F-BC69-9C0E6724693C.htm?fbclid=IwAR0bwaa-MPY7RBkyHyfz35s2f3lbnDemm_1_skof64vwccOK4edJ24zEaus#REFRN10321

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다