Skip to main content

ORA-20000 -- Buffer Overflow

Often when we use dbms_output.putline in our sql's to print on the console after setting serveroutput on, it throws an error saying buffer overflow.

ERROR at line 1:
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: at "SYS.DBMS_OUTPUT", line 35
ORA-06512: at "SYS.DBMS_OUTPUT", line 198
ORA-06512: at "SYS.DBMS_OUTPUT", line 139
ORA-06512: at line 9

Option to get rid of this issue are,

1. SET SERVEROUTPUT ON SIZE 100000000
You might get an error on 9i as below,
SP2-0547: size option 276447232 out of range (2000 through 1000000)
In 10g you can specify UNLIMITED for SIZE
SET SERVEROUTPUT ON SIZE UNLIMITED

2. exec DBMS_OUTPUT.ENABLE(10000000);
This works for any value on 9i and it accepts UNLIMITED on 10gR2.

Else the other option is to use UTL_FILE to flush the output to a file.

Pre-requisite to use UTL_FILE is to create a database directory.

CREATE DIRECTORY 'DIRNAME' AS 'PATH' '';

Path should already be added to UTL_FILE_DIR or add it once you create the directory.

Refer to link http://www.psoug.org/reference/utl_file.html for syntax and options.

Following is an example script,

SQL> CREATE DIRECTORY MI AS '/tmp/';
SQL> DECLARE
  mith UTL_FILE.FILE_TYPE;
BEGIN
  mith := UTL_FILE.FOPEN(MI, 'test1.txt', 'w');
  UTL_FILE.PUTF(mith, 'Finally writing to a file!!!')
  UTL_FILE.FCLOSE(mith);
EXCEPTION
  WHEN utl_file.invalid_path THEN
     raise_application_error(-20000, 'Invalid path. Create directory or set UTL_FILE_DIR.');
END;
SQL>

Comments

Anonymous said…
Lots of good reading here, many thanks! I was browsing on yahoo when I discovered your article, I’m going to add your feed to Google Reader, I look forward to far more from you.
Nuno Freire said…
Do you happen to know why I have a script that fails with ORA-20000 when executed through su within a KSH script, however if I place a read command just before the su it works.
Mithun Ashok said…
Hi Nuno,

Not sure how read could flush the buffer, but try using exec DBMS_OUTPUT.ENABLE(10000000); before you write.

Could you send me the code, I can surely help.

Mithun

Popular posts from this blog

Basics of RDBMS

Data Small set of information becomes data, this set of information helps make decision. Data is always some useful information. Database Place where you store the data. Database represents some aspect of the real world called "miniworld". A database is designed, built and populated with data for a specific purpose. It has intended group of users and some preconceived applications in which these users are interested. In other words, a database has some source from which data is derived, some degree of interaction with events in the real world and an audience that is actively interested in the contents of the database. Database can also be defined as collection of one or more tables. Ex: Mobile, human brain etc DBMS (Database Management System ) Is a program that stores retrieves and modifies data in the database on request. Study of different techniques of design, development and maintenance of the database Types of DBMS These types are based upon their m...

SQL Interview Questions

1. CLICK HERE FOR QUESTIONS ON BASIC SELECT     2. CLICK HERE FOR QUESTIONS ON BASIC SELECT WITH CONDITION   3.  CLICK HERE FOR QUESTIONS FROM QSPIDERS   4. CLICK HERE FOR QUESTIONS ON FUNCTIONS   5. CLICK HERE FOR QUESTIONS ON SUBQUERIES 6. CLICK HERE FOR MORE QUESTIONS ON SQL       CLICK HERE FOR ANSWERS   Some more Online Questions.   On WIZIQ.COM  -- 66 Questions and its answers Found by Neha Abhay Kumar   On SCRIBD.COM   -- 235 Questions and its answers