본문 바로가기
Data & Programming/Oracle

[오류] ORA-20000: ORU-10027: buffer overflow, limit of 20000 bytes ORA-06512: "SYS.DBMS_OUTPUT"

by 눈부셔™ 2017. 2. 2.
728x90

당행의 코어뱅킹은 정책상 오라클 프로시저를 제한하고 있으나, 오래전 위성시스템에서 프로시저를 돌릴때, 발생했던 오류 이다.

 

■ 문제발생 : ORA-20000: ORU-10027: buffer overflow, limit of 20000 bytes ORA-06512: "SYS.DBMS_OUTPUT"

 

■ 문제원인 : 이 구문은 오라클은 해당 처리 내용을 화면이나 버퍼로 출력하는데, 너무 많은 내용을 출력하다 보면 한정된 메모리 사용량을 벗어나서 오버 플로우를 일으키는 것이다.

■ 문제해결 : 버퍼의 메모리 사이즈를 늘려주는 명령문을 사용하거나 프로시저 내에 DBMS_OUTPUT.PUT_LINE 명령문을 삭제하는 것이다.

 

□ 해결예시

 

DECLARE
  I_STD_YM VARCHAR2(200);
  I_REWD_GB VARCHAR2(200);
  I_FUND_CD VARCHAR2(200);
  I_COMP_GB VARCHAR2(200);
  I_WORK_IP VARCHAR2(200);
  I_WORK_EMPNO VARCHAR2(200);
  O_SQLMEGS VARCHAR2(200);

BEGIN
  I_STD_YM := NULL;
  I_REWD_GB := NULL;
  I_FUND_CD := NULL;
  I_COMP_GB := NULL;
  I_WORK_IP := NULL;
  I_WORK_EMPNO := NULL;
  O_SQLMEGS := NULL;
  
  DBMS_OUTPUT.Enable(100000000);
  TTFUSER.OBB_5600 ( I_STD_YM, I_REWD_GB, I_FUND_CD, I_COMP_GB, I_WORK_IP, I_WORK_EMPNO, O_SQLMEGS );
  COMMIT;
END;

728x90