2009-09-14 22 views
5

Voglio creare un progetto in cui è necessario sincronizzare il database locale con il database remoto. Le modifiche apportate nel database locale devono essere riflesse nel database remoto. Questo deve essere fatto in modo sincrono. Ho un'applicazione che fa le operazioni CRUD sul database locale scritto in java/jpa. La sincronizzazione dovrebbe essere attivata dal codice java. Ho pensato a trigger su ogni tabella di database che manterrà le modifiche nel database locale. Ma dubito che sia sicuro o meno. Dopo aver cercato su google ho scoperto che il database di Oracle Lite è la soluzione migliore per sincronizzare due database, ma ho bisogno di iniziare rapidamente. Il sistema operativo che sto usando è Windows Xp. La dimensione del database è di circa 2 GB.Come sincronizzare due database Oracle?

Ho creato thread per ottenere la stessa cosa in java ma da suggetion ho riavviato lo stesso thread nel contesto del database.

+0

Qual è l'obiettivo della sincronizzazione del database? Il database remoto dovrebbe essere di sola lettura? Se così DataGuard è un'opzione. –

risposta

5

Prima di tutto suggerirei di riconsiderare il tuo design. Il modo più semplice per riprodurre i dati è tramite le viste as suggested in this SO. È possibile creare un LINK DATABASE tra i due DB e creare viste sul sito remoto che interrogheranno il database locale. Questo sarebbe il modo più semplice per avere la sincronizzazione in tempo reale (meno codice, meno manutenzione).

Se si desidera realmente replicare i dati in modo sincrono, è necessario leggere Replication Guide. Potresti andare con le visioni materializzate. Dovrai definire materialized view logs sui tuoi tavoli sul tuo sito principale. Nel sito remoto verrà creato ON COMMIT REFRESH materialized views.

+0

Domanda, abbiamo bisogno di avere Enterprise per questo? – Worthy7

1

Sto rimuginando questo problema per alcuni giorni poiché è necessario eseguire lo sviluppo parallelamente al controllo qualità. Abbiamo due istanze Oracle separate, ma tenerle sincronizzate manualmente sarebbe stato un grosso problema. Non sono un DBA, quindi solo guardare le cose della replica mi ha fatto scappare per la paura.

Invece, ho attivato Navicat per Oracle e (ab) ho utilizzato la funzione di trasferimento dati - rende abbastanza indolore mantenere due schemi in database separati fisicamente separati. Uno strumento dannatamente utile! (Non lavoro per loro, proprio come il loro strumento.)

1

Quello che ti riferisci è chiamato replica. La sincronizzazione è qualcosa di diverso.

Se si dispone di più dispositivi con un sottoinsieme di dati richiesto, ad esempio un addetto alle vendite regione richiede solo dati che riflettono l'area che lui/lei serve, allora Oracle Database Lite Mobile Server è quello che stai cercando. In sostanza, si dispone di un database Oracle centrale e si desidera che alcuni dati vengano trasferiti al client. Il client eseguirà aggiornamenti/inserimenti/eliminazioni sul dispositivo e quindi si sincronizzeranno. Le nuove informazioni sul server verranno inviate al loro dispositivo mentre le loro modifiche verranno caricate sul server. Avrai bisogno di risoluzione dei conflitti (il server/client vince ... Oracle Mobile Server consente anche una risoluzione dei conflitti personalizzata). Oracle Mobile Server è anche utilizzato per eseguire il provisioning del software applicativo e gestire i dispositivi da remoto. Lo strumento è progettato in modo tale da richiedere solo un DBA centrale. Le macchine remote non richiedono alcun tipo di attività DBA.

Problemi correlati