좀 무식한 방법이지만...
대용량의 자료를 Oracle에서 Select해옵니다. 약 20만건...
이렇게 했을때 Query는 되는데 이 Query결과를 차례로 Next명령으로
순차적으로 읽어오면 어느정도 지난 후 메모리가 부족하다고 에러가 발생합니다.
NT Server에서 실행하는데 프로세스를 보면 Next명령때 메모리가 계속 증가하는데
그것 때문인것같습니다.
select * from tablename 쿼리...한후
...
first;
while not eof do
begin
일반적인 처리루틴...
next;
end;
루프 도중에 위와 같은 Error가...
이런 경우 어떻게 처리해야 해결할 수 있을지...
Next로 지나온 Record자료를 메모리에서 해제할 수 있으면 좋은데...
고수님의 좋은 해결책을 기다리겠습니다.
20만건의 레코드를 쿼리하고 next한다고 메모리가 증가되는 건 아닌것 같은디여...
설사 그렇더라도 시스템이 죽는 현상까지는 발생하지 않을 것 같은데여
아마도 일반적인 루틴부분에 메모리를 올리는 제대로 해제하지 않는 코딩이
있을듯 하네여
글구 왜 풀로 왜 읽어야 하는 걸까요 자료를 텍스트파일이나 백업용으로
뭔작업을 하시려나여....
윤 wrote:
> 좀 무식한 방법이지만...
>
> 대용량의 자료를 Oracle에서 Select해옵니다. 약 20만건...
>
> 이렇게 했을때 Query는 되는데 이 Query결과를 차례로 Next명령으로
>
> 순차적으로 읽어오면 어느정도 지난 후 메모리가 부족하다고 에러가 발생합니다.
>
> NT Server에서 실행하는데 프로세스를 보면 Next명령때 메모리가 계속 증가하는데
>
> 그것 때문인것같습니다.
>
>
>
> select * from tablename 쿼리...한후
>
> ...
>
> first;
> while not eof do
> begin
> 일반적인 처리루틴...
> next;
> end;
>
> 루프 도중에 위와 같은 Error가...
>
>
> 이런 경우 어떻게 처리해야 해결할 수 있을지...
>
> Next로 지나온 Record자료를 메모리에서 해제할 수 있으면 좋은데...
>
> 고수님의 좋은 해결책을 기다리겠습니다.
>