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
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
prog/sql_fehler_oru-10027.txt · Zuletzt geändert: 2013/10/21 21:17 von gpipperr