We are pretty efficient in any event for clobs on GTTs, eg
SQL> create global temporary table gtt
2 ( id int, c1 char(100), c2 clob ) ;
Table created.
SQL> @mystat
Enter value for statname: redo size
NAME VALUE
-------------------------------------------------------------------------------- ----------
redo size 676
redo size for lost write detection 0
redo size for direct writes 0
SQL>
SQL> insert into gtt
2 select rownum, rownum, rpad('x',32000,'x')
3 from dual
4 connect by level <= 10000;
10000 rows created.
SQL>
SQL> update gtt
2 set c2 = rpad('y',32000,'y');
10000 rows updated.
SQL>
SQL> @mystat
Enter value for statname: redo size
NAME VALUE
-------------------------------------------------------------------------------- ----------
redo size 9365940
redo size for lost write detection 0
redo size for direct writes 0
That is 320MB of "change" to the data and we still only consumed 9meg of redo.
Having said that, you'll get *some* benefit from temp_undo, eg
SQL> alter system set temp_undo_enabled = true scope=both;
System altered.
SQL> create global temporary table gtt
2 ( id int, c1 char(100), c2 clob ) ;
Table created.
SQL> @mystat
Enter value for statname: redo size
NAME VALUE
-------------------------------------------------------------------------------- ----------
redo size 676
redo size for lost write detection 0
redo size for direct writes 0
SQL>
SQL> insert into gtt
2 select rownum, rownum, rpad('x',32000,'x')
3 from dual
4 connect by level <= 10000;
10000 rows created.
SQL>
SQL> update gtt
2 set c2 = rpad('y',32000,'y');
10000 rows updated.
SQL>
SQL> @mystat
Enter value for statname: redo size
NAME VALUE
-------------------------------------------------------------------------------- ----------
redo size 48936
redo size for lost write detection 0
redo size for direct writes 0