Questa pagina descrive le funzionalita' dell'Advanced Replication di Oracle.
E' importante sottolineare che l'Advanced Replication e' stata desupportata da Oracle
[NdE ma il documento resta comunque valido per le versioni Oracle precedenti].
Una funzionalita' molto importante, fornita
per altro dalla maggior parte dei DBMS relazionali, e' la gestione delle transazioni
(vedi il documento Gestione delle transazioni sulle basi
dati relazionali).
Piu' complessa e' la gestione delle transazioni
quando queste debbono essere svolte su basi dati distribuite. In questo caso
e' necessario l'utilizzo di un particolare protocollo detto Two Phase Commit (2PC).
Tale protocollo e' implementato in alcuni sistemi transazionali e, tra
gli altri, nell'RDBMS Oracle.
Tuttavia anche con il supporto del Two Phase Commit la distribuzione
dei dati presenta problemi.
Infatti per poter eseguire il commit di una transazione
debbono essere attivi tutti i nodi coinvolti, altrimenti viene eseguito il rollback.
Per consentire il commit locale e quindi l'applicazione delle modifiche su database
remoti nei casi piu' complessi e' stata implementata in Oracle l'Advanced Replication Option.
La normale gestione delle transazioni non e' sufficiente quando si effettuano transazioni distribuite.
L'applicazione effettua una modifica sulla base dati A, quindi effettua una modifica sulla base dati B, infine desidera confermare entrambe le operazioni.
A questo punto un semplice messaggio di Commit non consente una gestione corretta della transazione distribuita. Infatti e' possibile che una delle due banche dati, per una qualsiasi ragione, sia stata posta fuori linea dopo l'avvenuta modifica dei dati, e l'operazione di commit eseguita sull'altra banca dati porterebbe ad una situazione inconsistente.
Oracle,
dalla versione 7.0 con l'installazione
dell'opzione Distribuite Database Option e con l'utilizzo di SQL*Net 2,
fornisce il protocollo di Two Phase Commit e quindi il supporto completo
delle transazioni in ambiente distribuito.
Nelle versioni successive non sono state introdotte variazioni
significative... attualmente la DDO fa parte delle funzionalita' di
base della distribuzione Enterprise.
A parte la corretta installazione dei pacchetti e delle opzioni non e' necessario effettuare altro. Dal punto di vista dell'utilizzo le transazioni distribuite ed il protocollo di 2PC sono semplicissimi e trasparenti. E' sufficiente creare dei database link tra le basi dati e quindi, anche senza definire sinonimi, e' gia' possibile effettuare transazioni distribuite semplicemente effettuando operazioni di modifica su tabelle di istanze diverse. Automaticamente Oracle capisce che si tratta di una transazione distribuita ed utilizza il protocollo 2PC per coordinare le transazioni tra le diverse istanze coinvolte. I "coordinatore" e' tipicamente l'istanza da cui si avvia la transazione.
Il problema del protocollo del 2PC e' che se uno qualsiasi dei nodi coinvolti nella transazione non e' attivo o non risponde entro il timeout previsto la transazione non puo' essere eseguita.
Oracle Multimaster
https://docs.oracle.com/cd/B28359_01/server.111/b28326/preface.htm#sthref2 11
https://docs.oracle.com/database/121/REPLN/release_changes.htm#REPLN593 12
Oracle Database Advanced Replication is deprecated in Oracle Database 12c Release 1 (12.1), including multimaster replication, updatable materialized views, multitier materialized views, and deployment templates.
Use Oracle GoldenGate to replace Advanced Replication.
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/upgrd/desupported-features-oracle-database-12c-r2.html#GUID-685A0333-1051-4306-B84A-574DAFE799B2
“Desupport of Advanced Replication
Starting in Oracle Database 12c release 2 (12.2) the Advanced Replication feature of Oracle Database is desupported.
The Oracle Database Advanced Replication feature is desupported in its entirety. The desupport of this feature includes all functionality associated with this feature: multimaster replication, updateable materialized views, hierarchical materialized views, and deployment templates.
Read-only materialized views are still supported with basic replication.
Oracle recommends that you replace your use of Advanced Replication with Oracle GoldenGate.”
https://dbasolved.com/2013/06/26/advanced-replication-and-streams-are-dead-12-edition/
https://connor-mcdonald.com/2016/12/15/advanced-replication/
Argomenti distinti, ma che presentano aspetti architetturali di interesse, sono:
Un argomento che riguarda direttamente la consistenza dati e sui cui si pensava
non ci fosse piu' nulla da dire...
in realta' ha visto un'importante evoluzione in questi ultimi anni!
La regola ACID (Atomicity, Consistency, Isolation, Durability)
e' stata messa in profonda discussione dalla nascita di basi dati cosi' grandi
da non poter essere poste su un solo server o su un numero limitato
di server o addirittura su un solo continente.
Ecco nascere i protocolli Paxos [NdE: 1998],
il teorema di CAP (Consistency, Availability, Partition tolerance) [NdE: 2000],
la classificazione dei database in PACELC (on Partition: Availability or Consistency Else:
Latency or Consistency), le implementazioni di database NoSQL e Big Data,
BASE transactions (Basic Availability, Soft-state, Eventual consistency),
...
senza entrare in dettagli ne cercare di essere precisi l'idea di base e':
quando c'e' una partizione tra i nodi che ospitano un database distribuito
non si possono avere contemporaneamente disponibilita', consistenza senza latenza.
Dal punto di vista pratico, ai Database relazionali che garantiscono CA (Consistency, Availability), si sono affiancati in questi anni Database noSQL che rinunciano alla disponibilita' garantendo CP (HBase, MongoDB, ...) e Database noSQL che rinunciano alla consistenza garantendo AP (CouchDB, Cassandra, ...).
Testo: Advanced Replication Option
Data: 1 Novembre 2000
Versione: 1.0.2 - 14 Febbraio 2012
Autore: mail@meo.bogliolo.name