Ist es möglich, die DML (SQL-Anweisung) zu sehen, die ausgeführt wird und die Ausführung eines Triggers verursacht?
In einem INSERT-Trigger würde ich zum Beispiel gerne Folgendes erhalten:
"insert into myTable (name) values ('Fred')"
Ich habe über ora_sql_txt(sql_text) in Artikeln wie diese aber ich konnte es nicht zum Laufen bringen - ich bin mir nicht sicher, ob mich das überhaupt auf den richtigen Weg führt?
Wir verwenden Oracle 10.
Ich danke Ihnen im Voraus.
\=========================
[BEARBEITET] MEHR DETAILS: Es besteht die Notwendigkeit, eine bestehende Datenbank (DB1) in eine klassifizierte Datenbank (DB2) zu replizieren, die no über das Netz zugänglich. Ich muss diese Datenbanken synchron halten. Es handelt sich um eine einseitige Synchronisierung von (DB1) nach (DB2), da (DB2) zusätzliche Tabellen und Daten enthält, die nicht im (DB1)-System enthalten sind.
Ich muss einen Weg finden, diese Datenbanken zu synchronisieren, ohne dass sie heruntergefahren werden (z. B. für eine Sicherung und Wiederherstellung), da sie in Betrieb bleiben müssen. Ich dachte, wenn ich die tatsächliche DML speichern kann, die ausgeführt wird (wenn sich Daten ändern), könnte ich die DML in der neuen Datenbank "abspielen", um sie zu aktualisieren, so als ob jemand sie von Hand wieder eingeben würde.
Ich kann nicht alle Daten übernehmen, weil sie so groß sind, und ich kann nicht einfach die geänderten Datensätze kopieren, weil die FK-Einschränkungen und die Reihenfolge, in der ich Datensätze einfüge/aktualisiere, zu beachten sind. Ich dachte mir, dass ich die Datenbanken synchron halten könnte, wenn ich ein Protokoll der Vorgänge abspielen könnte, und zwar mit genau dem SQL, das den Master geändert hat.
Mein aktueller Angriffsplan war, ein Protokoll aller geänderten, eingefügten und gelöschten Datensätze zu führen, und wenn ich synchronisieren möchte, generiert das System DML zum Einfügen/Aktualisieren/Löschen dieser Datensätze. Dann bringe ich die SQL-Datei einfach zum klassifizierten System und führe das Skript aus. Das Problem, auf das ich stoße, sind die FKs. (Denn wenn ich die DML generiere, kenne ich nur den aktuellen Zustand der Daten, nicht aber den Weg dorthin - die Reihenfolge der Anweisungen ist also ein Problem). Ich schätze, ich könnte alle FKs deaktivieren, die Zusammenführung durchführen und dann alle FKs wieder aktivieren...
Also - ist mein Ansatz der Speicherung der tatsächlichen DML as-it-happens suck pondwater, oder gibt es eine bessere Lösung?