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