응용단 개발에 있어서
대용량의 컨텐츠를 DB에 넣기 위해 흔히들 CLOB타입의 컬럼을 사용합니다.
WAS단 컨테이너에서 Select조회(group by나 order by절) 쿼리 수행시 JDBC를 이용해 resource가용 후
ConnectonPool의 자원 반환을 하게 되어있는데요.
이때 CLOB컬럼을 포함한 컬럼을 group by나 order by절로 사용하게되면
WAS컨테이너 커넥션풀은 자원반환 완료하였으나
물리적인 Oracle DB서버의 메카니즘상 해당 CLOB컬럼에 대한 Temp Tablespace의 resource Memory 점유 후
해당 점유 메모리를 Release 못시켜준다고 하네요.
물론 CLOB타입 컬럼의 특성상 최소한의 컬럼 접근 Select조회 쿼리로 튜닝을 해야하는건 맞습니다만..
반환 못시켜주니 응용단에서 해당Session에 물려있는 가용자원에 대해
Temp Tablespace를 강제적으로 DBMS_CLOB.freeTemporary해줘야 한다거나 WAS를 Restart해줘야한다는데....
이게 맞는건지요?
당장 버그 패치를 해줘야 하는게 아닌지.. DB메커니즘상 해줄 수 없으니 응용에서 알아서 풀어라? 응용개발자는 웁니다.^^;;
물리적으로 오라클 DB의 temp tablespace영역의 Size를 크게 잡으면 문제는 없겠죠. 하지만 Infra 자원의 엄청난 낭비겠죠...
제가 잘못알고 있는건지....이게 사실인지 좀 어이없네요...
|