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. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung 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