10 Stimmen

oracle - commit über dblink?

Wenn ich eine Verbindung zu einer Oracle-Datenbank als Benutzer smith herstelle und die folgenden 3 Befehle eingebe:

update smith.tablea
set col_name = 'florence' where col_id = 8;

insert into bob.other_table@mylink
values ('blah',2,'uncle','new');

commit;

Bedeutet dies, dass die Aktualisierung der lokalen Tabelle (smith.tablea) und die Einfügung in die Tabelle der entfernten Datenbank (bob.other_table) beide bestätigt wurden oder dass nur die Aktualisierung der lokalen Tabelle bestätigt wurde?

Hinweis: "mylink" steht für eine Verknüpfung mit einer entfernten Datenbank.

9voto

Marcin Wroblewski Punkte 3471

Von Dokumentation

Der Zwei-Phasen-Commit-Mechanismus von Oracle ist vollständig Benutzer, die verteilte Transaktionen durchführen. Die Benutzer müssen nicht einmal wissen, dass die Transaktion verteilt ist. Eine COMMIT-Anweisung, die die Ende einer Transaktion bezeichnet, löst automatisch den Zwei-Phasen-Commit Mechanismus aus, um die Transaktion festzuschreiben. Keine Codierung oder komplexe Anweisung Anweisungssyntax ist erforderlich, um verteilte Transaktionen in den Body einer Datenbankanwendung einzubinden.

Also - ja, wenn alles gut geht, werden beide Operationen übertragen.

6voto

Eggi Punkte 1643

In diesem Fall sollte die Transaktion nur funktionieren, wenn die entfernte Transaktion und Ihre lokale Transaktion erfolgreich sind.

Weitere Informationen über verteilte Transaktionen:

http://docs.oracle.com/cd/B19306_01/server.102/b14231/ds_txnman.htm

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X