X

Technologie - Trends - Tipps&Tricks
in deutscher Sprache

Oracle Database und Temporal Validity

Temporal Validity (wörtlich übersetzt auch zeitliche Gültigkeit) ist eine Standardfunktion der Oracle Datenbank, die in jeder Edition der Datenbank und in jedem Offering - ob Cloud oder On-Premises Installationen - zur Verfügung steht. Vielen Oracle Datenbank Usern und Entwicklern ist diese Funktion allerdings nicht bekannt, obwohl sie seit 12.1 in der Oracle Datenbank enthalten ist.

Was genau versteht man nun unter Temporal Validity in der Oracle Datenbank? Temporal Validity ermöglicht es, einer Tabelle eine gültige Zeitdimension zuzuordnen und Daten in Abhängigkeit von ihrer zeitlichen Gültigkeit als valide einzustufen. Die gültige Zeitdimension wird dabei durch das Beginn- und Endedatum oder den Zeitstempel des Zeitraums bestimmt. Einsatzszenarien könnten beispielsweise das Gültigkeitsdatum der Deckung für eine Versicherungspolice, Kündigungsdaten eines Mitarbeiters in einer Personalanwendung, oder auch das Gültigkeitsdatum einer Adressänderung für einen Kunden oder Klienten sein. Quasi jede Anwendung, bei der es wichtig ist zu wissen, wann bestimmte Daten gültig wurden (aus der Sicht der Anwendung) und wann sie ungültig wurden. Ein weiteres Beispiel wäre Datenkorrekturen, bei denen falsche Daten aufbewahrt werden müssen und mit dem Zeitraum gekennzeichnet werden, in dem sie als gültig erachtet wurden, und bei der die richtigen Daten als aktuell gültig angesehen werden müssen.

Temporal Validity Abfragen werden typischerweise im Zusammenhang mit der Oracle Flashback-Technologie verwendet. So gibt es AS OF und VERSIONS BETWEEN Abfragen, die den gültigen Zeitraum angeben wie zum Beispiel wie folgt:

SQL> select first_name,
     to_char(valid_time_start,'dd-mon-yyyy') "Start",
     to_char(valid_time_end,'dd-mon-yyyy') "End"
     from ot.emp_valid
     VERSIONS PERIOD FOR VALID_TIME BETWEEN
     to_date('01-SEP-1995') and to_date('01-SEP-1996')
     order by 2;

Darüberhinaus gibt es die Möglichkeit ohne Änderung am SQL Statement mit DBMS_FLASHBACK_ARCHIVE auf Session Ebene die Sichtbarkeit von Tabellendaten zu einem bestimmten Zeitpunkt anzugeben.

Die Implementierung ist dabei ganz einfach. Die Datenbanktabelle muss beim CREATE TABLE oder ALTER TABLE mit einem speziellen Attribut ausgestattet werden. Damit werden zusätzliche Spalten hinzugefügt, damit man sich das entsprechende Anfangs- und Endedatum einfügen lässt. Die Spalten sind dabei auf "invisible" (unsichtbar) gesetzt. Danach kann man sofort mit den Abfragen loslegen. 

Was zur Aktivierung zu tun ist und wie die Abfragen aussehen, wird in folgendem Tipp an einem kleinen Beispiel demonstriert.
 

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.