UTL_FILE.PUT_LINE Results In UTL_FILE.WRITE_ERROR Although Max Line Size Is Less Than 1023 Bytes (Doc ID 255888.1)

Last updated on AUGUST 28, 2017

Applies to:

PL/SQL - Version 8.0.6.0 and later
Information in this document applies to any platform.
***Checked for relevance on 28th Aug 2017***


Symptoms

In certain cases using UTL_FILE.PUT_LINE to write to an Operating System file, where each call to  PUT_LINE writes no more than 1023 bytes,  fails with a UTL_FILE.WRITE_ERROR exception.

ERROR at line 1:
ORA-29285: file write error
ORA-06512: at "SYS.UTL_FILE", line 171
ORA-06512: at "SYS.UTL_FILE", line 1093
ORA-06512: at line 12


You can sometimes work around this by specifying a large line size in the call to UTL_FILE.FOPEN as shown in the following:

file_handle := utl_file.fopen('TEST_DIR','test.dat','W',32000);


However, since the issue is that UTL_FILE is failing to recognize the line separator character, it may not be possible to set the value high enough to avoid the error.


Changes

Changing the character set in the NLS_LANG for the session to a value that is different from the database character set.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms