Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:sql_fehler_oru-10027

Eine PL/SQL Routine wirft den Fehler ORU-10027 - DBMS_OUTPUT Buffer zu klein

Eine PL/SQL Routine funktioniert einwandfrei in SQL*Plus und wirft plötzlich in der Entwicklungsumgebung einen Fehler „ORU-10027: buffer overflow, limit 10000 Byte“.

Eine erste Analyse des eigentlichen Programmcodes ergibt keinen Fehler.

Fehlerstack:

ERROR at line 1:
ORA-20100: An error occured. ORA-20000
ORU-10027: buffer overflow, LIMIT OF 2000 bytes
ORA-06512: IN "GPI.EM$TOOLS", Zeile 106

Der Fehler liegt aber gar nicht in der PLSQL Routine, sondern in der Verwendung von DBMS_OUTPUT!

Der Buffer für DBMS_OUTPUT war in der Entwicklungsumgebung einfach per Default zu klein eingestellt.

Test in SQL*Plus:

Setzen des Buffers für DBMS_OUTPUT auf den kleinsten möglichen Wert:

SET serveroutput ON SIZE 2000
 
 
BEGIN
  FOR i IN 1..20
   loop
    dbms_output.put_line(rpad('Test run ',100,'X')||':'||i);
  END loop;
END;
 /
 
.....
Test run XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
.....
 
ERROR at line 1:
ORA-20000: ORU-10027: buffer overflow, LIMIT OF 2000 bytes
ORA-06512: IN "SYS.DBMS_OUTPUT", Zeile 32
ORA-06512: IN "SYS.DBMS_OUTPUT", Zeile 97
ORA-06512: IN "SYS.DBMS_OUTPUT", Zeile 112
ORA-06512: IN Zeile 4
...

Abhilfe:

  • Setzen der Buffersize in der eigentlichen PL/SQL Routine mit DBMS_OUTPUT.ENABLE(1000000)
  • Setzen der Buffersize mit set serveroutput on size 1000000„ in SQL*Plus
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
prog/sql_fehler_oru-10027.txt · Zuletzt geändert: 2013/10/21 21:17 von Gunther Pippèrr