[Oracle] Instant Client 12.2 Commit Error

2021. 7. 25. 16:42W.IT/W.데이터베이스

 Instant Client는 Oracle DB에 접근하기 위해 Oracle에서 제공하는 Client 모듈입니다.

 

 저희는 이 모듈을 통해 Oracle DB로 원격 접속, pro*c를 사용하여 DB에 Query 실행, core dump가 발생했을 시 로그를 통하여 위치 탐색 및 원인 분석 등 이 가능합니다.

 

 이 글에선 제가 회사에서 제품을 만들며 발생했던 Commit Error를 다룰 예정입니다. 

 (Instant Client에 대한 자세한 내용은 나중에 다뤄보도록 하겠습니다.)


Instant Client 다운로드하는 URL 주소

https://www.oracle.com/kr/database/technologies/instant-client/downloads.html


 회사에서 IoT 플랫폼 데모 제품을 만들던 도중 DB에 Insert 후 Commit 하는 부분에서 해당 프로세스가 죽어 core dump가 발생하였고 죽은 이유는 SIGABRT (signal 6)을 받았기 때문입니다.

 

 oradiag를 확인한 결과 아래와 같은 내용이 찍혀있었습니다.

더보기

oci-24550 [6] [[si_signo=6] [si_errnp] [si_code = -6] [sig_int = 0] [si_ptr=(nil)] ....

 해당 문제를 발견하고 원인에 대한 분석을 진행하기까지 꽤 시간을 쏟아서 찾은 반쪽자리 답은 프로세스를 Mulit Thread로 사용 시 죽는다는 것이었습니다. 

 

 반쪽자리 답이라고 한 이유는 왜 죽는지를 찾지 못하였기 때문입니다...

 계속 시간을 쏟기엔 프로젝트 일정이 넉넉한 편이 아니라.. 다른 Client 버전은 해당 문제없이 잘 동작 하기에 다른 버전으로 프로젝트를 진행하였습니다.

 

 만약 나중에 기회가 되어 이유를 찾게 되면 다시 포스팅하겠습니다.

 

 

결론
프로세스를 Multi Process로 개발 시 Instant Client 12.2 버전을 사용하면 안 된다.

제 글에서 부족하거나 잘못된 부분이 있다면 댓글로 남겨주시길 부탁드립니다.

※ 제 글은 제가 코딩하면서 지속해서 확인하기 위한 히스토리 성 정보들이자 회사 생활 중 실제 프로그램을 코딩하며 중요하거나 필요했던 정보들을 공유하기 위해 적은 글입니다.