1. CLOB 을 읽을 때 4000bytes 가 넘을 경우 java 단에서 메모리 부족으로 에러가 발생한다.

2. DBMS_LOB.SUBSTR을 사용하여 4000bytes 이하로 데이터를 잘라서 가져올 수 있다 (CLOB 데이터는 VARCHAR2로 바뀐다)

3. CLOB 칼럼에 함수를 씌우거나 "||" 를 사용하여 문자를 붙이는 등의 작업이 DB query 에서 이뤄질 경우 temp segment 에 CLOB 데이터 크기만큼 공간을 차지하게 된다.

4. order by 등과 다르게 CLOB 으로 인한 TEMP segment 공간은 session이 끝날때 까지 제거되지 않는다.

5. TEMP space 가 꽉 차게 되면 타 서비스에 영향을 주게 된다

 

SUBSTR 을 사용하지 않고 CLOB 데이터를 그대로 읽어오면 TEMP SEGMENT 가 full 차는 현상은 방지할 수 있지만

CLOB 데이터의 크기가 4000bytes 가 넘을 경우 자바에서 읽어올 수 없다.

 

해결방법은

1. CLOB 데이터를 temp segment 에서 release 해줄 수 있도록 alter session ~ 을 SUBSTR(CLOB,...) 쿼리와 함께 호출.

2. java 에서 clob 데이터에 대한 release 처리를 해준다.

 

반응형

'DB > ORACLE' 카테고리의 다른 글

[ORACLE] VARCHAR2, CLOB 사용 및 가공시 주의점  (1) 2021.07.21
[ORACLE] 실행중인 쿼리 조회  (0) 2021.03.25
ORACLE 로컬 bit 확인  (0) 2021.03.16
[oracle] sysdate  (0) 2021.02.08
LEAD, LAG  (0) 2021.02.03

+ Recent posts