cbuilder 사용자입니다만, 답답해서 글을 올립니다.
한번 올렸던 질문인데 대답해 주시는 분이 없어서 다시 한번 올립니다.
cbuilder 4.0으로 다음과 같은 프로그램을 작성하였습니다.
하나의 프로그램에서 여러개의 쓰레드를 띄우고 각 쓰레드는 oracle에 접속하여
데이터를 조회합니다. 업무시간을 판단하여 업무시간일 경우에는 database를열고
그렇지 않을 경우에는 연결을 끊습니다.
그런데 이런 상태로 수 주내지 한두달 정도 지나고 나서 오라클 서버쪽에서 보면 오라클
세션이 쓰레드의 숫자만큼 일정하게 유지되는 것이 아니라 쓰레드 숫자의 몇 배로 쌓여있습니다.
무엇이 잘못되서 세션이 쌓이는 것인지 모르겠습니다.
database 컴포넌트에서 Close()메소드를 호출하면 세션이 끊어지는 것으로 알고 있는데...
세션의 숫자를 일정하게 유지하도록 하는 방법이 없을 까요?
제가 코딩한 방식은 다음과 같습니다.
...
근무시간체크
if 근무시간 //근무시간 이면
if !db.Connected //연결이 안 되어있으면
db.Open();
else
if db.Connected //연결이 되어있으면
db.Close();
,
,
,
query->Close();
query->SQL->Clear();
query->SQL->Add("Select ....")
,
,
고수님들의 조언 부탁드립니다.