Oracle 19c ORA-04031 에러 관련... 0 2 1,371

by 냉동닭 [Oracle 에러코드] ORA-04031 JAVA 19c [2022.03.16 18:00:04]


서비스 운영하면서 기존 JAVA프로그램을 통한 오라클DB 추출하던 중 에러가 발생해서 찾다가 포기하여 이렇게 도움을 청합니다.

기존 JAVA소스는 변경된 것 없이 오라클 11g에서 19c로 변경된 적이 있었습니다.(JAVA버전은 19c에 맞게 1.8버전으로 업그레이드했습니다.)

11g에서는 잘 추출되던 부분이었는데, 19c로 넘어온 후 특정JAVA프로그램을 추출하다보면 안정적으로 메모리가 유지되다가 특정 라인을 부분에서 large pool 메모리가 쌓여 ORA-04031에러를 뱉어내고 세션이 끊기더군요.

※ 같은 유형의 JAVA프로그램에서 이보다 훨씬 큰 데이터들은 잘 추출됩니다.

이 부분에 대해서 pool메모리가 낮아서 발생하는 부분은 아닌 걸로 보이는데, 오라클의 특정블록이 11g->19c 업그레이드 되면서 깨진 건 아닌지 의문이 듭니다.

현재 pool메모리의 현황은 아래와 같습니다.

component          current_size          min_size          max_size

shared pool       21609054208    19327352832    21609054208

large pool          67108864000      939524096     32078036992

java pool              939524096       268435456       939524096

해당 내용에 대한 원인은 어떻게 파악해야할까요..

도움주실 수 있는 분은 댓글에 답변 부탁드립니다..ㅠ

by allen [2022.03.18 08:20:14]

댓글이 없어서 ... 정확한 정보와 지식은 아니지만 경험에 의한 답변이라도 드려볼께요.

저같은 경우 11g -> 19c로 변경 후 몇몇 Package가 많은 메모리를 사용하는것을 확인하여서 확인해본 결과 아주 많은 단계에 걸쳐서 작업이 진행되었고 

해당 작업들은 모두 Hard Parsing 되는것을 확인하였습니다.

하여 해당 작업들의 메모리 사용량을 줄이기 위해 중간 중간 Temptable을 생성하여 작업 단계별 중간 결과물을 Temptable에 담아 처리하였더니 어느정도는 해소 되었습니다. 

11g -> 19c로 변경하면서 발생한 문제인지 아니면 데이터량이 늘어서 인지는 끝까지 확인하지 못하고 이직을해서 제가 수정했던 경험 바탕으로 공유드려요.

조금이나마 도움이 되었으면 합니다.


by 냉동닭 [2022.04.07 14:07:37]

감사합니다...

찾다가 포기해서 DB엔지니어 바지가랑이 붙잡아 보려구요...

답변 참고해서 확인해보겠습니다.

귀중한 경험공유 다시 한 번 감사드립니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입