Q&A

  • ORA-01000 최대 열기 커서수를 초과 했습니다. 에러가 왜 나는지..
TQuery 하고 프로시져를 써서 프로그램을 짜는데요..
DB를 많이 왔다 갔다 하거든요..
근데 몇 번 왔다 갔다 하면
'ORA-01000 최대 열기 커서수를 초과 했습니다.'
이런 메세지가 뜹니다.

그래서 Query 가 안 닫아졌나 싶어서 Query 를 다 찾아서 try  finally구문을
사용해서 다 닫아줬거든요..

try
...
finally
Query.Close;
Query.Free;
end;

이렇게요..
그리고 프로시져 호출 부분에선 안 닫아 줬구요.. (디비안의 프로시져에서
닫아주기 때문에..) 그리고 프로시져는

with StoredProc2 do begin
Close;
StoredProcName := 'P_DELETECHK_TEMP';
DatabaseName := DM_Alias;
Params[0].Asinteger  := id;
ExecProc;
end;
이런식으로 썼어요.. 혹시나 해서 ExecProc; 문장 다음에 Close 와 Free 를
썼더니 에러가 나더라구요..

DB관련 된 부분은 다 닫아준 것 같은데 왜 에러가 나는지 모르겠어요..
혹시 프로시져를 다른 방법으로 닫아줘야 하는지..
그리고 DB보니까 맥시멈 커서 수가 300으로 되어있거든요..
프로그램 실행시키면서 300개나 커서를 열었을리는 없을텐데..
며칠동안 찾아 봤는데.. 아무리 찾아도 모르겠어요..
도움 부탁드려요..
2  COMMENTS
  • Profile
    이창환 2002.08.22 02:17
    제가 볼때.. 로직상의 문제로 보이거든요..
    전에도 이런문제로 찾아 보았는데..
    무한 루프일 가능성.. 프로그램에서 작은 실수로 인해서 발생하는 경우가 대부분..

    어떤 프로시저에서 다른 프로시저를 호출했는데.. 그 프로시저 내부에.. 호출한 프로시저를 또 호출하는 경우.. 해당 프로시저에서 Query를 사용한다면.. 금방 'ORA-01000 최대 열기 커서수를 초과 했습니다.'이라는 메시지를 출력하죠...

    프로시저를 차례로 Step By Step으로 따라가 보세요..^^

    참고>여기서 프로시저란 DB상의 Stored Procedure가 아닌 프로그램상의 procedure나 function을 얘기함..

    그럼.
    *^^* 즐거운하루 *^^*

  • Profile
    석재명 2002.08.21 14:08
    Oracle의 파라미터 화일에서(init[sid].ora file)
    OPEN_CURSORS 라는 항목의 숫자를 늘려주면 됩니다.


    • 박상현
    • 2002.08.21 03:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.08.21 03:55
      안녕하세요. 최용일입니다. Drag 관련 속성과 이벤트를 사용하세요. 간단히 됩니다. 델파이 도움말에...
    • 이추형
      2002.08.24 20:38
      오렐리(O'rally)에서 나온책을 보시면 활용에 대한 많은 예제와 설명이 있습니다.
    • 델유저
      2006.12.12 02:47
      ...
    • 김의태
    • 2002.08.21 02:22
    • 5 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Jo
      2002.08.21 02:37
      위쪽만 디자인및 코딩하신후 NeedData를 사용해보세여   private   &nbs...
    • 김의태
      2002.08.21 02:49
      죄송한데...안되는데요..ㅠ.ㅠ 똑같이 한번 해봤는데...그냥 똑같이 나와요..ㅠㅠ 에겅..어떻게 다시...
    • KDDG_Jo
      2002.08.21 02:54
      테스트를 먼저 한번해보세여 1. QuickRep1.HasDetail = True 2. DetailBand1에 QRLabel1을 하나...
    • 김의태
      2002.08.21 03:09
      되네요..ㅋㅋ 근데 디테일 밖에 안되네요... 페이지 헤더랑 풋터 모두 통째로 같이 두개 찍히게 하는...
    • ^ㅡ^
      2002.08.21 03:27
      도움이 될지 모르겠네요...... 그냥 페이지해더와 풋터를 없세고요 디텔에서 그냥 그리세요 반만...
    • byun
    • 2002.08.21 01:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한하눌
      2002.08.21 06:55
      다음을 엑셀메크로에서 실행해보시면 힌트를 얻을수도 있겠네요 Sub Macro1()    &nb...
    • 장태원
      2002.08.21 01:26
      에구..바보시네용..ㅡㅡ; tmainmenu 올려놓고 디자인하고 xpmenu 올리시면 됨. xpmenu 의 autodete...
    • 장태원
      2002.08.21 01:10
      아마도. .inttostr( ) 사용하시면 될듯...맞나..에구..ㅡㅡ;
    • ㄴ ㅏ ㅁ ㅑ
      2002.08.21 01:40
      헤헤 실수형이니깐 FloatToStr 을 썼더니 되더라구여. 쫌더 생각해보고 질문하는 습관을 길러야겠어...
    • 김진아
    • 2002.08.21 00:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이창환
      2002.08.22 02:17
      제가 볼때.. 로직상의 문제로 보이거든요.. 전에도 이런문제로 찾아 보았는데.. 무한 루프일 가능성.. 프...
    • 석재명
      2002.08.21 14:08
      Oracle의 파라미터 화일에서(init[sid].ora file) OPEN_CURSORS 라는 항목의 숫자를 늘려주면 됩니다.
    • 코난
    • 2002.08.20 23:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.08.24 18:42
      오라클에서 그런메세지는 나옵니다. 이럴경우 서버의 상태가 Busy해서 많은 응답을 할수 없을때 입니다. ...
    • 하늘벌레
      2002.08.21 00:50
      edit2.text:=edit1.text  <==이렇게 하심 덮어 써지구요 edit2.text:=edit2.text+edit1.te...
    • ㄴ ㅏ ㅁ ㅑ
      2002.08.21 01:03
      제가 너무 생각을 하다보니 저두 정리가 잘 안되네요 딴데서 문제였던것 같습니다. ㅎㅎ... 아무튼 감...
    • 델사랑
    • 2002.08.20 23:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2002.08.21 01:12
      Tbatchmove 를 사용하세요.. mode 를 batAppendUpdate 로 하시고용. 그럼 추가 수정 자동으로 올라...
    • 델사랑
      2002.08.21 01:39
      처음에 데이타를 올릴때 어떻게 해야되요? 한달동안 저장된 데이타를 맨처음으로 서버에 올릴때 어떻하죠?...
    • 김재준
    • 2002.08.20 23:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Jo
      2002.08.21 01:45
      Align 속성을 alNone 되있는지 확인하신후 width 와 height 를 변경하면 크기를 조절할수 있습니다.
    • 천상천하
      2002.08.21 00:14
      Uses ..., Printers; // 미리보기 폼을 가지고 사용한 것 입니다. // PrintDialog 이용시 procedure...
    • 손광현
    • 2002.08.20 22:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Jo
      2002.08.21 01:25
          procedure FormCreate(Sender: TObject);   private   ...
    • 하늘벌레
      2002.08.21 00:46
      차라리 프로시저를 따로 정의하고 MouseDown 에서도 해당 프로시저를 호출하고 버튼클릭 이벤트에서...
    • 맑은물
    • 2002.08.20 07:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2002.08.21 01:24
      prepare 던가.. requestlive 던가... true 로 바꾸셈. 맞나몰겠네.
    • KDDG_Jo
      2002.08.21 01:52
      textOut을 이용하면 한셀에 여러줄을 나타낼 수 있습니다.
    • 김동욱
    • 2002.08.19 23:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Jo
      2002.08.21 02:28
      한번에 다 출력하기에는 힘들어 보이네여(메모리 문제일듯..) 2000건씩 나눠서 출력하시는게 좋겠네여