Data-Warehouses erhalten ihre Daten oft aus mehreren Quellsystemen, auf denen jeweils eigene Anwendungen laufen. Daher ist es oft schwierig festzustellen, welche Zeilen erst kürzlich aktualisiert wurden, damit Neueinträge auch wirklich nur neue Daten enthalten. Dies ist besonders bei älteren Anwendungen ein Problem, deren Datenbankschemata keine Spalte mit dem letzten Änderungsdatum enthalten. Unternehmen sind verständlicherweise nicht besonders erpicht darauf, funktionierenden Code zu modifizieren, nur um Änderungen verfolgen zu können.
In Oracle 10g gibt es eine neue Pseudospalte namens ORA_ROWSCN für jede Zeile, aus der das ungefähre Datum der letzten Aktualisierung der jeweiligen Zeile hervorgeht. ORA_ROWSCN gibt eine „konservative Obergrenze“ der Systemänderungsnummer (System Change Number, SCN) für die Transaktion an, welche die Zeile zuletzt geändert hat. Das bedeutet, dass die SCN nur eine Schätzung ist, weil SCNs von Oracle standardmäßig nur auf Blockebene verfolgt werden.
In Listing A zum Beispiel wird ORA_ROWSCN in einer kleinen Tabelle ausgewählt, eine Zeile wird aktualisiert und dann ORA_ROWSCN erneut ausgewählt. Obwohl nur eine einzige Zeile geändert wurde, wird auch bei den übrigen Zeilen die neue SCN angegeben. (Genauere Ergebnisse kommen zustande, wenn beim Erstellen einer Tabelle die SCN-Verfolgung auf Zeilenebene aktiviert wird. Leider kann eine Tabelle nicht geändert werden, um diese Funktion nachträglich hinzuzufügen.) Wenn die Zahl der aktualisierten Blöcke also niedriger ist als die Zahl der Blöcke in der Tabelle, könnten auf diese Weise Änderungen entdeckt werden, ohne zu viele überflüssige Zeilen zu verwenden.
Was aber wenn Datum und Uhrzeit der jeweiligen Transaktion benötigt werden? Die Funktion SCN_TO_TIMESTAMP kann die ORA_ROWSCN in einen Zeitstempelwert umwandeln, der abgefragt oder in einer WHERE-Klausel als Prädikat verwendet werden kann. Allerdings ist auch diese Angabe nur ein Näherungswert.
ORA_ROWSCN ist außerdem eine bequeme Möglichkeit, eine SCN zu erhalten, die als Grenze für Flashback-Abfragen verwendet, auch wenn ORA_ROWSCN selber nicht für solche Abfragen eingesetzt werden kann. Stattdessen verwendet man eine Versionsabfrage und wählt die Pseudospalten VERSIONS_STARTSCN und VERSIONS_ENDSCN aus.
Listing B demonstriert eine Flashback-Abfrage, die eine um 1 kleinere SCN verwendet als der aktuelle Wert, um den vorherigen Wert der Datenzeile zu ermitteln. Man beachte, dass das Gehalt von King jetzt wieder 5000 beträgt und der ORA_ROWSCN-Wert wieder der ursprünglichen SCN entspricht.
OutSystems-Studie: 62 Prozent der Befragten haben Sicherheits- und Governance-Bedenken bei Softwareentwicklung mit KI-Unterstützung.
Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…
Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…
Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.
Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…
Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…