Transaktionsmanagement und ddl

seit kurzem arbeitet meiner einer nun viel mit oracle. vorher hatte ich eine sqlbase von centura. bei dieser wurde das transaktionssystem auch fuer ddl-befehle benutzt. nun ist mir aufgefallen, dass dies bei oracle nicht der fall ist. gibt es eine moeglichkeit dieses einzustellen oder wird dies von oracle grundsaetzlich abgelehnt (wenn dem so ist, was ist der grund dafuer)???

der jan

seit kurzem arbeitet meiner einer nun viel mit oracle. vorher
hatte ich eine sqlbase von centura. bei dieser wurde das
transaktionssystem auch fuer ddl-befehle benutzt. nun ist mir
aufgefallen, dass dies bei oracle nicht der fall ist.

Richtig beobachtet. DDL-Befehle kann man nicht zurücknehmen.
Schlimmer noch: wenn Du DML und DDL mischst, wird DIr früher oder später auffallen, daß ein DDL-Befehl IMPLIZIT ein Commit durchführt. Vorsicht ist also angesagt.

gibt es
eine moeglichkeit dieses einzustellen

Nein.

oder wird dies von
oracle grundsaetzlich abgelehnt (wenn dem so ist, was ist der
grund dafuer)???

Keine Ahnung. Die innere Struktur? Die Firmenpolitik? Marketing-Überlegungen?

Gruß

J.

Für Insider
An alle Oracle-Anfänger:

José hat recht.

Für den Rest:

José hat nicht Recht - für den Enduser macht dies aber keinen Unterschied.

Tatsache ist, das DDL-Befehle (vom System) sehr wohl zurückgerollt werden können. Um dies zu verstehen muss man die Frage stellen, was bei einem DDL-Befehl eigentlich passiert. Antwort : Es gibt viele Änderungen im Data Dictionary(tab$,fet$,uet$) - also viele DMLs.

Diese DMLs werden von Oracle entweder automatisch zurückgerollt (wenn es irgend ein Problem gab) oder mit einem Commit bestätigt (wenn alles glatt ging). Um im Fehlerfall nicht auch noch all jene Änderungen, die vor dem DDL-Befehl abgesetzt wurden, rückgängig zu machen setzt Oracle vor der Durchführung des DDL-Befehls ein implizites Commit. Wenn man dies weiss und sich entsprechend verhält, ist man also auf der sicheren Seite.

Gruß der Janus

1 Like