=====Einen CLOB gesplittet in SQL*Plus ausgeben um einen - ORA-22835: Buffer too small for CLOB - zu vermeiden===== Das Problem: **ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 4509, maximum: 4000)** Bei der Auswertung des Error Trigger Logging ( siehe => [[dba:oracle_sqlfehler_protokoll|Erstellen eines Protokolls zur Überwachung von fehlerhaften SQL Statements in der Datenbank - AFTER SERVERERROR Trigger verwenden]] ) kommt es beim einfachen Selektieren der Log Tabelle zu einem **ORA-22835: Buffer too small**. Mehr als 4k an Zeichen kann in SQL*Plus aus einer CLOB Spalte nicht direkt gelesen werden, ein Setzen des Buffers für Long/RAW Daten mit "set buffer 65000" hilft hier leider auch nicht. Eine Lösung kann sein den CLOB in 4K Blöcke mit **dbms_lob.substr (clob, amount, position )** aufzusplieten und die mehren Spalten auszugeben. Die Lösung: CLOB in einzelne "Chunks" aufteilen: with ErrorLog as ( select stmt , log_date , LOG_USR , ERR_NR , substr(ERR_MSG,1,300) mesg , dbms_lob.getlength(STMT) len FROM SYSTEM.ora_errors WHERE nvl(log_usr,'n/a') NOT IN ('SYS','SYSMAN','DBSNMP') ) select COUNT (*) AS anzahl , to_char(min(log_date),'dd.mm.yyyy hh24:mi') first_log_entry , to_char(max(log_date),'dd.mm.yyyy hh24:mi') last_log_entry , LOG_USR , ERR_NR , mesg , dbms_lob.substr(stmt,4000,1) sql_part1 , case when len > 4000 then dbms_lob.substr(stmt,4000,4001) end sql_part2 , case when len > 8000 then dbms_lob.substr(stmt,4000,8001) end sql_part3 , case when len > 12000 then dbms_lob.substr(stmt,4000,12001) end sql_part4 , case when len > 16000 then dbms_lob.substr(stmt,4000,165001) end sql_part5 FROM ErrorLog GROUP BY LOG_USR , ERR_NR , mesg , dbms_lob.substr(stmt,4000,1) , case when len > 4000 then dbms_lob.substr(stmt,4000,4001) end , case when len > 8000 then dbms_lob.substr(stmt,4000,8001) end , case when len > 12000 then dbms_lob.substr(stmt,4000,12001) end , case when len > 16000 then dbms_lob.substr(stmt,4000,165001) end ORDER BY 1 / ==== Quellen ==== Oracle Doku => SUBSTR https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_lob.htm#i999349 AskTom => https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:9539494200346328435