sqloracle-databaseoracle11goracle-sqldeveloperplsqldeveloper

Oracle SQL Developer throwing ORU-10027: buffer overflow when run stored procedures with a lot of dbms.PUT_LINE


I got this error

ORU-10027: buffer overflow, limit of 20000 bytes

when I ran stored procedures for Bulk testing with a lot of printouts.

I tried "set serveroutput on size unlimited", but whenever run a stored procedure by right-click on a specific package and then 'Run' a stored procedure. It would still print out to a Log window.

And then I searched online and tried to use DBMS Output and I set the Buffer Size with a huge number and clicked the '+' for adding a connection against the same database. But when I ran the stored procedure, it still prints out to a new Log window.

Any advice and solutions would be highly appreciated.


Solution

  • Generally speaking, such an option isn't the best choice. Result of DBMS_OUTPUT is visible at the end, when stored procedure finishes its job. You won't see anything while it is working, so if your intention was to "trace" execution by watching messages you print - nope, that won't work.

    Besides, even if you managed to put that many text to the screen, it'll be lost sooner or later and you'd have to re-run the procedure (if that's possible) to review messages you lost.

    Therefore, how about a different approach: instead of printing messages to the screen, log them into a table using a separate (autonomous transaction) procedure. Doing so, you'd be able to commit inserts without affecting main transaction and simply select rows from the log table, knowing exactly what happened at what time, how much every step took, and whatever else you might want to log.