Its a distributed DB - dblinks- so no Fast refresh, so not possible to use mview logs.
Hmmmm....
Database1
=========
SQL> create sequence seq cache 10000;
Sequence created.
SQL>
SQL> create table T as
2 select seq.nextval s,
3 d.*
4 from dba_objects d, ( select 1 from dual connect by level <= 20 ) ;
Table created.
SQL>
SQL> alter table T add primary key ( s ) ;
Table altered.
SQL>
SQL> CREATE MATERIALIZED VIEW LOG ON t
2 WITH PRIMARY KEY
3 /
Materialized view log created.
Database2
=========
SQL> CREATE MATERIALIZED VIEW mv REFRESH FAST AS
2 select * from T@database1;
Materialized view created.
SQL> set timing on
SQL> exec dbms_mview.refresh('mv','C');
PL/SQL procedure successfully completed.
Elapsed: 00:02:45.86
SQL> set timing on
SQL> exec dbms_mview.refresh('mv','F');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.10
SQL>
Fast refresh looks pretty fast to me :-)