Oracle - 2PC

  • C#

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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

    Quellcode

    1. DROP TABLE tblBook CASCADE CONSTRAINTS;
    2. CREATE TABLE tblBook (
    3. id INT,
    4. name VARCHAR2(50),
    5. PRIMARY KEY(id)
    6. );
    7. INSERT INTO tblBook VALUES (1, 'Harry Potter');
    8. INSERT INTO tblBook VALUES (2, 'Herr der Ringe');
    9. INSERT INTO tblBook VALUES (3, 'Matrix');
    10. INSERT INTO tblBook VALUES (4, 'RW-Band 1');
    11. INSERT INTO tblBook VALUES (5, 'RW-Band 2');
    12. DROP TABLE tblRead CASCADE CONSTRAINTS;
    13. CREATE TABLE tblRead (
    14. book INT,
    15. pupil INT,
    16. PRIMARY KEY (book, pupil),
    17. FOREIGN KEY (book) REFERENCES tblBook(id)
    18. );
    19. INSERT INTO tblRead VALUES (1, 1);
    20. INSERT INTO tblRead VALUES (2, 2);
    21. INSERT INTO tblRead VALUES (3, 3);
    22. INSERT INTO tblRead VALUES (4, 4);
    23. INSERT INTO tblRead VALUES (4, 5);
    24. INSERT INTO tblRead VALUES (4, 6); --get exception
    Alles anzeigen



    Schul Maschine:
    Spoiler anzeigen

    Quellcode

    1. DROP TABLE tblPupil CASCADE CONSTRAINTS;
    2. CREATE TABLE tblPupil (
    3. id INT NOT NULL,
    4. name VARCHAR2 (50),
    5. PRIMARY KEY (id)
    6. );
    7. INSERT INTO tblPupil VALUES (1, 'Lukas Berger');
    8. INSERT INTO tblPupil VALUES (2, 'Manfred Eder');
    9. INSERT INTO tblPupil VALUES (3, 'Dominik Ofer');
    10. INSERT INTO tblPupil VALUES (4, 'Dominik Hermann');
    11. INSERT INTO tblPupil VALUES (5, 'Peter Hassler');
    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
    1. Oracle, SQL oder so nicht zur Auswahl steht und
    2. 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: :huh: )


    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.