[ORACLE]ORU-10027: buffer overflow

Database 2016.10.10 10:52 Posted by 애플자라

ORU-10027: buffer overflow, limit of 20000 bytes등등의 에러가 발생한다.

 

이 에러의 원인은 프로시저 내에

 

DBMS_OUTPUT.PUT_LINE('L_SQLCODE : ' || L_SQLCODE); 과 같은

 

DBMS_OUTPUT.PUT_LINE라는 명령문 처리시 나는 에러 였다.

 

오라클이 버퍼 출력시 너무 많은 메모리를 사용하여 사용량 초과시 발생하는 에러이다.


CREATE OR REPLACE FUNCTION APLUSORA.LONG_TO_CHAR( in_rowid rowid,in_owner

varchar,in_table_name varchar,in_column varchar2) 

RETURN varchar

IS

text_c1 varchar2(32767);

sql_cur varchar2(2000);

BEGIN

  sql_cur := 'select '||in_column||' from

'||in_owner||'.'||in_table_name||' where rowid =

'||chr(39)||in_rowid||chr(39);

  dbms_output.put_line (sql_cur); --> 삭제

  execute immediate sql_cur into text_c1;

  Return text_c1;

END; 

/


 

해결 방법은

1. 프로시저 내에 DBMS_OUTPUT.PUT_LINE 명령문을 삭제

 

2. 버퍼 메모리 사이즈 증가 명령문을 실행한다.

 exec dbms_output.enable('500000000');