How about not using COPY at all ? Use a global temporary table
Database 1
==========
SQL> create table T ( pk int, c clob );
Table created.
SQL> insert into T values (1,'small test');
1 row created.
SQL> commit;
Commit complete.
SQL> declare
2 c clob;
3 begin
4 dbms_lob.createtemporary(c,true);
5 for i in 1 .. 100 loop
6 dbms_lob.writeappend(c,32000,rpad('large test',32000,'x'));
7 end loop;
8 insert into t values (2,c);
9 commit;
10 dbms_lob.freetemporary(c);
11 end;
12 /
PL/SQL procedure successfully completed.
SQL>
SQL> select pk, dbms_lob.getlength(c) from t;
PK DBMS_LOB.GETLENGTH(C)
---------- ---------------------
1 10
2 3200000
Database 2
==========
SQL> create global temporary table gtt as select pk, c from t@db11;
Table created.
SQL> insert into gtt select pk, c from t@db11;
2 rows created.
SQL> select pk, dbms_lob.getlength(c) from gtt;
PK DBMS_LOB.GETLENGTH(C)
---------- ---------------------
1 10
2 3200000
Cheers,
Connor