리눅스에서 오라클 핸들링 OCI관련 내용입니다.

poiq1의 이미지

안녕하세여^^ 리눅스 5.6 엔터프라이즈에서 작업중에 있습니다.

이번에 OCI라이브러리를 이용해서 해당 오라클 DB에 주기적으로 SELECT문을 날리는 프로그램을

제작했습니다.

10초 단위로 DB에 connection 한 후 SELECT문을 돈 후에 close하는 프로그램인데요..

이게 4~5시간 정도 경과시에 오류를 뱉어냅니다.

valgrind 툴을 이용해서 메모리 릭 체크를 하는데요..

invalid file descriptor 1019 in syscall open()

이런 문구의 오류 메시지가 출력이 댑니다.

이곳저곳을 확인해 본 결과. 오라클 섹션이 열려져 있는것이 확인이 됐습니다.

Command 는 SELECT 상태이고 Status 는 INACTIVE 상태로 정상적일 경우 이 섹션이 닫혀 있어야 하는데...

현제 섹션이 닫히지 않고 계속 살아 있는것입니다.

섹션이 살아있기 때문에 다음 사이클에서 오류가 발생하는거 같아 보이는데...

프로그램상 한 사이클 돌때 connection 를 프리 해주는데... 프리가 잘 안대는거 같습니다.

혹시 이에 관련되서 비슷한 현상이나 문제점을 알고 계신분이 있으신지요..?