Wie Rückblick Abfrage in Oracle 12c zu verwenden

Haben Sie schon einmal eine Zeitmaschine wollte? So etwas existiert. Oder doch? Die Oracle 12c Zeitmaschine bekannt als Rückblende können Sie, schneller Vorlauf zurückspulen und von Situationen mit Leichtigkeit zu erholen. Rückblende kann einschüchternd klingen, aber die Funktion ist einfach.

Ein Feature namens Flashback-Abfrage ist eine der einfachsten und leichtesten Varianten der Oracle Flashback-Technologie zu verwenden. Einfach ausgedrückt, ist es eine Tabelle an einem Punkt in der Vergangenheit abfragen können. Dies bedeutet, dass trotz aller Aktualisierungen, Einfügungen und Löschungen, die passiert haben, können Sie die Tabelle sehen, wie es auf den Zeitpunkt wählen Sie existierte.

Hier ist eine kurze Demo mit dem Beispiel-Schema, HR:

  1. Melden Sie sich bei SQL * Plus als HR Benutzer.

  2. Schauen Sie sich die Daten in Ihren Abteilungen Tabelle.

  3. Schränken Sie die Abfrage beide Ausgangs minimieren und machen die Demo offensichtlicher. Geben Sie den folgenden:

    Sie sollten etwas sehen:

    DEPARTMENT_ID department_name ------------- ------------------------------ 120 Treasury130 Firmen Tax140 Kontrolle und Credit150 Shareholder Services160 Benefits170 Manufacturing180 Construction190 Contracting200 Operations210 IT Support220 NOC230 IT Helpdesk240 Regierung Sales250 Einzelhandel Sales260 Recruiting270 Payroll16 Zeilen ausgewählt.
  4. Ändern Sie die Tabelle durch die Zeilen in der vorhergehenden Ausgabe ausgewählt zu entfernen. So entfernen Sie die Zeilen, geben Sie

    Sie sollten folgendes sehen:

    16 Zeilen gelöscht.
  5. Verpflichten Sie Ihre Änderungen durch Eingabe

    Sie sollten folgendes sehen:

    Commit abgeschlossen.
  6. Führen Sie die ursprüngliche Abfrage erneut.

    Sie sollten folgendes sehen:

    keine Zeilen ausgewählt

    Der nächste Schritt ist, wo Sie den Zauber der Flashback-Abfrage verwenden. Denken Sie an die Zeit, bevor der Lösch aufgetreten. In diesem Beispiel Fall war es fünf Stunden.

  7. Geben Sie etwas Ähnliches wie die folgenden, um die Daten zu sehen, wie es 5 Minuten gab es vor:

Sie sehen die Zeilen, wie sie in Schritt 2. Der Schlüssel bestand die AS OF TIMESTAMP-Klausel ist. siehe das Ziel der Zeitstempel, können Sie, dass das Beispiel verwendet Mathematik auf der SYSDATE Funktion. SYSDATE stellt die aktuelle Zeit, gerade jetzt.

Subtrahieren von 1 von SYSDATE bedeutet gestern. Das Beispiel subtrahiert den Bruchteil 1/288, das heißt 5 Minuten, von SYSDATE. Um diesen Anteil zu bekommen, verwendet das Beispiel die folgende Formel:

24 (Stunden in einem Tag) x 60 (Minuten und Stunden) = 1440 (Minuten) in einem Tag

So, 5 über 1440 gleich 1 ist über 288.

Sie können auch eine explizite Zeitstempel statt einer SYSDATE-Funktion verwenden. Beispielsweise:

wählen department_id, department_namefrom departmentsAS VON TIMESTAMP TO_DATE ('16 -Aug 2013 20.04.00 "," DD-MON-YYYY HH24: MI: SS '), wo manager_id ist Null-

Hier ist ein netter Trick. Angenommen, Sie versehentlich die Zeilen gelöscht und wollen sie in Ihre Tabelle einfügen zurück. Sie können Rückblick Abfrage verwenden, so etwas zu tun. Das wird sein viel schneller als eine RMAN Recovery zu einem Zeitpunkt zu tun.

So fügen Sie Ihre gelöschten Zeilen zurück in die Tabelle, geben Sie

lt; Einfügen in departmentsselect * von departmentsAS VON TIMESTAMP TO_DATE ('16 -Aug 2013 20.04.00 "," DD-MON-YYYY HH24: MI: SS '), wo manager_id ist Null->

Sie sollten folgendes sehen:

16 Zeilen erstellt.

Abfrage der Tabelle und, wenn Sie zufrieden sind, Ihre Änderungen.

Sie können nur so weit wie Ihre Einstellung für die Instanz Parameter UNDO_RETENTION zurückschlagen. Standardmäßig ist dieser Parameter auf 15 Minuten eingestellt (900 Sekunden). Wenn die Zeit, die Sie gehen wollen zurück zu ist weiter als Ihre UNDO_RETENTION, können Sie nicht in der Lage sein, Ihre Daten zu sehen und wird einen Fehler stattdessen erhalten.

Bevor Sie die vorherige Spitze nehmen und stellen Sie Ihre UNDO_RETENTION einen Monat im Wert von Zeit zu reflektieren, der Ansicht, dass dies Ihr UNDO Tabellen verursachen wird wachsen, weil es Bilder Ihrer alten Daten zu speichern hat. Sie sollten sorgfältig eine realistische UNDO_RETENTION Einstellung mit Platzverbrauch ausgleichen.

Menü