Having 12000 characters doesn't mean you can breat it into 3 VARCHAR2s. VARCHAR2 limit is 4000 bytes, not 4000 characters. So in general you need to find out what is max bytes per character for your database character set. Then TRUNC(4000 / max-bytes-per-character) will be max size in characters you can use to guarantee any string will fit. Then convert BLOB to CLOB first:DBMS_LOB.CONVERTTOCLOB(your_blob,your_clob,...);
Then use:DBMS_LOB.SUBSTR(your_clob,TRUNC(4000 / max-bytes-per-character),1) -- first column
DBMS_LOB.SUBSTR(your_clob,TRUNC(4000 / max-bytes-per-character),1 + TRUNC(4000 / max-bytes-per-character)) -- second column
...
But why not simply store it as CLOB?
SY.