Daten direkt in Datei Schreiben führt zu einem Fehler
Sollen viele Daten direkt aus der Datenbank in eine Datei geschrieben werden kann es sein das Folgender Fehler auftritt:
Error report: ORA-29285: file write error ORA-06512: at “SYS.UTL_FILE”, line 148 ORA-06512: at “SYS.UTL_FILE”, line 403 ORA-06512: at “SYS.UTL_FILE”, line 1166 ORA-06512: at line 58 29285. 00000 – “file write error” *Cause: Failed to write to, flush, or close a file. *Action: Verify that the file exists, that it is accessible, and that it is open in write or append mode.
Die Ursache hierfür ist der Umstand das Oracle per default eine Zeichenbegrenzung pro Dateizeile von 1024 hat. Diese muss nur Angehoben werden. Maximal sind 32KB möglich.
DECLARE vClob CLOB; vOutputfile utl_file.file_type; vFileLoc VARCHAR2(50) := ‘Con_DIR’; vFN VARCHAR2(25) := ‘CycleExtract.SQL’; vOpenMode CHAR(1) := ‘W’; /* Using W for testing use A for running/default */ vMaxLineSize NUMBER := 32700; /* fyi 32767 limit */ BEGIN vOutputFile := utl_file.Fopen(vFileLoc, vFN, vOpenMode, vMaxLineSize);