Hallo Leute 
Ich benötige unbedingt eure Hilfe. Es geht um ein Schulreferat, dass ich leider nicht ganz verstehe. Es geht um das "2 Commit Protocol" von Oracle. Also mein Problem:
Ich verstehe leider nicht wie ich das ganze starte, bzw. wie ich Oracle sage, dass ich jetzt verteilte Datenbanken verwende. Zum Vorühren, würde ich 2 Datenbanken haben (die eine ist meine Lokale, und die andere ist auf unserer Schule). Meine Tabellen würden so aussehen:
Lokale Maschine:
Spoiler anzeigen
Alles anzeigen
Schul Maschine:
Spoiler anzeigen
Alles anzeigen
Jetzt sollen Schüler Bücher lesen können. Um die Atomarität zu garantieren muss ich jetzt das 2PC anwenden (denk ich mir).
Die Schwierigkeit:
Derzeit mach ich das so, dass ich beim Einfügen, Bearbeiten oder Löschen, einen Trigger ausführen lasse, der mir via DB-Link überprüft ob die anderen Datenbanken, die Werte haben, falls dies nicht der Fall ist, bekomme ich eine Exception. Das funktioniert auch so weit, jedoch weiß ich nicht ob das so ganz richtig ist. Kennt sich damit jemand aus und kann mir kurz erklären wie ich das 2PC tatsächlich dann ausführe? Ich hoffe mein Problem ist verständlich, falls nicht werde ich es nochmal versuchen. Danke im Voraus.
Ach und der Präfix ist bei C#, weil
Mit Freundlichen Grüßen
Rodrog

Ich benötige unbedingt eure Hilfe. Es geht um ein Schulreferat, dass ich leider nicht ganz verstehe. Es geht um das "2 Commit Protocol" von Oracle. Also mein Problem:
Ich verstehe leider nicht wie ich das ganze starte, bzw. wie ich Oracle sage, dass ich jetzt verteilte Datenbanken verwende. Zum Vorühren, würde ich 2 Datenbanken haben (die eine ist meine Lokale, und die andere ist auf unserer Schule). Meine Tabellen würden so aussehen:
Lokale Maschine:
Quellcode
- DROP TABLE tblBook CASCADE CONSTRAINTS;
- CREATE TABLE tblBook (
- id INT,
- name VARCHAR2(50),
- PRIMARY KEY(id)
- );
- INSERT INTO tblBook VALUES (1, 'Harry Potter');
- INSERT INTO tblBook VALUES (2, 'Herr der Ringe');
- INSERT INTO tblBook VALUES (3, 'Matrix');
- INSERT INTO tblBook VALUES (4, 'RW-Band 1');
- INSERT INTO tblBook VALUES (5, 'RW-Band 2');
- DROP TABLE tblRead CASCADE CONSTRAINTS;
- CREATE TABLE tblRead (
- book INT,
- pupil INT,
- PRIMARY KEY (book, pupil),
- FOREIGN KEY (book) REFERENCES tblBook(id)
- );
- INSERT INTO tblRead VALUES (1, 1);
- INSERT INTO tblRead VALUES (2, 2);
- INSERT INTO tblRead VALUES (3, 3);
- INSERT INTO tblRead VALUES (4, 4);
- INSERT INTO tblRead VALUES (4, 5);
- INSERT INTO tblRead VALUES (4, 6); --get exception
Schul Maschine:
Quellcode
- DROP TABLE tblPupil CASCADE CONSTRAINTS;
- CREATE TABLE tblPupil (
- id INT NOT NULL,
- name VARCHAR2 (50),
- PRIMARY KEY (id)
- );
- INSERT INTO tblPupil VALUES (1, 'Lukas Berger');
- INSERT INTO tblPupil VALUES (2, 'Manfred Eder');
- INSERT INTO tblPupil VALUES (3, 'Dominik Ofer');
- INSERT INTO tblPupil VALUES (4, 'Dominik Hermann');
- INSERT INTO tblPupil VALUES (5, 'Peter Hassler');
Jetzt sollen Schüler Bücher lesen können. Um die Atomarität zu garantieren muss ich jetzt das 2PC anwenden (denk ich mir).
Die Schwierigkeit:
Derzeit mach ich das so, dass ich beim Einfügen, Bearbeiten oder Löschen, einen Trigger ausführen lasse, der mir via DB-Link überprüft ob die anderen Datenbanken, die Werte haben, falls dies nicht der Fall ist, bekomme ich eine Exception. Das funktioniert auch so weit, jedoch weiß ich nicht ob das so ganz richtig ist. Kennt sich damit jemand aus und kann mir kurz erklären wie ich das 2PC tatsächlich dann ausführe? Ich hoffe mein Problem ist verständlich, falls nicht werde ich es nochmal versuchen. Danke im Voraus.
Ach und der Präfix ist bei C#, weil
- Oracle, SQL oder so nicht zur Auswahl steht und
- weil diese Tabellen dann in einer GUI in einem c# Programm zu sehen sein sollten. (das hat aber irgendwie nichts mit meiner Frage zu tun, also:
)
Mit Freundlichen Grüßen
Rodrog
Je mehr Käse, desto mehr Löcher.
Je mehr Löcher, desto weniger Käse.
Ergo: Je mehr Käse, desto weniger Käse.
Je mehr Löcher, desto weniger Käse.
Ergo: Je mehr Käse, desto weniger Käse.