DBMS_OUTPUT.PUT_LINE 에 대해... 1 1,090

by 김홍관 [2006.11.23 09:16:12]


pl/sql에서 set serveroutput on size 20000 으로 출력해 보려고 합니다.

 

맨 처음 pl/sql에서 set serveroutput on size 20000  을 한번 실행하면 각 프로시져 실행시마다 메모리를 reset 하고 실행이 되는지...  아니면 각 프로시져 실행시 마다 reset 되지 않고 메모리에 쌓이게 되는지요?

 

그리고 클라이언트에서 프로시져를 호출하여 실행할 경우 프로시져 소스 안에 DBMS_OUTPUT.PUT_LINE 로 출력하는 부분이 실제로 메모리에 쌓이게 되는지요?

 

실제로 쌓이게 된다면 언젠가는 메모리 버퍼가 부족하여 에러를 내는 경우도 발생할수 있을것 같은데요?

 

고수님들의 도움을 기다립니다.

by ocp한달 [2006.11.24 00:00:00]
SGA와 관련된 사항입니다.
SGA(System Global Area)는 오라클 시스템에서 사용하는 메모리 영역입니다. 이 크기는 사용자가 직접 지정해 줄 수 있습니다.
SGA는 여러부분으로 나뉘어있는데, 이중 sql, pl/sql이 저장되는 영역이 바로 shared pool의 library cache입니다.실행되었던 구문을 이곳에 저장해놓고 동일한 쿼리가 호출될 때 재사용하는 것이죠. 쿼리를 다시 파싱하는 과정을 생략할 수 있어 성능향상에 도움을 줍니다. 쿼리를 저장하는 방식은 LRU 알고리즘을 사용하는데 자주사용하는 쿼리는 놔두고, 오랫동안 사용하지 않은 쿼리는 삭제됩니다.