Konflikte können immer dann auftreten, wenn Benutzer an unterschiedlichen Standorten versuchen, dieselben Datensätze einer replizierten Tabelle zu ändern. Mit synchroner Replikation können Konflikte zwar vermieden werden, bei asynchroner Replikation können sie jedoch ein Problem darstellen.
Die häufigsten Konflikte bei der Arbeit mit der Multimaster-Replikation sind:
- Lösch-Konflikt – Tritt auf, wenn eine Transaktion von einem Standort einen Datensatz löschen will, der von einer Transaktion von einem anderen Standort aus gerade aktualisiert wird.
- Eindeutigkeits-Konflikt – Tritt auf, wenn zwei unterschiedliche Standorte versuchen, Datensätze mit identischen Primärschlüsseln einzufügen. Oracle bietet zur Auflösung dieser Konflikte drei Methoden an:
– Name des Standortes an den duplizierten Wert anhängen
– Bestimmte Zeichenfolge an den duplizierten Wert anhängen
– Duplizierten Wert verwerfen - Update-Konflikt – Dieser wird durch simultane Update-Transaktionen am selben Datensatz von unterschiedlichen Standorten aus verursacht.
Bei Update-Konflikten besteht die einzige Lösung darin, selbst entsprechende Routinen zur Auflösung des Konflikts zu schreiben, die jeden Konflikt individuell beheben. Zur Auflösung der anderen Konflikte bietet Oracle allerdings eine Reihe fertiger Methoden, zum Beispiel:
- Additive und Average – Beim Umgang mit replizierten Zahlenwerten addiert die Additive-Methode unter Verwendung der folgenden Formel einen neuen Wert zum bestehenden Wert: (aktueller Wert = aktueller Wert + (neuer Wert – alter Wert)). Die Average-Methode fügt den Durchschnitt der konkurrierenden Werte zum bestehenden Wert hinzu, unter Verwendung der Formel (aktueller Wert = (aktueller Wert + neuer Wert)/2).
- Earliest Timestamp – Diese Methode übernimmt das früheste Update (chronologisch) und stellt das Gegenteil der Latest Timestamp-Methode dar.
- Latest Timestamp – Diese Methode übernimmt das zuletzt erhaltene Update (chronologisch). Dieser Ansatz kann dazu führen, dass das Update eines Benutzers durch das eines anderen überschrieben wird.
- Minimum und Maximum – Diese Methoden können angewandt werden, wenn die erweiterte Replikation einen Konflikt innerhalb einer Spaltengruppe feststellt. Die festgelegte Methode (Minimum oder Maximum) wird aufgerufen und vergleicht den neuen Wert vom Ursprungsstandort mit dem aktuellen Wert des Zielstandortes für eine bestimmte Spalte in der Spaltengruppe. Man muss die Vergleichsspalte angeben, wenn man die Methoden Minimum oder Maximum zur Auflösung von Konflikten verwendet.
- Priority Group – Diese Methode ermöglicht die Zuweisung einer Prioritätsstufe zu jedem möglichen Wert einer bestimmten Spalte. Das Update mit der höchsten Prioritätsstufe wird ausgeführt.
- Site Priority – Bei dieser Methode werden nicht alle Master-Standorte gleichberechtigt erstellt. Site Priority ist nützlich, wenn es einen Standort gibt, dessen Informationen aller Wahrscheinlichkeit nach präziser sind als die der anderen.
Das folgende Beispiel demonstriert, wie Methoden zur Konflikt-Auflösung angegeben werden. Ausgeführt wird hier dbms_repcat.add_update_resolution, wobei Oracle angewiesen wird, die Methode LATEST TIMESTAMP zur Konflikt-Auflösung bei Updates für die Tabelle EMP zu verwenden: