Per quanto ne so io, se la connessione avviene sul primo db, per accedere al secondo db dovresti usare un dblink. Ciò comporta il fatto che le query non le devi fare come "select nometabella" ma come "select tabella@nomedblink", per cui se hai le query hard coded devi modificare il codice.
Il discorso non cambia se fai il contrario, ovvero fai connettere i client sul db2, fare un dblink col db1 e fare tutte le query( ad esclusione delle query sulla vista materializzata) col suffisso @nomedblink.
Non conosco a fondo le viste materializzate, ma questo penso sia più un discorso di connessioni che di oggetti usati. Altrimenti dovresti usare un sistema di replica del db, ma è tutta un'altra storia.
Ciao